- 相關推薦
不同類型軟件工程師面試題集合
這是小編為大家整理的軟件工程師面試題目,里面包含有java、.net和百度的題目。
java軟件工程師面試題
1、EJB與JAVA BEAN的區(qū)別?
答:Java Bean 是可復用的組件,對Java Bean并沒有嚴格的規(guī)范,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由于Java Bean是被容器所創(chuàng)建(如Tomcat)的,所以Java Bean應具有一個無參的構造器,另外,通常Java Bean還要實現(xiàn)Serializable接口用于實現(xiàn)Bean的持久性。Java Bean實際上相當于微軟COM模型中的本地進程內(nèi)COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當于DCOM,即分布式組件。它是基于Java的遠程方法調(diào)用(RMI)技術的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創(chuàng)建和管理。客戶通過容器來訪問真正的EJB組件。
2、MVC的各個部分都有那些技術來實現(xiàn)?如何實現(xiàn)?
答:MVC是Model-View-Controller的簡寫。"Model" 代表的是應用的業(yè)務邏輯(通過JavaBean,EJB組件實現(xiàn)), "View" 是應用的表示面(由JSP頁面產(chǎn)生),"Controller" 是提供應用的處理過程控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現(xiàn)。這些組件可以進行交互和重用。
3、WEB SERVICE名詞解釋。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。
答:Web Service描述語言WSDL
SOAP即簡單對象訪問協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級協(xié)議。
UDDI 的目的是為電子商務建立標準;UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現(xiàn)標準規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web Service注冊,以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標準。
4、開發(fā)中都用到了那些設計模式?用在什么場合?
答:每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題,然后描述了該問題的解決方案的核心。通過這種方式,你可以無數(shù)次地使用那些已有的解決方案,無需在重復相同的工作。主要用到了MVC的設計模式。用來開發(fā)JSP/Servlet或者J2EE的相關應用。簡單工廠模式等。
5、CORBA是什么?用途是什么?
答:CORBA 標準是公共對象請求代理結構(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫為 OMG)標準化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯為聯(lián)編)和允許應用程序間互操作的協(xié)議。 其目的為:
用不同的程序設計語言書寫
在不同的進程中運行
為不同的操作系統(tǒng)開發(fā)
6、 如何給weblogic指定大小的內(nèi)存?
在啟動Weblogic的腳本中(位于所在Domian對應服務器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調(diào)整最小內(nèi)存為32M,最大200M
7、 如何設定的weblogic的熱啟動模式(開發(fā)模式)與產(chǎn)品發(fā)布模式?
可以在管理控制臺中修改對應服務器的啟動模式為開發(fā)或產(chǎn)品模式之一;蛘咝薷姆⻊盏膯游募蛘遚ommenv文件,增加set PRODUCTION_MODE=true。
8、 如何啟動時不需輸入用戶名與密碼?
修改服務啟動文件,增加 WLS_USER和WLS_PW項。也可以在boot.properties文件中增加加密過的用戶名和密碼.
9、 在weblogic管理制臺中對一個應用域(或者說是一個網(wǎng)站,Domain)進行jms及ejb或連接池等相關信息進行配置后,實際保存在什么文件中?
保存在此Domain的config.xml文件中,它是服務器的核心配置文件。
10、 說說weblogic中一個Domain的缺省目錄結構?比如要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏覽器上就可打入http://主機:端口號//helloword.jsp就可以看到運行結果了? 又比如這其中用到了一個自己寫的javaBean該如何辦?
Domain目錄\服務器目錄\applications,將應用目錄放在此目錄下將可以作為應用訪問,如果是Web應用,應用目錄需要滿足Web應用目錄要求,jsp文件可以直接放在應用目錄中,Javabean需要放在應用目錄的WEB-INF目錄的classes目錄中,設置服務器的缺省應用將可以實現(xiàn)在瀏覽器上無需輸入應用名。
.net軟件工程師面試題
一、不定項選擇
Question 1
以下敘述正確的是:
A. 接口中可以有虛方法。 B. 一個類可以實現(xiàn)多個接口。
C. 接口不能被實例化。 D. 接口中可以包含已實現(xiàn)的方法。
Question 2
以下描述錯誤的是()
1. 在C++中支持抽象類而在C#中不支持抽象類。
2. C++中可在頭文件中聲明類的成員而在CPP文件中定義類的成員,在C#中沒有頭文件并且在同一處聲明和定義類的成員。
3. 在C#中可使用 new 修飾符顯式隱藏從基類繼承的成員。
4. 在C#中要在派生類中重新定義基類的虛函數(shù)必須在前面加Override。
Question 3
聲明一個委托public delegate int myCallBack(int x); 則用該委托產(chǎn)生的回調(diào)方法的原型應該是
1. void myCallBack(int x)
2. int receive(int num)
3. string receive(int x)
4. 不確定的
Question 4
下列描述錯誤的是()
a) 類不可以多重繼承而接口可以;
b) 抽象類自身可以定義成員而接口不可以;
c) 抽象類和接口都不能被實例化;
d) 一個類可以有多個基類和多個基接口;
Question 5
下列關于構造函數(shù)的描述正確的是()
a) 構造函數(shù)可以聲明返回類型。
b) 構造函數(shù)不可以用private修飾
c) 構造函數(shù)必須與類名相同
d) 構造函數(shù)不能帶參數(shù)
Question 6
接口是一種引用類型,在接口中可以聲明( ),但不可以聲明公有的域或私有的成員變量。
a) 方法、屬性、索引器和事件;
b) 方法、屬性信息、屬性;
c) 索引器和字段;
d) 事件和字段;
二.問答題
1. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。
private:私有訪問,它只能在聲明自身的類中進行訪問。
protected:表示受保護的訪問,該類內(nèi)部和繼承類中可以訪問
.public :表示公共訪問,在代碼任何位置都可對其進行訪問
internal表示內(nèi)部成員,在同一命名空間內(nèi)可以訪問。
2. C#中的委托是什么?事件是不是一種委托?
委托是指具有相同屬性(也稱具有相同的函數(shù)簽名:返回類型相同,參數(shù)類型、參數(shù)順序及參數(shù)個數(shù)相同)的函數(shù)或方法的抽象,關鍵字為delegate。主要用途是三個:1)函數(shù)回調(diào);2)傳遞方法;3)事件機制
事件就是一個狹義的委托,也就是事件是一個用于事件驅(qū)動模型的專用委托,對事件的聲明, 實際是聲明一個私有的委托變量,對委托變量進行封裝,即委托變量加上event關鍵字后,不管其前面的訪問修飾符是public還是private,編譯器都會將其編譯為private。
委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數(shù)來進行傳遞,這種將方法動態(tài)地賦給參數(shù)的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴展性。以委托為參數(shù)的函數(shù)具有一定的通用性。
使用委托可以將多個方法綁定到同一個委托變量,當調(diào)用此變量時(這里用“調(diào)用”這個詞,是因為此變量代表一個方法),可以依次調(diào)用所有綁定的方法。
3. abstract 可以和 virtual 一起使用嗎?可以和 override 一起使用嗎?
不可以一起使用,但是可以和override一起使用。
4. 請敘述屬性與索引器的區(qū)別。
屬性:它是存取類的字段,索引器:Indexer它是特殊的屬性,用它可以使用戶像訪問數(shù)組一樣訪問類的成員。
5. 請詳述在dotnet中類(class)與結構(struct)的異同。
類class可以進行實例化,它是引用類型,內(nèi)存分配在棧中,效率高,它有默認的構造函數(shù),有析構函數(shù)可以使用 abstract 和 sealed, protected 修飾符。要用new進行初始化,
結構它是屬于值類型,內(nèi)存分配在堆中,效率低,它沒有默認的構造函數(shù),但是可以添加構造函數(shù),沒有析構函數(shù)沒有 abstract 和 sealed(因為不能繼承) 不能有protected 修飾符 可以不使用new 初始化,但是可以在結構中初始化實例字段。
百度軟件工程師面試題
1、找到滿足條件的數(shù)組
給定函數(shù)d(n)=n+n的各位之和,n為正整數(shù),如d(78)=78+7+8=93。這樣這個函數(shù)可以看成一個生成器,如93可以看成由78生成。
定義數(shù)A:數(shù)A找不到一個數(shù)B可以由d(B)=A,即A不能由其他數(shù)生成。現(xiàn)在要寫程序,找出1至10000里的所有符合數(shù)A定義的數(shù)。
回答:
申請一個長度為10000的bool數(shù)組,每個元素代表對應的值是否可以有其它數(shù)生成。開始時將數(shù)組中的值都初始化為false。
由于大于10000的數(shù)的生成數(shù)必定大于10000,所以我們只需遍歷1到10000中的數(shù),計算生成數(shù),并將bool數(shù)組中對應的值設置為true,表示這個數(shù)可以有其它數(shù)生成。
最后bool數(shù)組中值為false的位置對應的整數(shù)就是不能由其它數(shù)生成的。
2、一個大的含有50M個URL的記錄,一個小的含有500個URL的記錄,找出兩個記錄里相同的URL。
回答:
首先使用包含500個url的文件創(chuàng)建一個hash_set。
然后遍歷50M的url記錄,如果url在hash_set中,則輸出此url并從hash_set中刪除這個url。
所有輸出的url就是兩個記錄里相同的url。
3、海量日志數(shù)據(jù),提取出某日訪問百度次數(shù)最多的那個IP。
回答:
IP地址最多有2^32=4G種取值可能,所以不能完全加載到內(nèi)存中。
可以考慮分而治之的策略,按照IP地址的hash(IP)%1024值,將海量日志存儲到1024個小文件中。每個小文件最多包含4M個IP地址。
對于每個小文件,可以構建一個IP作為key,出現(xiàn)次數(shù)作為value的hash_map,并記錄當前出現(xiàn)次數(shù)最多的1個IP地址。
有了1024個小文件中的出現(xiàn)次數(shù)最多的IP,我們就可以輕松得到總體上出現(xiàn)次數(shù)最多的IP。
4、有10個文件,每個文件1G,每個文件的每一行都存放的是用戶的query,每個文件的query都可能重復。如何按照query的頻度排序?
回答:
1)讀取10個文件,按照hash(query)%10的結果將query寫到對應的文件中。這樣我們就有了10個大小約為1G的文件。任意一個query只會出現(xiàn)在某個文件中。
2)對于1)中獲得的10個文件,分別進行如下操作
-利用hash_map(query,query_count)來統(tǒng)計每個query出現(xiàn)的次數(shù)。
-利用堆排序算法對query按照出現(xiàn)次數(shù)進行排序。
-將排序好的query輸出的文件中。
這樣我們就獲得了10個文件,每個文件中都是按頻率排序好的query。
3)對2)中獲得的10個文件進行歸并排序,并將最終結果輸出到文件中。
5、螞蟻爬桿問題
有一根27厘米長的細木桿,在第3厘米,7厘米,11厘米,17厘米,23厘米這五個位置上各有一只螞蟻,木桿很細,不能同時通過兩只螞蟻,開始時,螞蟻的頭朝向左還是右是任意的,他們只會朝前走或掉頭,但不會后退,當兩只螞蟻相遇后,螞蟻會同時掉頭朝反方向走,假設螞蟻們每秒鐘可以走1厘米的距離。求所有螞蟻都離開木桿的最小時間和最大時間。
答案:
兩只螞蟻相遇后,各自掉頭朝相反方向走。如果我們不考慮每個螞蟻的具體身份,這和兩只螞蟻相遇后,打個招呼繼續(xù)向前走沒有什么區(qū)別。
所有螞蟻都離開木桿的最小時間為
max(min(3,27-3),min(7,27-7), min(11,27-11), min(17,27-17),min(23,27-23))=11
所有螞蟻都離開木桿的最大時間為
max(max(3,27-3),max(7,27-7), max(11,27-11), max(17,27-17),max(23,27-23))=24
6、當在瀏覽器中輸入一個url后回車,后臺發(fā)生了什么?比如輸入url后,你看到了百度的首頁,那么這一切是如何發(fā)生的呢?
回答:
簡單來說有以下步驟:
1、查找域名對應的IP地址。這一步會依次查找瀏覽器緩存,系統(tǒng)緩存,路由器緩存,ISPDNS緩存,根域名服務器。
2、向IP對應的服務器發(fā)送請求。
3、服務器響應請求,發(fā)回網(wǎng)頁內(nèi)容。
4、瀏覽器解析網(wǎng)頁內(nèi)容。
當然,由于網(wǎng)頁可能有重定向,或者嵌入了圖片,AJAX,其它子網(wǎng)頁等等,這4個步驟可能反復進行多次才能將最終頁面展示給用戶。
【不同類型軟件工程師面試題】相關文章:
演講的不同類型03-26
不同的心理類型有哪些05-26
嵌入式軟件工程師面試題06-23
軟件測試工程師面試題及答案分享08-08
編輯類職位面試題類型11-06
生活中不同類型的幽默04-22
與不同類型的上司的溝通技巧12-21
不同類型的員工如何管理02-27
軟件測試面試題11-06