學android校招進BAT要到什麼水平?
我的學校是一個211大學,軟體工程專業。
java編程思想簡略看過一邊,準備再仔細看一遍
基本的演算法都手敲過一遍,敲過紅黑樹,nfa,但是做不到徒手直接敲出,深度廣度遍歷倒是可以裸敲,但是沒有參加過acm。
安卓現在可以熟練的用各種控制項做界面,線程之類也知道可以用intent和server實現,也會用volley之類的工具,屬於初級入門吧,買了一本老羅的安卓源代碼,準備看看框架層。
主要想知道要參加3月的春招,進bat的話,還需要達到哪些要求
前段時間面試,自己以及小夥伴們簡要的匯總的一些面試問題,可以對照的參考一下吧~
建議就是在面一家公司之前了解好這個公司的app是以什麼為驅動的,例如電商的話肯定要了解hybrid 開發的一些知識點,圖像處理的公司要好好複習下bitmap canvas相關的知識點,祝好運!
UI:
1.View的繪製
Android視圖繪製流程完全解析,帶你一步步深入了解View(二)
2) Android自定義View的實現方法
3)canvas
Andriod中繪(畫)圖----Canvas的使用詳解
Activity:
1.onPause和onStop的區別 // 這裡有錯誤需要修改,修改在下方
onPause:可以看到這個activity (比如dialog) onStop:看不見這個activity
2.Activit用的啟動方式
standard: 標準模式,一調用startActivity()方法就會產生一個新的實例。
singleTop: 如果已經有一個實例位於Activity棧的頂部時,就不產生新的實例,而只是調用Activity中的newInstance()方法。如果不位於棧頂,會產生一個新的實例。
singleTask: 會在一個新的task中產生這個實例,以後每次調用都會使用這個,不會去產生新的實例了。
singleInstance: 這個跟singleTask基本上是一樣,只有一個區別:在這個模式下的Activity實例所處的task中,只能有這個activity實例,不能有其他的實例。
3.ActivityManagerService
第6章 深入理解ActivityManagerService
4.activity的啟動過程:
深入理解Activity啟動流程(一)
5.Activity之間的協作當一個activity A啟動了另外一個activity B,它們的生命周期是有交叉的;
首先A的onPause()被調用;
e之後B的onCrate(), onStart()及onResume() 方法會被調用(此時B擁有用戶焦點);
最後,如果A在屏幕上不可見,onStop()方法被調用;
因此,我們在兩個activities中傳遞數據,或者共享資源時(如資料庫連接),需要在前一個activity的onPause()方法而不是onStop()方法中進行;
Service
1)service解析
Android 中的 Service 全面總結
2)兩種啟動方式
Service 兩種啟動方式
Fragment
1)生命周期:
[整] Android Fragment 生命周期圖
數據存儲:
1)contentprovider
十二、ContentProvider和Uri詳解
2)sqlite
Android SQLite資料庫操作實例
內存泄露:
Android中使用Handler造成內存泄露的分析和解決
android開發中,可能會導致內存泄露的問題
1,不要讓生命周期長於Activity的對象持有到Activity的引用
2,盡量使用Application的Context而不是Activity的Context
3,盡量不要在Activity中使用非靜態內部類,因為非靜態內部類會隱式持有外部類實例的引用(具體可以查看細話Java:」失效」的private修飾符了解)。如果使用靜態內部類,將外部實例引用作為弱引用持有。
4,垃圾回收不能解決內存泄露,了解Android中垃圾回收機制
網路
1)volley
Android庫Volley的使用介紹
Android Volley完全解析(四),帶你從源碼的角度理解Volley
2)如何控制TCP連接時的擁塞
TCP的流量控制和擁塞控制
3)三次握手
TCP協議中的三次握手和四次揮手(圖解)
4)Android客戶端和服務端如何使用Token和Session
Android客戶端和服務端如何使用Token和Session
5) 移動端獲取網路數據優化的幾個點
0. 連接復用 :
節省連接建立時間,如開啟 keep-alive。
對於 Android 來說默認情況下 HttpURLConnection 和 HttpClient 都開啟了 keep-alive。只是 2.2 之前 HttpURLConnection 存在影響連接池的 Bug,具體可見:Android HttpURLConnection 及 HttpClient 選擇
請求合併:
即將多個請求合併為一個進行請求,比較常見的就是網頁中的 CSS Image Sprites。如果某個頁面內請求過多,也可以考慮做一定的請求合併。
2. 減少請求數據的大小:
對於post請求,body可以做gzip壓縮的,header也可以作數據壓縮(不過只支持http 2.0)。
3. 返回的數據的body也可以作gzip壓縮,body數據體積可以縮小到原來的30%左右。(也可以考慮壓縮返回的json數據的key數據的體積,尤其是針對返回數據格式變化不大的情況,支付寶聊天返回的數據用到了)
4. 根據用戶的當前的網路質量來判斷下載什麼質量的圖片(電商用的比較多)
圖像處理:
1.裁剪
2.Fresco:
Fresco | Fresco 中文說明
android緩存
1.LRUCache
GC:
1.GC過程:
JVM垃圾回收(GC)原理
內存:
1)內存分配:
JVM內存管理------JAVA語言的內存管理概述
多線程
1)線程池:
Java並發編程:線程池的使用
事件分發機制
1)Touch
Android 編程下 Touch 事件的分發和消費機制
演算法:
1.TopK堆解決
Java最小堆解決TopK問題
優化
1)Listview的優化
listview - Android
2)convertView是如何傳遞到adapter的getView方法的
ListView性能優化系列之三
Hybrid
1)java和JS的交互
Android中Java和JavaScript交互
Android中JavaScript和Native之間的Bridge
WebView開啟JavaScript腳本執行
WebView設置供JavaScript調用的交互介面。
- 客戶端和網頁端編寫調用對方的代碼。
-----------------------------------------------------------------------------------------------
感謝@ Jaeger 的修正,之前一直以為一個dialog彈出會觸發當前的activity的onPause函數,其實並沒有,onPause()觸發的條件為當前的actiivty即將要退出activityStack的top,然而dialog並不是一個activity所以無法讓activity退出的。寫了個demo的確是沒有彈出來onPause裡面的toast,詳細解釋stackoverflow也有一個比較好的答案,上鏈接大家更正一下,不要影響到面試最重要!
Android: Under what circumstances would a Dialog appearing cause onPause() to be called?
我最近在Android面試指南小專欄裡面寫了一篇稿子 (Android面試指南 - 演算法面試心得 - 小專欄),歡迎閱讀!
2017年10月更新
=======================
最近花了些時間將以前的一些資料重新整理了一下,需要的自取哈
GitHub - hujiaweibujidao/AndroidInterviews: Helpful materials for Android Interviews
去年找工作的時候整理了一份Android開發面試乾貨,原始資料地址[點擊這裡](Job Hunting | HujiaweiBujidao),由於當時製作的比較倉促,資料中存在不少錯誤或者過時的內容。一年快過去了,最近計劃重新整理下這些資料,目前已經整理了不少資料,希望對正在找工作的小夥伴們有點幫助。
建議結合下面的Android群英傳和Android開發藝術探索這兩本書的讀書筆記系列一起看,因為讀書筆記中涉及到的很多重要知識在這份面試總結中就不再重複介紹了。
整理的資料大部分都來源於書籍和網路,很多都已經標明了原文出處,若仍有侵權,請通知我,我立即道歉並刪除。
推薦資料和書籍
0. [Android官方培訓課程中文版](序言 | Android官方培訓課程中文版(v0.9.5)):熟悉Android開發基礎知識
1. Android群英傳:[(在線版讀書筆記點這裡)](Android Heroes Reading Notes)
2. Android開發藝術探索:[(在線版讀書筆記點這裡)](Art of Android Development Reading Notes)
3. Android開發進階-從小工到專家:提高Android開發技能必看
4. Java程序性能優化:修鍊Java的基本功
5. 劍指Offer:國內的經典面試書
6. 程序員面試金典:國外的經典面試書
7. Android面試題一天一題:[@goeasyway 總結的Android面試題](goeasyway - 簡書)
PS:千萬記得要去刷[LeetCode](LeetCode Online Judge)!
在此特別感謝戴方勤和唐磊總結的題解(對應`leetcode-cpp.pdf`和`leetcode-java.pdf`兩份文檔)
PPS:推薦下[九章演算法](九章演算法 - 幫助更多中國人找到好工作,矽谷頂尖IT企業工程師實時在線授課為你傳授面試技巧),一個不錯的在線刷題和演算法交流的網站,推薦關注他們的公眾號(九章演算法)
PPPS:演算法主要掌握搜索、排序、遞歸、分治、回溯、貪心、動規等常見的演算法思想,並結合數組、字元串、樹等類型的題目進行練習就好。常見數據結構和演算法的總結可以考慮閱讀我之前總結的[數據結構與演算法系列文章 在線版](HujiaweiBujidao)。
PPPPS:為了方便閱讀,我已經將這4份總結轉成了排版好的PDF格式的文件。另外,我博客中3本書的閱讀筆記也整理好放在相應的文件夾下面啦,這樣大家可以下載下來離線閱讀(可能存在部分鏈接失效的問題)。
最後,祝大家找工作一帆風順!
2016年9月更新
====== 去年的答案 ======
今年我找Android開發工作整理下來的乾貨,分享給大家,包含了Java,Android,網路三部分,祝找工作順利。
Job Hunting | HujiaweiBujidao
另外,推薦看《Android群英傳》和《Android開發藝術探索》這兩本經典的書
我的博客有這兩本書的讀書筆記,也歡迎閱讀
《Android群英傳》讀書筆記 Android Heroes Reading Notes
《Android開發藝術探索》讀書筆記 Art of Android Development Reading Notes
**下面的二維碼是我個人維護的微信公眾號「瀟澗技術專欄」,會不定期分享移動開發的核心技術,歡迎關注!**
http://weixin.qq.com/r/snUsNEzEfhEBrQhX9yCg (二維碼自動識別)
建議你看任玉剛老師的Android開發藝術真本書,更適合進階,也更有利於面試。
只面了T估計BA差不多。重視基礎,演算法把基本的都弄紮實了,網路把《tcp/ip卷一》弄透了就好,操作系統把《深入理解》和《現代操作系統》弄熟了就夠,JAVA把《編程思想》和《JAVA基礎》看兩遍就夠,Android開發懂基本的原理(handler,線程進程,view自定義,有自己的作品,太low的就別拿了)就行。筆試前去網上突擊一下, 剩下的全看運氣。
你們這群傢伙啊。。
快排,手寫快排就沒個人提么。
你連快排都寫不出來能過的了一面嗎朋友。。
春招招人應該不會太多吧,演算法這一塊一定要能手寫幾種排序,背也要背下來,校招問這個的太多了。還有計算機網路,TCP三次握手,窗口滑動之類的,也準備一下。安卓這一塊,別人不會問你會不會用第三方庫,別人會問你這個庫設計的思路。同時,motion event的分發機制,view的繪製過程,async task的實現原理,也比較容易問到吧。安卓優化技巧可以了解一下,必要的時候能吹一吹,什麼優化view層數啊,優化overdraw啊,優化圖片內存佔用啊。感覺差不多了…
你所考慮的只是技術能力,即過公司招聘筆試。然而像bat等大公司的校招面試太多輪了,基本上能考察到一個人的綜合素質。當然運氣也很重要。
其實吧,大公司、小公司和個人開發的應用,技術含量都差不多,只是複雜程度不同。理論上來說,能獨立完成一個有一定規模的應用,就已經達到業界要求了。
面試的話,涉及到演算法的知識,建議你到leetcode上刷刷題。祝順。建議關注github上的這個repository
derekargueta/Android-Interview-Questions · GitHub
共勉,看看春招還有啥好的機會
多做項目吧,感覺是沒有項目經驗的人才會談技術,項目經驗足的人,還扯什麼技術啊
985,211水平吧
去華為吧
推薦閱讀:
※MIUI 系統和原生系統用在 Nexus S 上,哪個更合適?
※HTC One 使用的 UltraPixel 技術具體指什麼?
※華為 C8600 刷機失敗,有什麼解決方案?
※Android 上好的攝影 App 有哪些?