如何拿下面試官?2019的一些面試實戰小結告訴你!
今日頭條螢幕適配的原理?
1:首先計算出 density,計算公式:當前裝置螢幕總寬度(單位為畫素)/ 設計圖總寬度(單位為 dp) = densitydensity 的意思就是 1 dp 佔當前裝置多少畫素計算density 的原因:在佈局檔案中填寫的是什麼單位,最後都會被轉化為 px,系統就是透過上面的方法,將你在專案中任何地方填寫的單位都轉換為 px
但是,今日頭條適配,方案預設專案中只能以高或寬中的一個作為基準,來進行適配
簡述Android中的加固和使用平臺?
加固:防止程式碼反編譯,提高程式碼安全性
加固三方平臺,梆梆安全,360加固,愛加密等
區別:梆梆安全,360加固看不到專案中的類,愛加密看的到Java類,單看不到裡面的方法實現體,效果比前面差一點點
加固的底層原理:第三方加固的應用會生成一個Apk,然後把你的APK讀取出來,在封裝到這個第三方應用的APK裡面.
如何對APK瘦身?
簡述多渠道****打包及****原理和常用操作?
針對每一個渠道(應用市場)都生成一個帶有渠道標識的apk檔案
原理:使用者下載啟動應用,獲取渠道標識,和裝置的唯一標識,並上傳到伺服器裡面,伺服器這裡就 會根據獲取的記錄,根據渠道號然後判斷是否存在該伺服器的表裡面.(打標記,取標記,上傳標記)
1)友盟多渠道打包:在清單檔案中定義一個佔位符,在gradle指令碼中替換佔位符(會使用到Python)
2)美團打包,在meta-data中建立一個空的檔案,以檔名標識渠道,做一個解壓與壓縮的操作,速度會比較快
3)新一代多渠道打包,將渠道標識新增到.apk檔案的末尾,並不會對原始檔損壞
Android下的資料儲存方式有那些?
Android開發下如何有效進行螢幕適配?
兩種序列化相關
既然Google推薦Parcelable這種序列化,在這裡,推薦一鍵生成序列化的外掛,
在Android Studio裡面搜尋外掛,如下圖,寫起序列化(根本不用你寫)那就是一個美滋滋吶~
OkHttp相關?
ButterKnife相關?
Rxjava概念,常用運算子及擴充?
簡介:
一款優雅的非同步框架,代替之前的AsyncTask / Handler / XXX / …
其強大的運算子和鏈式寫法,執行緒切換等有助於提高開發效率和快速定位Bug
與Retrofit搭配使用更是有意想不到的效果,
底層原理:觀察者模式
等一些相應的部落格
缺點:
1:運算子太多會增加學習成本時間
2:使用不好,容易導致記憶體洩露(解決方式,推薦Rxlifecycle結合Rxjava,規避記憶體洩漏風險)
ANR相關
ANR全名Application Not Responding, 也就是”應用無響應”. 當操作在一段時間內系統無法處理時, 系統層面會彈出上圖那樣的ANR對話方塊.
在Android裡, App的響應能力是由Activity Manager和Window Manager系統服務來監控的. 通常在如下兩種情況下會彈出ANR對話方塊:
A) 5s內無法響應使用者輸入事件(例如鍵盤輸入, 觸控螢幕等).
B) BroadcastReceiver在10s內無法結束.
造成以上兩種情況的首要原因就是在主執行緒(UI執行緒)裡面做了太多的阻塞耗時操作,, 例如檔案讀寫, 資料庫讀寫, 網路查詢等等.
如何分析ANR?
ANR產生時, 系統會生成一個traces.txt的檔案放在/data/anr/下. 開發人員可透過adb命令將其匯出到本地 ($adb pull data/anr/traces.txt .)透過分析,我們可以根據具體的日誌檢視Anr原因( 如: 普通阻塞,CPU滿負荷,記憶體洩露 )
Android中那些場景是執行在主執行緒的?
三級快取:
記憶體洩漏:
如何進行記憶體洩露分析?
A: 透過Android Studio 視窗進行分析,檢視記憶體分配情況,如果操作應用是記憶體一直往上漲說明存在記憶體洩露
B: 定位記憶體洩露分析的工具—-MAT(Memory Analyzer tool)
C: 使用開源庫LeakCanary快速定位記憶體洩露
Android中的四大元件相關?
Activity:
Activity是一個應用程式元件,提供一個螢幕(狹義的理解就是當前APP的介面),使用者可以用來互動為了完成某項任務。(點選,登入,跳轉頁面)
Activity中所有操作都與使用者密切相關,是一個負責與使用者互動的元件,可以透過setContentView(View)來顯示指定控制元件(設定佈局檔案)。
在一個android應用中,一個Activity通常就是一個單獨的螢幕,它上面可以顯示一些控制元件也可以監聽並處理使用者的事件做出響應。
Activity四種啟動模式?
簡述System.exit(0) 、onDestory()、Activity.finish()三者的區別
1)System.exit(0) 是你正常結束程式,kill 掉當前程式,針對的是整個Application
2)onDestory()方法是Activity生命週期的最後一步,資源空間等就被回收了。當重新進入此Activity的時候,必須重新建立,執行onCreate()方法.
3)Activity.finish()當你呼叫此方法的時候,系統只是將最上面的Activity移出了棧,並沒有及時的呼叫onDestory()方法,也就是佔用的資源沒有被及時釋放。
圖片最佳化,以及圖片載入框架的使用,如Picasso、 Fresco、Glide等?
Handle相關:
擴充
先簡單介紹下你自己?
分析:除了向面試官做簡單的基本自我介紹之外,還需向面試官展現自身對該職業所必須具備的一些自身特質,
比如,面試程式設計師職業需要間接的向面試官表示自己思維嚴謹,對細節的處理,理性思維,假設論證等等;面試產品等職業,需要向面試官透過自己的一些故事間接展現對產品的看法以及獨特的思維個性等等
切入點:自身特質能否符合該職位的預期需求
對自己的期望和規劃?
分析:職業發展規劃表面上看是在考察你(求職者)、職位、公司三者之間長期的契合程度,但實際上,這麼大的一個問題完全不是三眼兩語間能夠表達清楚的。面試官(無論HR還是專業部門的)主要是看你回答問題時的思路是否清晰,回答中表現出的工作態度如何,順便看看你是否對公司和職位有足夠的瞭解。所以不管答案如何,最關鍵的就是不能茫然。
切入點:依舊自身特點,對未來期望和規劃需表述清晰,思維敏捷
談談自己的優點和缺點?
先談缺點:
技術行業面試基本是由該崗位未來同事和上司進行。這種面試技術性強,行為問題主要考察就是你是否真心想做這個工作(而不是當跳板或者聽說高薪體面而來)和你性格與文化是否相符。所有答案都應該圍繞這兩點組織(即每個經歷都應迴歸到你透過這個經歷學到什麼,該職位所需關鍵技巧,這些經歷為何讓你想做這個工作,和該經歷體現出你什麼樣的個人風格)。對這個問題因為好的回答而留下好印象很難,
關鍵是避免留下壞印象。
要點以下:
1)避免避重就輕,不要談一個算不得缺點的缺點。比如熬夜會困,或者(待人接物)太客氣等等。
2)避免談非職業缺點,比如有感情潔癖,挑食,不擅長陪女友逛街,做飯經常不懂會煮糊。
3)避免談到無法改善的弱點,比如我算數必須用計算器,我腦子不好用看書不理解。
4)避免談到致命弱點,比如脾氣怪異,不喜歡合作,遲到早退等。
那談什麼最好呢?我認為要點有三:
1)談已經在改正的缺點/有明確計劃來改正的缺點。尤其是你能夠充分論證在近期就可以解決的缺點。
2)談一個利用你的優點改正的缺點,順便帶出一個優點。(這是較高效的溝通技巧)
相對較好的回答:
1)喜歡追求細節導致專案/作業未能按期完成。透過時間管理能力改變工作方式,先完成框架再改善細節得以解決;
2)不知如何拒絕,同事要求幫忙一概攬下,影響自身工作進度。透過多工處理能力設定優先順序,以該優先順序表向求助同事展示自己手上工作,並給其一個自己在何時可以給予幫助的時間估計,讓求助人自行決定是否求助,問題解決
3)對處理同一問題的解決辦法上,由於組員自己的技術偏好和技術構成不一樣容易造成溝通障礙及影響專案計劃,所以,應學會高效和有效溝通方式及工作技巧
最後
暫且分享這些,由於部分答案過長影響閱讀,我已經整理成了一個PDF文件,關注我,可以私信我【總結答案】,領取vx:xx13414521
當然,這段時間大家學習的時間比較多,看完文章後也可以學習我收集的這份1612頁的面試指南,滿滿的都是乾貨,希望對大家有幫助!
推薦閱讀: 金三銀四,收下這份最全安卓開發面試指南!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2675520/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面試被問懵?帶你一步一步深入Handler原始碼,不信還拿不下面試官?面試原始碼
- java面試官:程式設計師,請你告訴我是誰把公司面試題洩露給你的?Java程式設計師面試題
- Handler相關面試題你答對多少?怎樣清晰表達拿下面試官?面試題
- 面試官如何考察你的思維方式?面試
- "instanceof 的原理是什麼"?大聲告訴面試官,我知道!面試
- 面試官告訴你遊戲互動作品集的五大踩坑點面試遊戲
- 如何實現自媒體效率的最大化?下面幾點告訴你
- 面試官,你再問我 Bit Operation 試試?面試
- 面試官:如何用LinkedHashMap實現LRU面試HashMap
- 面試官:為什麼忘記密碼要重置而不是告訴你原密碼?面試密碼
- 面試官:你如何利用 MySQL Cluster 實現整體高可用?面試MySql
- Android最新面試實戰總結Android面試
- 新晉面試官對近期面試的感想與總結面試
- 【Java】幾道讓你拿offer的面試題Java面試題
- 面試官十年面試經驗總結面試
- 面試時,面試官問:你以後的規劃是怎樣的 如何回答呢面試
- 面試官:請你實現一個深克隆面試
- 「每日一題」有人上次在dy面試,面試官問我:vue資料繫結的實現原理。你說我該如何回答?每日一題面試Vue
- 2019年面試官最喜歡問的28道ZooKeeper面試題面試題
- 面試小結(四)面試
- 面試小結(一)面試
- 當面試官問到:《MySQL資料庫的鎖機制》該如何拿分?面試MySql資料庫
- 面試官: 實現雙向繫結Proxy比defineproperty優劣如何?面試
- 面試官:你瞭解Webpack嗎?面試Web
- 多年前端面試官的面試套路總結前端面試
- 面試官:你講下介面防重放如何處理?面試
- 【重點】圖解:告訴面試官什麼是 JS 原型和原型鏈?圖解面試JS原型
- 如何完美的向面試官闡述你對IOC的理解?面試
- 操蛋的面試官面試
- 詢問面試官的面試問題面試
- 面試官:如何實現掃碼登入功能?面試
- 面試小冊:面試官經常問的十個棘手的 JavaScript 問題面試JavaScript
- 面試中圖論都考什麼?這篇文章告訴你!面試圖論
- 邦芒面試:十個步驟帶你俘獲面試官的心面試
- 【Android面試技巧】當面試官問你glide的時候,是想問什麼?glide生命週期如何實現?Android面試IDE
- 2019 阿里java面試總結 (含面試題解析)阿里Java面試題
- 面試官: 你瞭解前端路由嗎?面試前端路由
- 面試官:說說你對ThreadLocal的瞭解面試thread