1. 程式人生 > 實用技巧 >2020年一月公司倒閉了,我從董事長成了一個程式設計師!(經驗分享!)

2020年一月公司倒閉了,我從董事長成了一個程式設計師!(經驗分享!)

在2020年1月初,公司倒閉,無奈走上找工作的道路,不想自己平時圖安逸,不思進取,再次找工作才發現,android行業也不是站在風口上,豬也能吹上天的世道了.作為技術小菜的我,再找工作那幾個月真是戰戰兢兢,被打擊得信心全無.記錄下我的面試經歷,分享給需要的人.勉勵自己要時時進步,才不會被淘汰.


獵豹移動:(有筆試)

  • atomicinteger記憶體模型
  • static編譯時有啥不同,static 語句塊,static變數,static方法,構造初始化順序(靜態繫結)
  • animation和animator的用法,概述實現原理
  • Handler,looper,messagequeue,thread,message,每個類功能,關係?
  • Mvc,mvp的差異
  • app閃退的原因有哪些?每種情況簡述分析過程
  • 如果一個app存在多程序,請列出全部的ipc方法
  • 作業系統中程序和執行緒有什麼聯絡和區別,系統什麼時候會在使用者態和核心態中切換?- 如何載入ndk庫?如何在jni中註冊native函式,有幾種註冊方式?
  • 一個app如果效能不好,怎麼分析?

餓了麼(無筆試)

  • 設計的六大原則
  • 如果hashmap key不一樣,但是hashcode一樣會怎麼樣?
  • okhttp有什麼優秀的設計模式?builder模式有什麼好處?責任鏈模式有什麼好處?
  • 懶漢模式單例為什麼加volaitle?
  • hashmap是否執行緒安全?不安全會出什麼問題?
  • concurrenthashmap讀寫分別是啥情況?
  • bindservice和startservice生命週期有啥不同?
  • 廣播有幾種?廣播是觀察者模式?跨進城廣播也是觀察者模式嗎?
  • ams是怎麼找到啟動的那個activity的?
  • a-b-c介面,其中b是singleinstance的,那麼c介面點back返回a介面,為什麼?怎麼管理棧的?
  • 紅黑樹有啥特性?
  • 在oncreate裡面可以得到view的寬高嗎?
  • view的getwidth和getmesurewidth有啥區別?
  • 遍歷hashmap的原理?
  • 23種設計模式

中園博林(有筆試)

  • 如何避免out of menmory和anr?
  • arraymap和hashmap的區別?
  • 如何實現執行緒同步?
  • 簡述android事件分發機制
  • 簡述view繪製流程
  • 用兩個棧實現一個佇列
  • 口頭問viewpager巢狀滑動衝突怎麼解決?
  • svg動畫
  • 屬性動畫畫一個拋物線怎麼弄?

立思辰(無筆試)

  • 為了適配多解析度,引入什麼開源框架?
  • 閱讀介面書架用什麼控制元件實現?-佈局怎麼做到每行的文字左右對齊?
  • 直播介面,微信對話介面實現?
  • 效能優化怎麼弄?

vv音樂(有筆試)

  • sax解析xml的優點
  • Contentvalue 鍵值型別
  • androiddvm的程序與linux的程序說法正確的是?(選擇題)
  • Android:gravity和android:layout_gravity的區別?
  • assets與res/raw的區別?
  • 解釋layout_weight的作用view如何重新整理?
  • animation.animationlistner幹什麼用的?
  • android常用佈局及排版效率
  • collection與collections的區別
  • 匿名內部類是否可以extends其他類?是否可以implement interface(介面)
  • 補間動畫常見的效果?有哪幾個常見的插入器?
  • override與overload的區別?overloaded的方法是否可以改變返回值的型別?
  • sleep與wait有什麼區別?
  • 在android中,請簡述jni的呼叫過程?請結束android.mk的作用,並試寫一個android.mk檔案(包含一個.c原始檔即可)
  • 氣泡排序(程式碼實現)
  • 猴子偷桃問題程式碼實現
  • 給出兩個連結串列的頭指標比如p1,p2,判斷這兩個連結串列是否相交,寫出主要思路即可

口頭問

  • 簡述封裝,繼承,多型
  • 強軟弱虛引用的應用場合輸出一個數組,不重複?(有點忘記題目什麼意思了)
  • 用四個執行緒計算陣列和(我說用join方法,或者countdownlatch,他說用執行緒池即可)
  • 什麼叫安全釋出物件(多執行緒裡面)final?
  • 策略模式和命令模式是啥?
  • 拓撲排序
  • 陣列和連結串列在中間位置的插入效率
  • binder的原理
  • art和dvm在gc上有啥不同?有啥改進?
  • linux和windows下程序怎麼通訊的?(完全不瞭解)
  • 效能優化做過什麼工作?
  • 一個類實現一個介面,介面引用指向這個類物件,可以不可以呼叫它的tostring方法?
  • 瀏覽器,輸入url匹配,假設有一億條url快取,用什麼資料結構匹配?
  • recycleview快取機制相比listview快取機制有啥改進?
  • 一個長度為10的arraylist和linklist,在第五條插入,哪個更快?
  • 子類複寫父類的equals方法,但是子類增加了一個成員變數int,請問equals方法咋整?

