1. 程式人生 > >Android面試一天一題(吹牛題)

Android面試一天一題(吹牛題)

這兩天和領導產生了一些誤會,領導給了我很多Android開發讓我面試,本意是讓我招大哥,我卻按招小弟的標準來面試的,結果通過的人完全無法達到第二次篩選的標準。不知大家有沒有發現,在國內對於程式設計師或開發工程師嚴重缺乏評級標準,往往是按工作年限評級的,一兩年的叫工程師,三五年的叫高階工程師,七八年的就叫資深高階工程師(有些厚顏無恥的叫架構師),十年左右的叫大神!十多年以上的,什麼?你還在做開發?你有問題吧!

但是大哥不是按年齡劃分的。

面試題:吹牛

說具體點可以是:說一下你認為自己比其他程式設計師出色(厲害)的地方?為什麼我們要選擇你呢,你和其他程式設計師比有什麼優勢?

這個是非常難的面試題,你覺得呢?哲學家蘇格拉底說過“人最難的就是認識自己”,這句話一點都不假,而且據調查很多人都認為自己的水平高於平均水平(總之不會是自己拖後腿)。所以往往自己都會認為自己比其他程式設計師厲害,但要真說出厲害在哪幾點,還真難說出來。

有很多人面試後也感覺自己面的不好,面試官明明問的都是基礎題,只不過是多嘴問一下對這些元件的看法,就把很多“資深的高階工程師”搞得有點不好意思了,突然感覺到自己好像不會Android開發一樣。其實,這表明了很多人只是會使用這些常見的東西,但從來不會去思考為什麼要這樣用、還有沒有更好的用法。

有時都不是有更好的用法的問題,而是正確的用法的問題。說一個例子:前些天遇到一個Android開發(按年限算應該是“高階工程師”了),他的應用發生了Crash,找我幫忙分析一下。我檢視一下日誌發現是NullPointerException,應該是很好解決的。然後發現,NullPointerException的地方是在他的Service的一個public方法中去呼叫了一個在Service的onCreate建立的變數。

再查詢發現他知道使用bindService來繫結服務,也知道在onConnection中獲取Service的例項,從而可以呼叫Service的方法。問題在於,他知道這個bindService是非同步的,所以在沒有bindService成功前就自己手動建立了一個Service例項。當然,這個Service例項不會呼叫它的onCreate方法。

他知道用bindService啟動一個Service,但卻不知道自己建立的例項和系統建立的Service例項是有區別的。你會使用了,不代表你就真地明白了。

如果,我們缺乏思考,只是一味的埋頭於眼前的問題,那麼我們很難跳出這個問題的怪圈:因為眼前的問題纏住自己了,所以沒有時間和精力去學習和反思,因為不學習和反思思維就更侷限,就更沒有辦法解決眼前的問題……

有過一些表現比較積極的面試者,在技術面試表現不佳時,主動和我表白:“自己絕對有信心和能力解決工作中的問題,而且自己的學習和理解能力超強的,現在不知道的等下來一學就會”。好吧,積極推銷自己總歸是不錯的。

但是真正看一個人是不是比別人出色,首先不是看他說了什麼,而是看他做出了什麼。比如你直接讓我看一下你的一個Github的開源專案,那我直接看看你的程式碼就知道你是否真的比一般的開發出色了。如果它有100+顆星,那我覺得你是真厲害了。

提交專案到Github簡單嗎?簡單,但很多人都做不到。

看著再簡單的事情,做了才好評價。所以,如果你還只是一個學生,或者工程師的角色,那麼給自己定一個三到五年計劃吧,現在雖然不知道自己比別的工程師出色在哪裡,但希望三年後你能知道,大家也能看得出來。