基本流程
校招的套路基本都是宣講會 — 筆試 — 技術一面 — 技術二面(大公司會到技術三面乃至終面)。
校招信息獲取渠道
- 各大微信公眾號(搜索「城市名+校招」)
- 校招網(wǎng)站(搜索「企業(yè)名+校招」)可以找到企業(yè)的校招信息惨奕。
- 第三方招聘網(wǎng)站仿贬。這里我推薦「海投網(wǎng)」,宣講會信息十分全墓贿。
注:不建議選擇「海投」的方式茧泪,這種耗費大量時間精力的方式, 投入產(chǎn)出比可能比較低聋袋。根據(jù)自己的興趣队伟,公司的規(guī)模,公司的發(fā)展前景等幽勒,有選擇性地投遞簡歷嗜侮。一個人的精力是有限的,把精力投入在優(yōu)選出來的公司上啥容,效果可能更優(yōu)锈颗。
找準崗位方向
在找工作之前,明確自己的技術方向咪惠,是一件非常重要的事情击吱。大多數(shù)人往往會被某些所謂的熱門技術,高薪酬等所誘惑遥昧,懷疑自己的方向選擇覆醇,什么崗位都去投一下簡歷。這在我看來是非常不好的炭臭,盲目地投遞簡歷十分浪費時間精力永脓。
如果你本來就參加過實驗室項目和比賽,我想你對自己的技術方向定位應該是很清晰的了鞋仍。
閱讀大量筆試題和面試題
第一關的筆試題考核常摧,是為了篩掉基礎差的人⊥矗基礎差的人落午,在工作中很難去解決技術問題,要么解決問題速度非常慢那婉。
所以說筆試是首要解決的問題板甘。一般來說筆試題考的范圍比較廣,占比最大的是「專業(yè)技術」和「數(shù)據(jù)結(jié)構」详炬⊙卫啵「專業(yè)技術」指的是你的技術方向∏好眨「數(shù)據(jù)結(jié)構」指 算法和數(shù)據(jù)結(jié)構在跳。越是大公司,越喜歡考察算法和數(shù)據(jù)結(jié)構基礎隐岛。我參加的大部分筆試基本上 1/2 數(shù)據(jù)結(jié)構題 + 1/4 算法 + 1/4 java猫妙。(沒看錯,就是招的Android開發(fā)聚凹。)
當初我刷題是用的「鸥钭梗客網(wǎng)」齐帚,網(wǎng)站體驗不錯,題目質(zhì)量也不錯彼哼。同時上面也有一些校招信息对妄。其它同類型的刷題網(wǎng)站,例如 leetcode 敢朱,就看自己喜好了剪菱。
熱門技術了解
除了基礎外,你還應該對其他領域的知識有多少有所涉獵拴签。你需要多了解一點新技術與科技前沿孝常,你才能和面試官談笑風生。
博客
從產(chǎn)品角度講, 一個長期的價值博客是一份很好的簡歷蚓哩。
從技術角度講,持續(xù)的寫作逼迫你不斷學習构灸,你將害怕有一天寫無可寫。
不過因為應屆生熟悉大量筆試題和面試題需要花費相當多的時間杖剪,對于后面要找工作又不想沒有完成技術文章累積的冻押,可以寫筆試面試題文章來完成每周撰寫技術文章的任務。當然盛嘿,文章不能是簡單的答案洛巢,還需要自己的分析和理解。
面試的準備
準備 2 份自我介紹次兆,一份 2 分鐘稿茉,一份 5 分鐘。根據(jù)情況選擇不同時長的自我介紹芥炭。
建議自我介紹包括這些部分:
- 客觀情況介紹漓库,姓名,學校园蝠,專業(yè)渺蒿,學歷,應屆還是非應屆
- 應聘職位
- 和應聘職位有關的學習和實習經(jīng)歷彪薛。(成績茂装、各種榮譽……挑閃光點說,因為你說的善延,待會兒可能就會變成他面的重點)
- 特別突出的個人能力(以獲得的獎項為依據(jù))少态。如果沒有,略過易遣。
- 為什么申請這個職位彼妻,對公司的了解,對職位的理解并與自身匹配,對自己的定位侨歉,對未來工作的期望
面試官會從你的簡歷里挖什么屋摇?
面試官和你的對話一般是從簡歷里你熟悉的內(nèi)容展開的,所以你需要好好回顧你的項目幽邓。
具體項目面試需要準備哪些方面摊册,面試官會問些什么內(nèi)容,可以閱讀怎樣一個漂亮的項目介紹 And 面試官到底在考察什么颊艳?
最后
面試還是要保持良好的心態(tài),只要充分地展示平時自己的所學就可以了忘分。不要把面試當作面試棋枕,看作一次技術交流,把心態(tài)從我要找到一份工作轉(zhuǎn)變?yōu)槲乙ㄟ^面試去發(fā)現(xiàn)不足妒峦、提升自己重斑,這樣就會平和多了。應屆面試者還可以和面試官交流你項目中解決方案的優(yōu)化肯骇,對比企業(yè)級項目采用的不同的方式窥浪,也可以準備好自己的技術疑問,面試官一般會很愿意解答笛丙,你將有很大收獲漾脂。
那么接下來,即將著手準備校招胚鸯,從哪里開始準備呢骨稿?首先是基礎。
基礎這東西姜钳,各個公司都很看重坦冠,尤其是大公司,他們看中應屆生的潛力哥桥,舍得花精力去培養(yǎng)辙浑,所以基礎是重中之重。項目經(jīng)歷少怎么辦拟糕?那就去打牢基礎判呕。
Java
- 多線程
這是必問的一塊了
常用的線程池有幾種?
這幾種線程池之間有什么區(qū)別和聯(lián)系已卸?線程池的實現(xiàn)原理是怎么樣的佛玄?
給你一些具體的場景,讓你回答這種場景該使用什么樣的線程池比較合適累澡。
多線程同步
實現(xiàn)多線程的兩種方法:Thread與Runable梦抢。
線程同步的方法:sychronized、lock愧哟、reentrantLock等奥吩。
-
鎖的等級:方法鎖哼蛆、對象鎖、類鎖霞赫。
有前輩已經(jīng)總結(jié)了40個Java 多線程的面試題腮介,可以看看
網(wǎng)絡
-
IO
IO 分為 File IO 和 Socket IO,F(xiàn)ile IO 基本上是不會問的端衰,問也問不出什么來叠洗,平時會用就好了,另外記得 File IO 都是阻塞 IO旅东。
Socket IO 是比較重要的一塊灭抑,要搞懂的是阻塞 / 非阻塞的區(qū)別、同步 / 異步的區(qū)別抵代,借此理解阻塞 IO腾节、非阻塞 IO、多路復用 IO荤牍、異步 IO 這四種 IO 模型案腺,Socket IO 如何和這四種模型相關聯(lián)。
這是基本一些的康吵,深入一些的話劈榨,就會問 NIO 的原理、NIO 屬于哪種 IO 模型涎才、NIO 的三大組成等等鞋既,這有些難,當時我也是研究了很久才搞懂 NIO耍铜。提一句邑闺,NIO 并不是嚴格意義上的非阻塞 IO 而應該屬于多路復用 IO,面試回答的時候要注意這個細節(jié)棕兼,講到 NIO 會阻塞在 Selector 的 select 方法上會增加面試官對你的好感陡舅。
注解
常見關鍵字的意義
面向?qū)ο蟮幕A知識
GC 類型,時機等
字符編碼
九種基本數(shù)據(jù)類型的大小伴挚,以及他們的封裝類靶衍。
Switch 能否用 String 做參數(shù)?
equals 與 == 的區(qū)別茎芋。
Object有哪些公用方法颅眶?
Java的四種引用,強弱軟虛田弥,用到的場景涛酗。
try catch finally,try里有return,finally還執(zhí)行么商叹?
Override 和 Overload 的含義去區(qū)別燕刻。
Interface 與 abstract 類的區(qū)別。
Static class 與non static class的區(qū)別剖笙。
java多態(tài)的實現(xiàn)原理卵洗。
寫出生產(chǎn)者消費者模式。
ThreadLocal 的設計理念與作用弥咪。
ThreadPool 用法與優(yōu)勢过蹂。
wait() 和 sleep() 的區(qū)別。
foreach 與正常 for 循環(huán)效率對比聚至。
反射的作用與原理
泛型常用特點榴啸,List<String>能否轉(zhuǎn)為List<Object>
解析 XML 的幾種方式的原理與特點:DOM、SAX晚岭、PULL
JNI 的使用
JVM
- 內(nèi)存模型以及分區(qū),需要詳細到每個區(qū)放什么勋功。
- 堆里面的分區(qū):Eden坦报,survival from to,老年代狂鞋,各自的特點片择。
- 對象創(chuàng)建方法,對象的內(nèi)存分配骚揍,對象的訪問定位字管。
- GC的兩種判定方法:引用計數(shù)與引用鏈。
- GC的三種收集方法:標記清除信不、標記整理嘲叔、復制算法的原理與特點,分別用在什么地方抽活,如果讓你優(yōu)化收集方法硫戈,有什么思路?
- GC收集器有哪些下硕?CMS收集器與G1收集器的特點丁逝。
- Minor GC與Full GC分別在什么時候發(fā)生?
- 幾種常用的內(nèi)存調(diào)試工具:jmap梭姓、jstack霜幼、jconsole。
- 類加載的五個過程:加載誉尖、驗證罪既、準備、解析、初始化萝衩。
- JVM中 OOM 你遇到過哪些情況回挽,SOF 你遇到過哪些情況。
JVM問題沒怎么變猩谊,內(nèi)存模型和GC算法這塊問得比較多
操作系統(tǒng)
- 線程和進程的關系
- 線程安全
- 死鎖的產(chǎn)生和解決
- 進程的幾種狀態(tài)
- IPC 幾種通信方式
- 虛擬地址千劈、邏輯地址、線性地址牌捷、物理地址的區(qū)別
- 什么是虛擬內(nèi)存
數(shù)據(jù)庫
一些基本的像 union 和 union all 的區(qū)別墙牌、left join、幾種索引及其區(qū)別就不談了暗甥,比較重要的就是數(shù)據(jù)庫性能的優(yōu)化喜滨,如果對于數(shù)據(jù)庫的性能優(yōu)化一竅不通,那么有時間撤防,還是建議你在面試前花一兩天專門把 SQL 基礎和 SQL 優(yōu)化的內(nèi)容準備一下虽风。沒時間的話可以不復習,一般公司的面試數(shù)據(jù)庫比重不高寄月。
eg:
- 數(shù)據(jù)庫存儲過程
TCP/IP
OSI與TCP/IP各層的結(jié)構與功能辜膝,都有哪些協(xié)議。
TCP與UDP的區(qū)別漾肮。
TCP報文結(jié)構厂抖。
TCP的三次握手與四次揮手過程,各個狀態(tài)名稱與含義克懊,TIMEWAIT的作用忱辅。
TCP擁塞控制。
TCP滑動窗口與回退N針協(xié)議谭溉。
Http的報文結(jié)構墙懂。
Http的狀態(tài)碼含義。
Http request的幾種類型扮念。
Http1.1和Http1.0的區(qū)別
Http怎么處理長連接垒在。
Cookie與Session的作用于原理。
電腦上訪問一個網(wǎng)頁扔亥,整個過程是怎么樣的:DNS场躯、HTTP、TCP旅挤、OSPF踢关、IP、ARP粘茄。
Ping的整個過程签舞。ICMP報文是什么秕脓。
C/S模式下使用socket通信,幾個關鍵函數(shù)儒搭。
IP地址分類吠架。
路由器與交換機區(qū)別。
網(wǎng)絡其實大體分為兩塊搂鲫,一個TCP協(xié)議傍药,一個HTTP協(xié)議,只要把這兩塊以及相關協(xié)議搞清楚魂仍,一般問題不大拐辽。
算法和數(shù)據(jù)結(jié)構
常用的數(shù)據(jù)結(jié)構概念的實現(xiàn)原理
- array
- vector
- list
- set
- map
- tree
非常重要,也是必問的內(nèi)容擦酌【阒睿基本上就是 List、Map赊舶、Set睁搭,問的是各種實現(xiàn)類的底層實現(xiàn)原理,實現(xiàn)類的優(yōu)缺點笼平。
集合要掌握的是 ArrayList介袜、LinkedList、Hashtable出吹、HashMap、ConcurrentHashMap辙喂、HashSet 的實現(xiàn)原理捶牢,能流利作答,當然能掌握 CopyOnWrite 容器和 Queue 是再好不過的了巍耗。另外多說一句秋麸,ConcurrentHashMap 的問題在面試中問得特別多,大概是因為這個類可以衍生出非常多的問題炬太,關于 ConcurrentHashMap灸蟆,可以參考以下問題:
(1)ConcurrentHashMap 的鎖分段技術
(2)ConcurrentHashMap 的讀是否要加鎖,為什么
(3)ConcurrentHashMap 的迭代器是強一致性的迭代器還是弱一致性的迭代器
題目示例:
HashMap實現(xiàn)原理
HashTable和HashMap區(qū)別
Hashtalbe與ConcurrentHashMap區(qū)別
ArrayList亲族、LinkedList炒考、Vector的區(qū)別。
Map霎迫、Set斋枢、List、Queue知给、Stack的特點與用法瓤帚。
HashMap 和 ConcurrentHashMap 的區(qū)別
鏈表與數(shù)組描姚。
隊列和棧,出棧與入棧戈次。
鏈表的刪除轩勘、插入、反向怯邪。
字符串操作绊寻。
Hash表的hash函數(shù),沖突解決方法有哪些擎颖。
各種排序:冒泡榛斯、選擇、插入搂捧、希爾驮俗、歸并、快排允跑、堆排王凑、桶排、基數(shù)的原理聋丝、平均時間復雜度索烹、最壞時間復雜度、空間復雜度弱睦、是否穩(wěn)定百姓。
快排的partition函數(shù)與歸并的Merge函數(shù)。
對冒泡與快排的改進况木。
二分查找垒拢,與變種二分查找。
二叉樹火惊、B+樹求类、AVL樹、紅黑樹屹耐、哈夫曼樹尸疆。
二叉樹的前中后續(xù)遍歷:遞歸與非遞歸寫法,層序遍歷算法惶岭。
圖的BFS與DFS算法寿弱,最小生成樹prim算法與最短路徑Dijkstra算法。
KMP算法按灶。
排列組合問題脖捻。
動態(tài)規(guī)劃、貪心算法兆衅、分治算法地沮。(一般不會問到)
大數(shù)據(jù)處理:類似10億條數(shù)據(jù)找出最大的1000個數(shù).........等等
前序中序 輸出層次遍歷序列
求樹高
是否是平衡二叉樹
廣度遍歷嗜浮、深度遍歷
動態(tài)規(guī)劃和貪心的區(qū)別
大整數(shù)加、減摩疑、乘危融、除、求模運算實現(xiàn)
很多整數(shù)雷袋,找其中出現(xiàn)次數(shù)最多的那個數(shù)
單鏈表翻轉(zhuǎn)(兩個指針如何實現(xiàn))吉殃、查找、刪除楷怒、插入以及雙向鏈表蛋勺、有序鏈表合并
判斷一個整數(shù)是否是2的整數(shù)次冪.(n&(n-1))
常見排序算法的實現(xiàn)以及穩(wěn)定性(快排跟歸并考的很多)
字符串翻轉(zhuǎn)(O(n))、匹配(KMP算法)
最長遞增子序列(nlogn的算法)
鏈表判斷是否有環(huán)鸠删,環(huán)的入口抱完,兩個鏈表是否相交(快慢指針)。
指定一個數(shù)組刃泡,求2個數(shù)的和等于指定的和(某一個數(shù))巧娱,如果是3,4,5,n個等于個的和(某一個數(shù))呢烘贴?(可以看作背包問題)
跳臺階問題
設計模式
- 單例(懶漢禁添、餓漢)
- 工廠
- 適配器
- 責任鏈
- 觀察者
面試中關于設計模式的問答主要是三個方向:
(1)你的項目中用到了哪些設計模式,如何使用
(2)知道常用設計模式的優(yōu)缺點
(3)能畫出常用設計模式的 UML 圖
Android
Activity啟動模式區(qū)別
四大組件生命周期
如何對產(chǎn)生 ANR 代碼定位
檢查內(nèi)存泄露的工具
橫豎屏切換時桨踪,Activity 的生命周期以及如何設置橫屏或者豎屏
Android 主線程與子線程的理解
-
怎么做性能優(yōu)化
- UI優(yōu)化
- 減少過度繪制
- 不必要嵌套布局
- 利用include標簽來復用控件等等
- 內(nèi)存優(yōu)化
- 緩存
- UI優(yōu)化
-
Android的屏幕適配方案
圖片適配
不同像素密度的手機加載工程資源文件(res)中不同資源圖片dimens.xml文件適配
dimens.xml存在于工程資源(res)文件夾中不同values(如:value-1280x720老翘、value-800x480)文件夾下,可用于指定控件大小锻离,不同像素密度手機加載不同values文件夾下的dimens.xml文件布局文件適配(工程比較浩大铺峭,不常用)
不同分辨率的手機,加載不同的布局文件已達到適配效果纳账。創(chuàng)建多個layout(如:layout-1280x720、layout-800x480)文件夾用于存放不同像素密度手機所需布局文件捺疼。代碼適配
通過android相應api獲取當前手機的寬高像素值疏虫,按比例分配屏幕中控件的寬高以達到適配效果權重適配
通過android提供的(權重)剩余空間分配,已達到適配效果
ListView優(yōu)化
Java具備內(nèi)存回收機制啤呼,為什么Android還會出現(xiàn)內(nèi)存泄露卧秘?寫出三個內(nèi)存泄露的場景。
說說你知道的當前幾個比較火比較流行的開源框架(比如 Volley ,Universnal-image-loader等)官扣,是怎么用的翅敌,研究過他們的源碼沒?
Android 虛擬機與 Java 的 Jvm區(qū)別
MVC 惕蹄、MVP 和 MVVM 架構
Handler 消息機制
AsyncTask 的原理
OOM 原因蚯涮、如何避免治专?
-
內(nèi)存泄露的原因
- 數(shù)據(jù)庫的 cursor 沒有關閉
- 構造 Adapter 沒有使用緩存 contentview
- 調(diào)用 registerReceiver() 后未調(diào)用 unregisterReceiver()
- 未關閉 InputStream / OutputStream
- Bitmap使用后未調(diào)用recycle()
- Context泄漏
三級緩存步驟
其他
C/C++相關
- 虛析構、模板和宏
- 虛函數(shù)實現(xiàn)機制
- vector與list的區(qū)別遭顶,map是如何實現(xiàn)的张峰,查找效率是多少
- extern 關鍵字有什么用
- malloc和new的區(qū)別,能否malloc(1.2G)
linux以及操作系統(tǒng)相關
- 內(nèi)存池實現(xiàn)
- 進程間通信機制
- Linux ps命令棒旗,以及看內(nèi)存當前使用狀態(tài)的命令
- 進程的內(nèi)存空間
關于面試喘批,你可能還想知道: