校招——面試(Android崗)總結

PS:持續更新,未完待續 java

2016.8.24某爲面試

  1. 自我介紹一下
  2. 鏈表和數組的區別web

    • 數組的存儲空間是靜態、連續分佈的,初始化過大會形成空間浪費,太小會使空間溢出;鏈表的存儲空間是動態分佈的,只要內存有剩餘空間,便不會產生溢出。面試

    • 數組查詢比較快(能夠根據下標直接查詢),可是插入和刪除比較慢;鏈表查詢比較慢,可是插入和刪除比較快(能夠直接改變鏈表的指針)。算法

  3. 多個.c文件到二進制文件,這個過程當中編譯器作了哪幾階段的工做編程

    C源程序→預編譯處理(.c)→編譯、優化程序→彙編程序(Windows下是.obj)→連接程序。數組

    大體是這個步驟,詳細的也不是很瞭解,暫時不作深究了。 安全

  4. 可執行的二進制文件加載到內存中,程序裏面分哪幾個步驟網絡

    這個多是讓說java的程序的工做原理,下面先給一張java工做流程圖。
    Java工做原理框架

    1. Java源程序在編譯以後生成後綴名爲「.class」的文件,該文件以字節碼(bytecode)的方式進行編碼。這種字節碼其實是一種僞代碼,它包含各類與平臺無關的指令。Java虛擬機在字節碼文件的的基礎上解釋這些字節碼,將這些字節碼轉化成本地計算機的機器代碼,並交給計算機去執行。
    2. Java虛擬機執行字節碼的過程由一個循環組成,它不停地加載程序,而後進行合法性和安全性檢測,以及解釋執行,直到程序執行完畢。
  5. 二叉樹的遍歷

    先序遍歷,中序遍歷,後序遍歷。

    PS:我記得當時懵逼了,直接回答的深度優先遍歷,廣度優先遍歷。(囧,這是圖的遍歷好不啦)svg

  6. 程序和進程的區別
    程序只是一個靜態的指令集合。而進程是一個正在系統中活動的指令集合,即進程中加入了時間的概念。進程具備本身的生命週期和各類不一樣的狀態,這些概念在程序中都是不具有的。
  7. 死鎖產生的緣由,如何避免死鎖

    死鎖是指多個進程等待它方佔有的資源而無限期地僵持下去的局面。

    產生死鎖的緣由

    • 系統資源不足
    • 進程運行推動的順序不合理
    • 資源分配不當

    產生死鎖的四個必要條件:(必須同時具有才會產生死鎖)

    • 互斥條件

      即某個資源在一段時間內只能由一個進程佔有,不能同時被兩個或兩個以上的進程佔有。

    • 不可搶佔條件

      進程所得到的資源在未使用完以前,申請資源者不能強行地從資源佔有者手中奪取資源,而只能由該資源的佔有者進程自行釋放。

    • 佔有且申請條件

      進程至少已經佔有一個資源,但又申請新的資源;因爲該資源已被另外進程佔有,此時該進程阻塞;可是,它在等待新資源之時,仍繼續佔用已佔有的資源。

    • 循環等待條件

      存在一個進程等待序列{P1,P2,…,Pn},其中P1等待P2所佔用的某一資源,P2等待P3所佔用的某一資源,…造成一個進程循環等待環。

    如何解決死鎖

    有序的資源分配

  8. 你在項目中具體實現了哪些功能

  9. 你以爲你的項目中有哪些難點

  10. 你以爲本身的優點是什麼

2016.9.8某寧面試

  1. 你作的項目用的什麼框架
  2. Android的四大組件
  3. Activity的生命週期
  4. 我當前正在運行一個程序,而後我按了電源鍵,請問Activity通過了哪些生命週期?
  5. 廣播有幾種註冊方式,動態註冊的步驟是什麼
  6. 計算機網絡裏通用的七層模型
  7. 網絡協議,通訊協議(模型和協議的對應關係)
  8. TCP和UDP協議的區別
  9. 鏈表的排序和算法(你知道哪些排序算法)
  10. 冒泡排序的算法實現
  11. 冒泡排序和二分法排序哪一個效率高?
  12. Java中封裝的概念
  13. Java中多態的概念,多態是用什麼實現啊的實現啊的
相關文章
相關標籤/搜索