Q1:ListView和RecyclerView的使用,就問我它們有什麼區別?前端
Q2:既然RecyclerView在不少方面能取代ListView,Google爲何沒把ListView劃上一條過期的橫線?java
Q3:你用過MVP,那你知道Dagger2吧,介紹下吧?程序員
Q4:HashMap的內部實現原理?面試
Q5:Activity生命週期,有哪些啓動模式,以及應用場景?算法
Q6:你用過AsyncTask,那你跟我說說AsyncTask的內部實現原理?數據庫
Q7:AsyncTask內部維護了一個線程池,是串行仍是並行,怎麼維護的?數組
Q8:那你說說線程池的四種初始化吧?緩存
Q9:你用過MD,你知道怎麼定義一個Behavior嗎?微信
Q10:RecyclerView的拖拽怎麼實現的?網絡
Q11:寫一個SingTop,有哪三個條件?
Q12:一個按升序排列好的數組int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},輸入一個x,int x = 31,在數據中找出和爲x的兩個數,例如 9 + 22 = 31,要求算法的時間複雜度爲O(n);
Q13:如何向一個數據庫具備int類型A,B,C,D四列的表中隨機插入10000條數據?如何按升序取出A列中前10個數?
Q14:service兩種啓動方式有什麼區別?
Q15:說說三級緩存、Handler機制 ?
若是您有多餘的時間,能夠聆聽下個人故事
從畢業到如今面試也就那麼幾家公司,單前幾回都比較順利,在面到第三家時都給到了我offer!前面兩次找工做,沒考慮到之後須要什麼,本身的對將來的規劃是什麼,只要有份工做,工資符合本身的要求就行!因此在智聯招聘上選好工資範圍,就一頓海投,作等面試電話!
作兩快三年的Android開發,工做的任務也就是一些界面的編寫,RecyclerView的簡單使用,網絡框架也是別人封裝好的直接用,再就是集成些第三方的分享、支付什麼的!技術上的提高能夠說根本沒有,和工做一年左右的人,比起來就多幾個項目優點!因此此次出來找工做還指望15K,提及來內心很慌!有哪些緣由呢?
一、小公司要求不高,本身也抱着只要能作出功能的態度
二、對行業趨勢把握不許,沒有將來規劃(所謂混吃等死)
三、對本身的工做不感興趣,上班有空閒時間也不會去深刻學習
再來講說此次找工做面試的一些經歷和感想!此次面試大大小小面試了十多家!依我本身在簡歷上寫的幾個商城類APP的工做經驗,在智聯和拉鉤上也只有小公司能叫我去面試!(因此說技術深度很重要)
前面兩次的因爲面試沒怎麼準備,直接over確定是沒問題的!第一家一個小姐姐把我問得n臉懵逼(一個屌絲程序猴和妹子聊天就緊張,心跳加速,口乾舌燥,說話結巴)!她首先讓我自我介紹一下,可腦殼一下像短路了同樣!就說:「你知道的程序員表達能力差,嗯。。。嗯。。。你看簡歷吧!」她直接一臉無語!
接着她就看到我簡歷有 (Q1)ListView和RecyclerView的使用,就問我它們有什麼區別? 我也就只能簡單的答答RecyclerView怎麼使用ListView怎麼使用!而後她又問我 (Q2)既然RecyclerView在不少方面能取代ListView,Google爲何沒把ListView劃上一條過期的橫線?我固然是不知道怎麼回答,而後就請教她,而後她就告訴我ListView採用的是RecyclerBin的回收機制在一些輕量級的List顯示時效率更高!頓時我就服氣了!
後來又問我(Q3)你用過MVP,那你知道Dagger2吧,介紹下吧?我又是一臉懵逼!此次面試就這樣被個妹子給幹趴了!從這回去我就開始回去看ListView和RecyclerView的區別、緩存機制、Android MVP+Retrofit+dagger2+RxAndroid框架等等!
次日又去一家小公司,此次是我用***「不知道」回答的最多的一次!(但我從容面對這樣的結果,由於本身真的很菜)面試一上來也是讓我作自我介紹,因爲此次作了準備,回答起來沒那麼難!後來他開始問我技術問題(Q4)HashMap的內部實現原理?我想了下只能說「不知道」!接下來就問我(Q5)Activity生命週期,有哪些啓動模式,以及應用場景?這個仍是難不倒個人!問到(Q6)你用過AsyncTask,那你跟我說說AsyncTask的內部實現原理?由於我昨晚看了下,就開始跟他說首先我說說它的出現是爲了解決在子線程中作了耗時操做後須要回到UI線程去更新這樣一種情景,而後就開始準備說它的四個方法(doInBackground(Params...) 、publishProgress(Progress...)、onProgressUpdate(Progress...)、onPostExecute(Result)),他馬上就打斷我了,說我問的是內部原理,(Q7)內部維護了一個線程池,是串行仍是並行,怎麼維護的?這一問,我又是一臉懵逼,只能說「不知道」!他也很無奈,又問(Q8)那你說說線程池的四種初始化吧?個人第一反應是看都沒看過,一句「不知道」又讓他無語了!此時的我死豬已經不怕開水燙了!(Q9)你用過MD,你知道怎麼定義一個Behavior嗎?「不知道」!(Q10)RecyclerView的拖拽怎麼實現的?「不知道」*!最後一曲涼涼送給本身!
接下來的幾家公司都是創業型的小公司,面試的人都是一些不懂Android開發的或者是會一點點!首先上來就是自我介紹,這我都說了好多遍了,我15年畢業於哪里哪里,從畢業一直到如今從事的是Android開發的工做,作過什麼什麼類型的項目!大學學的是軟件工程,學過Android、計算機網絡、嵌入式、數據庫、C#等等!(一頓操做猛如虎,哈哈。。。)可是這些創業型的小公司都要求你有能獨立完成APP的能力,而後就跟你說什麼公司背景有多牛呀,有期權股份呀,咱們團隊怎麼優秀,這個平臺能提高你不少能力呀,可是咱們剛開始呀不會給你開過高的工資,但咱們年終業績好的話能夠給你發4~6個月薪資給你作獎金!可能在這期間要加加班呀什麼的!
在這些中有一家都面試到了和項目經理談了,自我感受和技術總結聊得很不錯,和項目經理也談了本身將來的規劃,先從Android入手技術深刻,而後再自學H5前端,再像java後臺靠攏作一個全棧工程師!項目經理也說你過來咱們這有很好java後臺資源,並且Android會交給一我的來作,將來業務發展也會加入H5,咱們這能給你提供這樣的一個平臺!最後在某些方面咱們的目標達成一致了,行先這樣,咱們再商量下,你回去等通知吧!結果我回去了,加了技術總監的微信,傻傻等了一天,啥也沒等來!(忠告:基本叫你回去等通知的都是沒戲!)
固然這些公司中也有向我拋出橄欖枝的,有一家給我試用8k(不交社保),轉正10K,大小周!一不交社保,二是大小周,三是那沒我想要的,我思來想去,展轉反側,以不能把本身賤賣爲由,我果斷謝絕了!
比起套路,我更喜歡那些能直白告訴我結果的人!在去一家稍微大點的公司,首輪就是筆試!我筆試有一道算法題和數據庫的題作不出,當時就知道此次沒戲了!但很感謝面試個人那哥們,和我同樣15年畢業的,但很牛逼!他拿着個人筆試答卷,*(Q11)首先是寫一個SingTop,那哥們就問我,單例要注意些什麼?我首先回答的到的同步問題,再說構造方法私有,可我忘了一點靜態調用!那哥們就給我一條條理出來一、構造函數私有 二、含有一個該類的靜態私有對象 三、有一個靜態的公有的函數用於建立或獲取它自己的靜態私有對象 四、其次纔是考慮線程同步!(Q12)*一個按升序排列好的數組int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},輸入一個x,int x = 31,在數據中找出和爲x的兩個數,例如 9 + 22 = 31,要求算法的時間複雜度爲O(n);
我給出的答案是:
一、先用二分法排除比x大的數,獲得pos
二、再從0到pos 經過兩層for循環經過一個數與剩下的全部數來相加,等於x的時候break循環
那哥們就開始給我分析,首先第1點想法就是錯的,應爲給出的數組中有負數,負數+正數有可能獲得中間的那個數,再則它這靠得是一個雙向逼近的算法!
接下來是一個數據庫題目*(Q13)*如何向一個數據庫具備int類型A,B,C,D四列的表中隨機插入10000條數據?如何按升序取出A列中前10個數?這道題我沒答,我覺得考的是數據庫操做的基本語法!後來那哥們慢慢跟我分析這道題的考點在哪?他說:「這些語法我也不記得,可是像咱們這樣具備兩年多工做經驗的人百度一下也是能作得出的,可是這裏考的不是基本語法,數據庫其實也就是一個文件,一個具備固定封裝特定語法操做的文件,既然是文件讀寫就要考慮到效率問題!在數據庫中提升效率用到什麼,是事務!若是一條條插入,其實每次插入都會維持一個事務,也就至關於文件的打開和關閉,10000次的打開和關閉是很消耗性能的,因此要在插入前使用BEGIN TRANSACTION開啓事務,再10000條數據插入完成時用END TRANSACTION結束事務,這樣就相對於文件只打開了一次,10000條批量操做完後,再關閉文件!」
下面一題是*(Q14)*service兩種啓動方式有什麼區別?我回答得很簡單!他就直接說「面試這筆試也是很重要的一部分,簡歷你們能夠隨便寫,可是一些技術水平在筆試這是有所體現的,因此在我這筆試這關是沒有經過的!」這個時候我挺服氣的,畢竟是本身準備很差。後來那哥們就跟我說:「這面試題該背的該記得仍是要記,花個兩三天或者一週去準備,對本身多要一兩K也是很值得的,因此該辛苦的仍是要辛苦下!」我挺感謝這位哥們的,也挺喜歡和這樣率直隨意的人打交道!
最後通過兩個星期的面試,找了一家符合本身發展方向作智能硬件的公司!通過這段時間的面試,懂得了技術深度的重要性,還有職業規劃的重要性!目前我的認爲純App開發很容易被取代,我我的的職業規劃
一、以Android技術爲基礎深刻,再學前端,再擴展到Java後臺,作到一個全棧工程師
二、向Android智能硬件,NDK開發轉型,由於我大學搞過嵌入式,有些基礎,這一行門檻稍微高些不容易被取代!目前來講本身是打算朝着第二點去發展了!
連接:https://www.jianshu.com/p/189e07bf9f68
微信公衆號:終端研發部