軟件工程師面試題及參考答案
軟件工程師面試題及參考答案
面試題的完成情況會間接影響軟件工程師的面試成功幾率。學(xué)習(xí)啦小編整理了一些軟件工程師面試題及參考答案,有興趣的親可以來閱讀一下!
軟件工程師面試題及參考答案(一)
1, Android dvm的進(jìn)程和Linux的進(jìn)程, 應(yīng)用程序的進(jìn)程是否為同一個(gè)概念 。
解答:DVM指dalivk的虛擬機(jī)。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。而每一個(gè)DVM都是在Linux 中的一個(gè)進(jìn)程,所以說可以認(rèn)為是同一個(gè)概念。 2, sim卡的EF 文件有何作用
解答:sim卡的文件系統(tǒng)有自己規(guī)范,主要是為了和手機(jī)通訊,sim本 身可以有自己的操作系統(tǒng)cos,EF(Eiementary File)基本文件就是作存儲并和手機(jī)通訊用的
3,嵌入式操作系統(tǒng)內(nèi)存管理有哪幾種,各有何特性
解答:頁式,段式,段頁,用到了MMU(內(nèi)存管理單元),虛擬空間等技術(shù)
4,什么是嵌入式實(shí)時(shí)操作系統(tǒng), Android 操作系統(tǒng)屬于實(shí)時(shí)操作系統(tǒng)嗎? 解答:嵌入式實(shí)時(shí)操作系統(tǒng)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之作出快速響應(yīng),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的嵌入式操作系統(tǒng)。主要用于工業(yè)控制、軍事設(shè)備、航空航天等領(lǐng)域?qū)ο到y(tǒng)的響應(yīng)時(shí)間有苛刻的要求,這就需要使用實(shí)時(shí)系統(tǒng)。又可分為軟實(shí)時(shí)和硬實(shí)時(shí)兩種,而android是基于linux內(nèi)核的,因此屬于軟實(shí)時(shí)。
5,一條最長的短信息約占多少byte(字節(jié))?
解答:中文70(包括標(biāo)點(diǎn)),英文160,160個(gè)字節(jié)。
6,android中的動畫有哪幾類,它們的特點(diǎn)和區(qū)別是什么?
解答:兩種,
Tween動畫、這種實(shí)現(xiàn)方式可以使視圖組件移動、放大、縮小以及產(chǎn)
生透明度的變化;
Frame動畫。傳統(tǒng)的動畫方法,通過順序的播放排列好的圖片來實(shí)現(xiàn),類似電影。
7、handler機(jī)制的原理
andriod提供了 Handler 和 Looper 來滿足線程間的通信。當(dāng)Android
系統(tǒng)啟動時(shí),就創(chuàng)建了一個(gè)Looper與MessageQueue對象,并且與前線程相綁定.當(dāng)在主線程使用Handler并創(chuàng)建該對象時(shí),他會獲得該Looper。Handler對象發(fā)送消息有兩種方式:sendMessage... / Psot...但是最終調(diào)用的都是sendMessageAtTime方法,該方法主要作用有兩個(gè):指定目標(biāo)Handler對象把消息放入到消息隊(duì)列當(dāng)中Looper中使用loop方法用于不斷的循環(huán)監(jiān)聽消息隊(duì)列,看源碼可知,監(jiān)聽消息隊(duì)列并不是另外開一個(gè)線程來實(shí)現(xiàn),loop方法主要是,對消息進(jìn)行分發(fā),最終交給目標(biāo)Handler并由HandleMessage方法最終處理.
8、說說mvc模式的原理,它在android中的運(yùn)用
MVC(Model_view_contraller)”模型_視圖_控制器”。 MVC應(yīng)用程序
總是由這三個(gè)部分組成。Event(事件)會導(dǎo)致Controller來改變Model或View,或者同時(shí)改變兩者。只要 Controller改變了Models的數(shù)據(jù)或者屬性,所有依賴的View都會自動更新。類似的,只要Controller改變了View,View會從潛在的Model中獲取數(shù)據(jù)來刷新自己。View重繪(刷新)和內(nèi)存泄露的的問題
1. View的刷新:在需要刷新的地方,使用handle.sendmessage發(fā)送信息,然后在handle的getmessage里面執(zhí)行invaliate或者postinvaliate.
2. GC內(nèi)存泄露出現(xiàn)情況:
1.數(shù)據(jù)庫的cursor沒有關(guān)閉
2.構(gòu)造adapter時(shí),沒有使用緩存contentview衍生listview的優(yōu)化問題-----減少創(chuàng)建view的對象,充分使用contentview,可以使用一靜態(tài)類來優(yōu)化處理getview的過程/
3.Bitmap對象不使用時(shí)采用recycle()釋放內(nèi)存
4.activity中的對象的生命周期大于activity
調(diào)試方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size]
還有其他問題,大家歡迎提出阿,可以是整體架構(gòu)的,還有這個(gè)Hal層.
軟件工程師面試題及參考答案(二)
你對MVC的理解,MVC有什么優(yōu)缺點(diǎn)?結(jié)合Struts,說明在一個(gè)Web應(yīng)用如何去使用?
答:
MVC設(shè)計(jì)模式(應(yīng)用觀察者模式的框架模式)
M: Model(Business process layer),模型,操作數(shù)據(jù)的業(yè)務(wù)處理層,并獨(dú)立于表現(xiàn)層(Independent of presentation)。
V: View(Presentation layer),視圖,通過客戶端數(shù)據(jù)類型顯示數(shù)據(jù),并回顯模型層的執(zhí)行結(jié)果。 C: Controller(Control layer),控制器,也就是視圖層和模型層橋梁,控制數(shù)據(jù)的流向,接受視圖層發(fā)出的事件,并重繪視圖
MVC框架的一種實(shí)現(xiàn)模型
模型二(Servlet-centric):
JSP+Servlet+JavaBean,以控制為核心,JSP只負(fù)責(zé)顯示和收集數(shù)據(jù),Sevlet,連接視圖和模型,將視圖層數(shù)據(jù),發(fā)送給模型層,JavaBean,分為業(yè)務(wù)類和數(shù)據(jù)實(shí)體,業(yè)務(wù)類處理業(yè)務(wù)數(shù)據(jù),數(shù)據(jù)實(shí)體,承載數(shù)據(jù),基本上大多數(shù)的項(xiàng)目都是使用這種MVC的實(shí)現(xiàn)模式。
StrutsMVC框架(Web application frameworks)
Struts是使用MVC的實(shí)現(xiàn)模式二來實(shí)現(xiàn)的,也就是以控制器為核心。
Struts提供了一些組件使用MVC開發(fā)應(yīng)用程序:
Model:Struts沒有提供model類。這個(gè)商業(yè)邏輯必須由Web應(yīng)用程序的開發(fā)者以JavaBean或EJB的形式提供
View:Struts提供了action form創(chuàng)建form bean, 用于在controller和view間傳輸數(shù)據(jù)。此外,Struts提供了自定義JSP標(biāo)簽庫,輔助開發(fā)者用JSP創(chuàng)建交互式的以表單為基礎(chǔ)的應(yīng)用程序,應(yīng)用程序資源文件保留了一些文本常量和錯(cuò)誤消息,可轉(zhuǎn)變?yōu)槠渌Z言,可用于JSP中。
Controller:Struts提供了一個(gè)核心的控制器ActionServlet,通過這個(gè)核心的控制器來調(diào)用其他用戶注冊了的自定義的控制器Action,自定義Action需要符合Struts的自定義Action規(guī)范,還需要在struts-config.xml的特定配置文件中進(jìn)行配置,接收J(rèn)SP輸入字段形成Action form,然后調(diào)用一個(gè)Action控制器。Action控制器中提供了model的邏輯接口。
軟件工程師面試題及參考答案(三)
什么是WebService?
答:
WebService是一個(gè)SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語言,不依賴于平臺,可以實(shí)現(xiàn)不同的語言間的相互調(diào)用,通過Internet進(jìn)行基于Http協(xié)議的網(wǎng)絡(luò)應(yīng)用間的交互。
WebService實(shí)現(xiàn)不同語言間的調(diào)用,是依托于一個(gè)標(biāo)準(zhǔn),webservice是需要遵守WSDL(web服務(wù)定義語言)/SOAP(簡單請求協(xié)議)規(guī)范的。
WebService=WSDL+SOAP+UDDI(webservice的注冊)
Soap是由Soap的part和0個(gè)或多個(gè)附件組成,一般只有part,在part中有Envelope和Body。
Web Service是通過提供標(biāo)準(zhǔn)的協(xié)議和接口,可以讓不同的程序集成的一種SOA架構(gòu)。
Web Service的優(yōu)點(diǎn)
(1) 可以讓異構(gòu)的程序相互訪問(跨平臺)
(2) 松耦合
(3) 基于標(biāo)準(zhǔn)協(xié)議(通用語言,允許其他程序訪問)
Web Service的基本原理
(1) Service Provider采用WSDL描述服務(wù)
(2) Service Provider 采用UDDI將服務(wù)的描述文件發(fā)布到UDDI服務(wù)器(Register server)
(3) Service Requestor在UDDI服務(wù)器上查詢并 獲取WSDL文件
(4) Service requestor將請求綁定到SOAP,并訪問相應(yīng)的服務(wù)。
軟件工程師面試題及參考答案(四)
什么是中間件?
中間件就是程序中可織入的,可重用的,與業(yè)務(wù)邏輯無關(guān)的各種組件。
中間件(middleware)是基礎(chǔ)軟件的一大類,屬于可復(fù)用軟件的范疇。顧名思義,中間件處于操作系統(tǒng)軟件與用戶的應(yīng)用軟件的中間。中間件在操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫之上,應(yīng)用軟件的下層,總的作用是為處于自己上層的應(yīng)用軟件提供運(yùn)行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復(fù)雜的應(yīng)用軟件。
在眾多關(guān)于中間件的定義中,比較普遍被接受的是IDC表述的:中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶機(jī)服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通信。
分類:數(shù)據(jù)訪問中間件,遠(yuǎn)程調(diào)用中間件,消息中間件,交易中間件,對象中間件。 舉例:
1,RMI(Remote Method Invocations, 遠(yuǎn)程調(diào)用)
2,Load Balancing(負(fù)載均衡,將訪問負(fù)荷分散到各個(gè)服務(wù)器中)
3,Transparent Fail-over(透明的故障切換)
4,Clustering(集群,用多個(gè)小的服務(wù)器代替大型機(jī))
5,Back-end-Integration(后端集成,用現(xiàn)有的、新開發(fā)的系統(tǒng)如何去集成遺留的系統(tǒng)) 6,Transaction事務(wù)(全局/局部)全局事務(wù)(分布式事務(wù))局部事務(wù)(在同一數(shù)據(jù)庫聯(lián)接內(nèi)的事務(wù))
7,Dynamic Redeployment(動態(tài)重新部署,在不停止原系統(tǒng)的情況下,部署新的系統(tǒng)) 8,System Management(系統(tǒng)管理)
9,Threading(多線程處理)
10,Message-oriented Middleware面向消息的中間件(異步的調(diào)用編程)
11,Component Life Cycle(組件的生命周期管理)
12,Resource pooling(資源池)
13,Security(安全)
14,Caching(緩存)
看過“軟件工程師面試題及參考答案”的人還看了: