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