大數醫療(有筆試)

  • 手寫hashmap
  • 寫生產者消費者模式,不可用syncronized
  • treemap,hashmap應用場景

位元組跳動(無筆試)

  • dvm和art的區別
  • 從framework的角度講activity的啟動流程(冷啟動)
  • 手寫演算法,二維陣列,每一行,每一列都是升序,找出某數的下標,沒有輸出[-1,-1],最好的時間複雜度是m+n(行數+列數)
  • zxing二維碼開源框架流程
  • contentprovider怎麼升級維護?
  • constaintlayout
  • bitmap有幾種格式,分別佔多少位元組

滴滴出行(無筆試)

  • android事件分發機制,如何下發,如何上傳?
  • 一個介面下拉重新整理要怎麼實現?
  • bitmap佔用記憶體多少怎麼計算?一個畫素佔幾個位元組?
  • threadlocal的原理?
  • framework載入activity的流程
  • arraylist和linkedlist的應用場景
  • 網路請求相關的框架
  • 好幾萬條簡訊,滑動卡頓怎麼解決?
  • 有沒有了解過三方開源資料庫(好像是騰訊的什麼資料庫框架,不僅僅是懂sqlite)
  • 避免記憶體洩漏,為什麼說handler用成員內部類會記憶體洩漏?activity不是已經到gcroot被切斷了嗎?還有靜態context持有activity的引用會記憶體洩漏,必須要持有怎麼辦?(及時釋放)
  • 計算viewgroup的層級,遞迴實現和非遞迴實現
  • 自己寫一個應用,包名就叫android行不行,為什麼?
  • 主執行緒looper如果沒有訊息,就會阻塞在那,為什麼不回anr?
  • 系統程序可以用webview嗎?
  • 原子類的瞭解一個app多程序的好處
  • 一個arraylist,裡面全部是int,講所有值是2的整數的節點刪除
  • arraymap瞭解
  • binder機制
  • shareprefrence原理?是否執行緒安全和程序安全?
  • 一個app啟動頁另開一個程序,啟動頁10s後啟動mainactivity,請問5s的時候有幾個程序?
  • java記憶體結構,記憶體模型

融雲(有筆試)

  • 氣泡排序手寫
  • 如何判斷一個字串是迴文字串

梧桐車聯(電話面試沒過)

  • 為什麼要引入activity這個元件
  • shareprefrence不是程序安全,假設一個apk兩個程序同時修改shareprefrence怎麼辦?
  • contenprovider已經是程序間通訊,為什麼還要引入broadcastreceiver?
  • a啟動b,b啟動c,怎樣可以在c介面點back退回到a?
  • startservice和bindservice生命週期有什麼不同?
  • 兩個應用同時註冊一個廣播,優先順序都一樣,哪個會先收到廣播?(有序廣播?)
  • 還有些其他的,忘記了

螞蟻金服(電話面試沒過)

  • threadlocal原理
  • zxing有過優化提高識別率嗎?

京東

  • arraylist裡面可以不可以new一個t泛型的陣列?
  • 補間動畫click事件還在原位怎麼解決?
  • 多執行緒併發
  • 隔代資料庫升級
  • 效能優化

最後

雖然本科是非科班出身,但沒有接觸過實際專案,對Android實踐了特別少,曾經對自己未來的發展道路很迷茫,不知道何去何從,感覺自己就是一個loser。有幸進入了一家某知名美資企業實習,也就是那段時間讓我認清了自己的短板,自己欠缺的是什麼,那段時間也是我確立自己目標的過程。

瘋狂寫程式碼、做專案,經常在公司加班很晚(在公司打地鋪),每天都在對自己進行總結和反思,正是這樣一個不斷的自我反思與努力的過程中,我得到了真正的成長與進步。也是這段經歷讓我能夠面對位元組技術面試官的提問應答自如,從而順利拿到位元組的offer。

我堅信,堅持學習,每天進步一點,滴水穿石,我們離成功都很近!

那些打不死我的,終將使我變得更加強大!

本文在開源專案:【GitHub 】中已收錄,裡面包含不同方向的自學程式設計路線、面試題集合/面經、及系列技術文章等,資源持續更新中…

如果需要PDF版本可以在群資料夾裡,自行領取!

文章不易,如果大家喜歡這篇文章,或者對你有幫助希望大家多多點贊,轉發,關注哦。文章會持續更新的。絕對乾貨!!!