android面試
⑴ android工程師面試一般會問哪些問題
1. Android經驗
如果不是校招,Android經驗是必須的,我比較喜歡問一些基礎概念與技術原理,比如Activity、View、Window的理解,各LaunchMode的使用場景,View的繪制流程,Touch事件機制,Android動畫的原理,Handler, Looper的理解,Android跨進程通訊的方式,Binder的理解,Android Mashup設計的理解等等。
2. Java水平
基本上就是Effective Java那本書里提到的東西,如果你背完那本書里的問題,並且對答如流,沒問題,就要你這樣的。其實也會考察關於final用法,反射原理,註解原理,java編譯過程,GC等一些常見問題。
3. IT基礎知識
其實就是計算機科班學生學校里學到的一些東西,在校招時這塊是重點,社招會放寬,但一些基本的常識是要有的,比如不少人都不知道http的get post有啥區別,https的那個s是什麼意思,講不清進程與線程的概念,不知道二分演算法是個啥東西。這些簡單問題的篩選,可以過濾一些所謂野路子的程序員,是不是科班出身不重要,搞這行就得對一些基本常識有概念,不然以後怎麼愉快的交流呢?
4. 代碼質量的認識
我們需要的是一個對代碼味道有感覺的人,關於這點,看下《Clean Code》就夠了,面試中這點其實不好考察,可以讓他聊一聊對代碼質量的認識,雖然不能排除對方誇誇其談,至少想法不多,只能提到命名風格這一點的人是不符合要求的,也可以在寫Code的環節中觀察。
5. 技術視野
比如對Android開發新技術的了解與學習,對其它流行技術領域的了解,這其實與我剛才提到的技術廣度的考察有關,就我面試過程中,發現很多非互聯網行業的從業人員,因為公司各種操蛋規定與公司技術氛圍的原因,技術視野相當狹窄。
我個人對這點深有體會,2011年我還在傳統行業從事軟體研發,當時的公司因為擔心技術信息泄露,不讓上網,相當封閉,我個人雖然自認為已在那個行業內做到業內專家的級別,但總感覺哪裡不對,有一天我很興奮的打算跟身邊同事聊一聊Android的時候,發現他們居然都不知Android為何物?2011年啊同志們,當時的震驚無法言表,深切感覺到需要作出改變了,毅然放棄多年行業積累,轉戰移動互聯網,直到現在。時至今日,多年前的小夥伴也有很多混出了名黨,開始走向人生巔峰,我也從來沒有後悔當初做出的選擇。
6. 技術想像力
一個優秀的技術人,如果知識的深度與廣度足夠,知識已成體系,那麼他對於一些從未接觸過的領域,也是可以做出足夠合理的想像與判斷,面試過程中如果問到一些領域候選人沒有涉獵,這時候一般不用過多糾纏,但如果你想借這個問題考察下他的技術想像力,可以深入下去,比如問他:「你覺得這個東西應該是什麼原理呢?」,「這個酷炫的控制項,如果要你來做,你會怎麼實現?」。在這方面表現出色的同學無疑是有深厚基礎與足夠廣度的人。
⑵ 跪求一篇android開發工程師面試時的自我介紹範文,那些亂回復的以及告訴我怎麼說的請不要回答!我
我剛去面試了。人家經理根本不跟我聊什麼經歷以及語言能力。他直接給我一個題目,讓我完成。我的題目是從他給定的網站上獲取數據,並用Jason解析,然後把圖片顯示出來。
⑶ android開發怎麼樣面試能詳到8000
無論大公司還是小公司,之所以在如何招聘到真正有能力的
前端工程師方面會遇到同樣的問題,就是因為負責招聘的那些人不知道自己公司需要什麼樣的人,結果問問題時也問不到點子上。經過這幾年在行業里的摸索,我總
結出了自己的一套很有效的面試前端工程的方法。
有的應聘者說我不好對付,但留給他們這樣的印象也並非我所願。我覺得之所以他們說我不好對付,主要是因為我問他們問題時問得太細了。以前我曾專門寫過一些
東西,告訴應聘者怎麼才能通過我的面試(Surviving an interview with me)以及優秀的前面工程師應該具備什麼樣的素質(What
makes a good front end
engineer?),而我的面試可以說完全是按照那兩篇文章的標准進行的。我不會問一些特別偏門的問題,也不認為出幾道邏輯題就能考出人的真實水平。我
唯一的想法就是確定你能否勝任我們要招的這個職位。為此,我需要簡單地考察如下幾個方面。
基本知識
我們生活在互聯網時代,你想知道的任何事情幾乎都能在15分鍾內找到相關信息。可是,能找到信息並不等於你會使用它。我認為所有前端工程師至少都應
該掌握某些基本的知識,才能有效地完成自己的工作。如果一遇到問題,就停下工作上網四處搜索解決方案,怎麼可能保證按期完成工作呢?聽聽,還有誰在說「我
不知道,但我可以上網搜到。」請這些同學把手舉起來,讓大家認識一下(immediately raises a flag for
me.)。下面我列出一些基本的知識點,這些都是我認為一名前端工程師(無論工作年頭長短)在沒有任何外來幫助的情況應該知道的。
DOM結構——兩個節點之間可能存在哪些關系以及如何在節點之間任意移動。
DOM操作——怎樣添加、移除、移動、復制、創建和查找節點。
事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。
XMLHttpRequest——這是什麼、怎樣完整地執行一次GET請求、怎樣檢測錯誤。
嚴格模式與混雜模式——如何觸發這兩種模式,區分它們有何意義。
盒模型——外邊距、內邊距和邊框之間的關系,IE 8以下版本的瀏覽器中的盒模型有什麼不同。
塊級元素與行內元素——怎麼用CSS控制它們、它們怎樣影響周圍的元素以及你覺得應該如何定義它們的樣式。
浮動元素——怎麼使用它們、它們有什麼問題以及怎麼解決這些問題。
HTML與XHTML——二者有什麼區別,你覺得應該使用哪一個並說出理由。
JSON——它是什麼、為什麼應該使用它、到底該怎麼使用它,說出實現細節來。
重申一下,上述這些知識點都應該是你應該「想都不用想」的東西。我一開始問的所有問題都是想摸清你對所有這些領域知識的掌握程度。雖然上面列出的這些知識點並沒有面面俱到,但我覺得你至少應該掌握這些,才有可能跟我坐到一間辦公室里來。
少量提問
我非常贊同面試者問的問題越少越好。反復問應聘者各種問題既不公平,也很無聊。我在任何一次面試中,通常只問三個大問題,但每個問題又會涉及我所能想到的多個方面。回答每個大問題一般要經過幾個步驟,這樣我就可以在每個步驟中穿插著問一些小問題。比如說:
現在有一個正顯示著Yahoo!股票價格的頁面。頁面上有一個按鈕,你可以單擊它來刷新價格,但不會重新載入頁面。請你描述一下實現這個功能的過程,假設伺服器會負責准備好正確的股票價格數據。
這個問題牽扯到一組我想要考察的基本知識點:DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價格的方式,或者
讓你在頁面中顯示其他信息,就可以把更多的知識點包括進來。對於經驗比較豐富應聘者,我也可以自如地擴展要考察的知識范圍,最簡單像JOSN與XML的區
別、安全問題、容量問題,等等。
我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態的代碼,你就當頁面中沒有包含任何庫。你說你對哪個庫了解多少多少,但我不能把
關於庫的知識作為評判能力的因素,因為庫是會隨時間變化的。我需要的是真正理解庫背後的機制,特別是能夠徒手寫出一個自己的庫的人。
解決問題
做為一名前端工程師,最值得高興的事莫過於解決同一個問題會有很多種不同的方法,而你要做的就是找出最合適的方法來。我在提問的時候,經常會在應聘
者解釋完一種方法後問他們還有沒有第二種方法。此時我會跟他們說,假設你的這個方法由於種種原因被否決了,那麼你還能不能給出另一種方法。這樣做可以達到
兩個目的。
首先,可以測試出他們是否在毫無意義地復述書本中的東西。不能不承認,某些人確實有過目不忘的天賦,聽他們在那裡滔滔不絕地講,你會覺得他們什麼都
明白。可是,只要一跟這些人談到怎麼查找方案無效的原因,以及能否拿出一個新方案來,他們往往就傻眼了。這時候,如果我聽到「我不明白這個方案為什麼不夠
好」之類的反問,心裡立刻就明白我的問題已經超出了他們的能力范圍,而他們只是想拿自己死記硬背的結論來矇混過關。
其次,可以測試出他們已經掌握的(還是那句話,「想都不用想」)瀏覽器技術知識。如果他們對瀏覽器平台的核心知識有較好的理解,想出解決同一問題的不同方案根本沒有那麼難。
對一名前端工程師來說,這絕對是最重要的能力。前端工程師在工作中遇到本該如此卻並未如此的難題(說你啦,IE6),應該說是一件很平常的事。一個方案無效就無計可施的人,做不了前端工程師。
考核應聘者解決問題能力的另一層原因,與我的個人喜好有關。在搞清楚應聘者知道什麼不知道什麼之後,我就會想著問一個他們知識領域之外的問題。這樣
做的目的,就是想看看他們怎樣運用已有的知識解決新問題。在解決問題的每一步,我也准備了一些提示,以防有人會卡殼打艮(在我面前15分鍾一言不發,對我
評價這個人毫無幫助)。我真正感興趣的,是他們能夠從上一步前進到下一步。我希望看到一個人就在我眼前學到新知識。
注意:所有問題都與瀏覽器技術相關。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術問題的能力。在我看來,這無異於讓素描大師畫肖像(或者讓劉翔跟博爾特同場競技),沒有意義,也得不到任何有價值的信息。
有激情
要成為一名優秀的前端工程師,最重要的莫過於對自己做的事要有激情。我們技能都不是從學校中或者從研討會上學來的,因此前端工程師必須具備自學能
力。瀏覽器技術的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時俱進。我雖然不能強迫誰必須多看博客、不斷學習,但想應聘前端工程師的人恐
怕還是必須這么做的。
你怎麼知道誰對這種工作有沒有激情?實際上非常簡單。我只問一個簡單的問題:「目前你對什麼Web技術最感興趣?」這個問題永遠不會過期,而且也幾
乎不可能出錯……除非你答不上來。就眼下來說,我希望你對這個問題給出的技術中包括WebSocket、HTML、WebGL、客戶端資料庫,等等。只有
對Web開發充滿激情的人,才會堅持不懈地學習新知識、掌握新技能;這些人才是我真正想要的。當然,我會讓他們詳細解釋自己提到的技術,以保證他們不是隨
口說了幾個時髦的新詞彙。
最後一點
計算機科學或者Web設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難。可
是,如果等到正式上班以後,還得從頭學習基本技能,那種難度是不可同日而語的。另外,高級前端工程師與一般工程師相比,肯定需要掌握更多的技能。而面試幾
乎沒有經驗大學畢業生,同樣也會有一套完全不同的程序。我在這篇文章里列出來的都是一些最基本的東西。
對於那些還沒有多少面試經驗的人,我總是喜歡告訴他們,面試完了只要問自己一個問題就行:你想以後跟這個人在一起共事嗎?如果不管為什麼,回答是不,那就是不。
⑷ 安卓面試需要了解什麼
有android 的組件方面的知識了,例如Service是一些在一個新的線程中嗎,Service的啟動方式有幾種,他們之間內的區別是什容么,介紹一下Activity的生命周期。Activity的實例化策略,還有使用Intent好處...等等很多的,不能一 一列舉,這個需要你有比較不錯的基礎知識。不過還好我們在android培訓的時候李剛老師(瘋狂java系列的作者)都有介紹。
⑸ android面試官如何提問
你運氣了,正好我在寫稿,不僅有提問,還有分析。你自己看吧。
三、常見面試問題的預習。
面試說白了很簡單,無非是考察求職者是否符合崗位需求。一般而言,面試往往從自我介紹、個人經歷、掌握技能、離職原因這四個方面著手,通過一系列問題,考察應聘者的知識、技能和態度。有條件者,可找從事過招聘工作,或有一定面試經驗的朋友,就一些常見面試問題,模擬面試。在朋友面前丟臉,總好過面試時丟人。而且面試前有所准備,也有助於消除緊張,培養自信,從而獲得成功。
這里要尤其提醒兩點:第一、自我介紹往往是面試的第一個問題,非常重要,准備充分則事半功倍。第二、回答問題時應謹記言之有物,切實有據,彬彬有禮,亢卑有度,不要忘乎所以,誇誇其談。
l 「招」亦有「道」。
武俠小說泰斗金庸筆下最厲害的高手莫過於大俠獨孤求敗。他從「學招」到「創招」,最後領悟「招」的真諦,達到「無招勝有招」的境界,經過了大量的理論學習(拜師)和實踐鍛煉(打鬥)。求職者要達到「無招」的境界,同樣需要理論學習(求職技巧)和實踐鍛煉(不斷完善簡歷,積極參加面試)。
初涉塵世的年輕人,怕的就是不知企業會如何「出招」,更怕的是自己不知如何「接招」。這是因為缺乏實踐鍛煉。做過「功課」的求職者,卻怕企業「變招」。這是因為學「招」鑽了牛角尖,忘了招是死的,人是活的。
「招」亦有「道」,任何「招」都有其遵循的原理。因此要想把「招」練好,學「招」,更要學「道」。獨孤求敗將「道」化為「獨孤九劍」,求職的「道」則可歸納為一個中心,兩個基本點。即以應聘職位為中心,簡練一點,聰明一點。
我們知道,人的行為是利益驅動的,企業也不例外。無論是篩選簡歷,還是面試提問,企業的招聘都圍繞著崗位的職責和要求來進行。那麼,應聘的時候,求職者同樣要圍繞崗位的職責和要求來闡述。前面「解析企業招聘密碼」單元里,我們介紹了分析崗位信息的方法。在此基礎上,結合自己應聘優劣勢,揚長避短,確定應聘方案,就是「創招」的過程。所創「招數」越貼合崗位需求,企業就越容易「中招」。
簡練是有效溝通的基本原則之一。簡歷不是小說,面試不是演講。找個朋友,請他十秒鍾看完你的簡歷,聽你一分鍾的自我介紹。如果他能復述出其中的競聘優勢,那麼你的闡述才當得起簡練二字。有的求職者總擔心敘述中會遺漏企業感興趣的內容,從而事無巨細,尾大不掉。須知太多重點就變成了沒有重點。冗餘的原因,還是未能吃透企業的崗位需求。所謂大道至簡,要言不繁。你有見過三分鍾長的廣告嗎?事實上,大多數廣告都不到三十秒,而你能記住的,最多隻有其中一兩句話而已。同樣道理,只要吃透崗位需求,打動企業的,也就一兩句話的事情。
聰明對缺乏經驗的求職者而言,比較抽象。如何聰明?其實還是回到「中心」。招聘過程中,企業任何問題,任何抉擇,都是以崗位需求為依據。有位缺乏工作經歷的求職者,在應聘創意設計助理時寄了一張紙尿褲,上面除了聯系方式,只有一句話:「在這個行業里,我只是個嬰兒」。用紙尿褲來暗喻對知識的吸收能力,同時彰顯創意。這位求職者的成功,首先是建立在研究崗位需求基礎上的,即明確企業對創意的需求遠超軟體應用能力。其次就是真正動了腦筋,聰明地用事實來說話。有沒有創意,簡歷設計就能證明,毋庸置疑。在簡歷和面試中常用類似技巧。比如在面試中,聰明的求職者常借工作感悟和體會證明自己的工作能力。
⑹ Android面試注意事項
1.基礎在於Activity的生命周期,必須熟悉onResume onNewIntent onDestroy onFinish啊什麼東西的發生條件 時間順序專
2.控制項什麼的不會問 太弱智了屬
3.網路交互 WebService方式和基本HttpRequest方式,可能問到Socket長連接這個難
4.框架級別,對Android設計的整體框架認識,主要2點,1:對跳轉的集中管理 2:對所有界面的集中管理
後者可以都繼承一個baseview 在baseview里記錄所有打開的view為一個集合以便管理
前者參考非同步的方式把所有任務跳轉請求等都發task讓後台排隊解決,解決後通過消息和Handle刷新頁面
5.進階知識,我搞了半年多了老手了才開始研究這些,比如現在正在研究的PN推送等,這個實時的推送用處很廣,比如實時聊天或實時消息播報或廣告推送,這個代表你的水平高度是要薪資的籌碼
注意的嘛,對整體框架一定要有好的認識,設計一個合理的框架去實現功能非常重要
還有如果你告訴別人你懂後台,可以做或者協調後台服務端完成功能那會非常好
⑺ 面試android的時候面試官提問"對網路通信協議熟悉嗎對socket和http了解嗎能解釋下嗎",跪求幫助
我學網路專業,對網路通信協議還是比較熟悉的,「先講下7層協議,然後從7層協議中引出socket和http」
套接字(socket)是通信的基石,是支持TCP/IP協議的網路通信的基本操作單元。它是網路通信過程中端點的抽象表示,包含進行網路通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議埠,遠地主機的IP地址,遠地進程的協議埠。
應用層通過傳輸層進行數據通信時,TCP會遇到同時為多個應用程序進程提供並發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個
TCP協議埠傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了套接字(Socket)介面。應用層可以和傳輸層通過Socket介面,區分來自不同應用程序進程或網路連接的通信,實現數據傳輸的並發服務。
建立Socket連接至少需要一對套接字,其中一個運行於客戶端,稱為ClientSocket ,另一個運行於伺服器端,稱為ServerSocket 。
套接字之間的連接過程分為三個步驟:伺服器監聽,客戶端請求,連接確認。
伺服器監聽:伺服器端套接字並不定位具體的客戶端套接字,而是處於等待連接的狀態,實時監控網路狀態,等待客戶端的連接請求。
客戶端請求:指客戶端的套接字提出連接請求,要連接的目標是伺服器端的套接字。為此,客戶端的套接字必須首先描述它要連接的伺服器的套接字,指出伺服器端套接字的地址和埠號,然後就向伺服器端套接字提出連接請求。
連接確認:當伺服器端套接字監聽到或者說接收到客戶端套接字的連接請求時,就響應客戶端套接字的請求,建立一個新的線程,把伺服器端套接字的描述發給客戶端,一旦客戶端確認了此描述,雙方就正式建立連接。而伺服器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連接請求。
HTTP協議即超文本傳送協議(Hypertext Transfer Protocol
),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。
HTTP連接最顯著的特點是客戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱為「一次連接」。
1)在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連接,在處理完本次請求後,就自動釋放連接。
2)在HTTP
1.1中則可以在一次連接中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。
由於HTTP在每次請求結束後都會主動釋放連接,因此HTTP連接是一種「短連接」,要保持客戶端程序的在線狀態,需要不斷地向伺服器發起連接請求。通常的做法是即時不需要獲得任何數據,客戶端也保持每隔一段固定的時間向伺服器發送一次「保持連接」的請求,伺服器在收到該請求後對客戶端進行回復,表明知道客戶端「在線」。若伺服器長時間無法收到客戶端的請求,則認為客戶端「下線」,若客戶端長時間無法收到伺服器的回復,則認為網路已經斷開。
由於通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,通信雙方即可開始相互發送數據內容,直到雙方連接斷開。但在實際網路應用中,客戶端到伺服器之間的通信往往需要穿越多個中間節點,例如路由器、網關、防火牆等,大部分防火牆默認會關閉長時間處於非活躍狀態的連接而導致
Socket 連接斷連,因此需要通過輪詢告訴網路,該連接處於活躍狀態。
而HTTP連接使用的是「請求—響應」的方式,不僅在請求時需要先建立連接,而且需要客戶端向伺服器發出請求後,伺服器端才能回復數據。
很多情況下,需要伺服器端主動向客戶端推送數據,保持客戶端與伺服器數據的實時與同步。此時若雙方建立的是Socket連接,伺服器就可以直接將數據傳送給客戶端;若雙方建立的是HTTP連接,則伺服器需要等到客戶端發送一次請求後才能將數據傳回給客戶端,因此,客戶端定時向伺服器端發送連接請求,不僅可以保持在線,同時也是在「詢問」伺服器是否有新的數據,如果有就將數據傳給客戶端。
⑻ 怎麼准備Android面試
工作來經驗,如果從事過Android,就把具體做的自哪些內容全都列出來;如果是應屆生,就把自己學的與Android相關專業或課程列出來。
了解公司,了解公司的歷史、管理制度、公司主要是從事Android的哪方面。
熱愛工作,把自己在Android方面會的東西展現出來,然後喜歡這個行業的地方列出來。以及喜歡這份工作原因。
把性格方面,以及處理人際關系方便的回答准備下。
如果有過解決問題的成功案例等准備好,如果沒有,得表現出踏實,有愛心、責任心、誠信等。這樣才有利於公司發展。
工作中要有團隊精神,平時要與同時多溝通交流,與同事員工互相尊重、互相理解、互相包容。
⑼ android 面試一般問什麼
activity的生命周期,java基礎,android UI相關.多線程啊,資料庫啊之類的.
⑽ Android面試時有三輪面試,第一個是技術面,第三個是人事面,請問第二個是誰,他也問項目,隨便聊
首先是你的部分主管面試你,然後是你的部分經理面試你,也就是你的主管的老大。
最後的流程是人事。
一般面試的流程都是這樣的。