找暑假實習生那些事

大三學生一枚,在找Android實習。接到過一個公司的幾次電話面試。下面記錄下面試過程中被問到的一些問題。

三次面試
一、基礎知識
第一次面試,面試官主要問的是計算機基礎知識。
1. 常見的排序算法有哪些?快速排序的實現原理
2. List與Set的區別
3. 二叉樹是什麼?如何遍歷,各自的區別
3. 計算機網絡中的七層,http屬於哪一層?
4. http和https的區別?
5. Java中的類加載機制。
5. 說一下Java和Android的虛擬機。
6. 知道dex文件嗎,說一下他和class文件的區別。
7. 英語水平如何?

二、項目經歷
第二次面試,主要問項目經歷和學習經歷。
1. 最難忘記的項目經歷
2. 說下項目的架構和功能
3. 項目中開發過程遇到的難題與解決方法
4. Activity的生命週期和橫豎屏切換的生命週期

三、項目架構
第三次面試問得比較偏技術。
1. 說下你的項目架構(直接懵比,是說mvp還是RxJava+Retrofit+okHttp3???後面轉移了話題)
2. 網絡框架的實現原理(如果沒網如何處理?將請求存下,等到網絡環境好的時候在進行請求(類似QQ消息的重發))
3. ImageLoader的實現機制(如何解決的oom和緩存問題)
4. Handler消息機制
5. 事件分發機制
6. 自定義控件的原理
7. RecyclerView的源碼,說出爲什麼他比ListView要好
8. 內存泄漏和應對方式(當時說如何解決,使用弱引用)
9. Android中的GC
10. Android中的熱修復
11. Activity的啓動過程(源碼理解)
11. 說一下Android 中的JNI和NDK(沒用過,直接放棄)
12. 用過哪些開源框架。

期間還接到過一家公司的電話,一上來就是“以最短時間,講一下你項目中的亮點”。因爲,項目不是商業級的而是一些在學校參加學科競賽開發的。當時開發的時候比較隨意,沒有在意架構。後期又沒有做重構。所以沒太大亮點,隨便說了下,直接就GG了。。。

總結:筆試過不了,內推纔是王道。仍然在找實習的道路上趴着。。。待續


———————– 2017-5-20—————————-

第四次
1. 簡單介紹下自己
2. Activity的生命週期
3. 項目中的架構
4. 項目中擔任的角色
5. 如何協調團隊成員工作
6. IPC的幾種方式
7. 對於sqlite的理解
8. 四大組件是什麼
9. service的應用常用的場景
10. 兩種廣播區別與他們的使用場景
11. 對網絡框架的理解,開源庫與自己封裝的區別
12. EventBus的底層實現
13. ArrayList和LinktList的區別與底層實現
14. HashMap與LinktedMap的底層實現與區別
15. 手寫字符串反轉
16. 手寫線程安全的單例模式

———————– 2017-5-26—————————-
第五次
介紹下自己:

  1. mvc 、mvp和mvvm的區別與聯繫?
  2. Android的內存分配
  3. RXJava響應式編程以及進程調度的原理
  4. 快速排序的原理和時間複雜度,以及最快的時間複雜度和最慢的
  5. 有沒有閱讀過github上的一些開源庫源碼
  6. 最拿手的項目
  7. 是否有過Android逆向的開發經驗(找Android逆向工程師)

———————– 2017-7-31—————————-
Java

  1. final修飾符用法
  2. static修飾符用法
  3. static修飾的內部類會有外部內的引用嗎?不會
  4. Java中的修飾符的區別
  5. Thread中的run方法和start方法區別?

網絡

  1. url的格式?模式(或稱協議)、服務器名稱(或IP地址)、路徑和文件名
  2. url的參數形式?鍵值對的形式:?參數=值
  3. Get與Post的區別:安全性和數據量。GET方式提交的數據最多隻能是1024字節,理論上POST沒有限制,可傳較大量的數據
  4. tcp與udp區別
  5. tcp的三次握手和四次揮手:三次握手和四次揮手
  6. http的heander和Content/type以及常見的返回碼:狀態碼Content類型

Android

  1. assert包和res包的區別?assert不會被編譯進R文件
  2. weight屬性
  3. 自定義View需要重寫的三個方法
  4. SpecMeasure的兩個屬性:類型和尺寸
  5. selector文件的使用
  6. 在TextView四個方向設置drawable的屬性,設置文本每個文字顏色變化(使用SpannableString)。
  7. Handler在子線程創建?創建Looper,Looper.prepare() Looper.loop()
  8. Android中內存泄漏的常見:static修飾Context
  9. Handler的內存泄漏: Handler內存泄漏詳解及其解決方案

———————– 2017-8-05—————————-
Java

  1. 進程與線程的區別(作死)
  2. 線程可以使用哪些內存???
  3. 泛型的類型反射如何獲取?

Android

  1. Application的生命週期
  2. Fragment的生命週期
  3. 當Activity已經啓動的時候,再啓動Fragment,OnCreatActivity會執行嗎?
  4. Activity的任務棧
  5. Activity的啓動模式是singleTop時,而且Activity位於頂部,這時候傳入的數據不同,如何讓Activity改變?
  6. 當前應用切到後臺,由於內存不足把已存在Activity釋放掉了,再次回去的時候生命週期如何調用,如何恢復數據?saveInstant。
  7. 事件分發機制
  8. ViewGroup的測量,當父控件高度是wrap_content,子控件高度是match_parent的時候,高度是怎樣的?

怎麼實現微信?

  1. 在線的時候,雙方接受發送消息怎麼處理
  2. 離線的時候怎麼處理
  3. 網絡不好的時候如何發消息?消息是否序列化到本地
  4. 對方頭像改變的時候如何處理?讓自己知道

其他?

  1. 有沒有自己崇拜的偶像?
  2. 你覺得最好的程序員應該怎樣?
  3. 你自己的優勢?

———————– 2017-8-7—————————-

  1. 自我介紹
  2. 項目中的難點
  3. 內存泄漏如何檢測?leakcanary的原理
  4. 手寫鏈表的幾個增刪查改
發佈了150 篇原創文章 · 獲贊 138 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章