個人簡介
本人棺棵,雙非末流一本,大四熄捍,有歡聚時代-BIGO公司的實習(xí)經(jīng)歷
過程
這里就先不說春招的過程了烛恤,直接上秋招。
秋招投得晚余耽,9月10號開始投的缚柏,特別懊悔!碟贾!在這里告誡要進(jìn)大廠的童鞋們一定一定記得:
互聯(lián)網(wǎng)大廠币喧,金七銀八!8さⅰI辈汀!V炀蕖史翘!
投提前批!提前批!提前批G矸怼必峰!
幾乎所有大廠都會在7月中下旬開始提前批,這個提前批一定一定不能錯過钻蹬,因為錯過了你會發(fā)現(xiàn)后面的正式批你連被撈的機(jī)會都沒了:鹨稀!因為他們在提前批都招滿了N是贰肝匆!血的教訓(xùn)啊。
我是在實習(xí)成功通過BIGO轉(zhuǎn)正面試溅潜,拿到BIGO意向書之后才離職术唬,開始準(zhǔn)備秋招的薪伏。
9月10號后投的騰訊滚澜,阿里,滴滴嫁怀,高德设捐,攜程等大廠都是正式批,正式批就是筆試完直接進(jìn)入備胎池塘淑,根本沒機(jī)會被撈起來面試萝招。
要知道互聯(lián)網(wǎng)寒冬,供嚴(yán)重大于求存捺,N多比你優(yōu)秀的求職者都是早早準(zhǔn)備好秋招槐沼,等著提前批就開沖的。金九銀十的思想早已不適用大廠的招聘捌治。但是岗钩!
金九銀十適用于:銀行,國企肖油,學(xué)校的招聘會兼吓、宣講會
這里也要強(qiáng)調(diào)一點就是,一定要對自己的實力有個準(zhǔn)確的把控森枪。想沖大廠视搏,可以。但是金九銀十的學(xué)校宣講會一定不能錯過县袱,一定要多跑線下的宣講會浑娜,要知道面試效果是:
現(xiàn)場面>視頻面>電話面
說句玩笑話,有可能現(xiàn)場面的那人剛好是你未來的部門leader式散,他見你骨骼驚奇筋遭,談吐幽默得體,特別聊得來,一眼萬年宛畦。面試過程也就你聊聊人生就讓你過了的瘸洛,是相當(dāng)有可能的。
結(jié)果
秋招凡是能讓我進(jìn)入面試環(huán)節(jié)的公司次和,除了字節(jié)跳動公司以外反肋,其他都拿到了offer。(字節(jié)跳動那場面試的面試官感覺很疲憊踏施,面試一點激情都沒有石蔗,而且部門做的是CND方向,跟我的方向相差實在太大畅形,二面完就沒后續(xù)了)
最后是簽了BIGO养距,老東家在聽說美團(tuán)給小sp價格之后毫不猶豫也給了個sp價,由于薪資待遇相差太大日熬,最終是放棄了美團(tuán)棍厌,選擇了老東家BIGO,總包差不多比美團(tuán)多出10w竖席。
公司? ? ? ? ? ? ????????????????????????????????結(jié)果
BIGO? ? ? ? ? ? ? ? ? ? sp耘纱,offer。實習(xí)電話面三輪+最終轉(zhuǎn)正現(xiàn)場面三輪+hr面
美團(tuán)? ? ? ? ? ? ? ? ? ? ? 小sp毕荐,offer∈觯現(xiàn)場面,一二面同一天走完憎亚,隔天三面
字節(jié)跳動? ? ? ? ? ? ? ?二面掛员寇。視頻面
CVTE? ? ? ? ? ? ? ? ? ? 算小sp?offer第美。實習(xí)電話一面視頻二三面蝶锋,校招是視頻面三輪
通過學(xué)校校招渠道的:
白山云科技? ? ? ? ? ? 白菜,offer斋日。筆試+現(xiàn)場兩輪技術(shù)+HR面牲览,在廈門薪資給力
點觸科技? ? ? ? ? ? ? ? 白菜,offer恶守。筆試+現(xiàn)場1v4技術(shù)面第献,965
美亞柏科? ? ? ? ? ? ? ? offer?hr后面就跟我失聯(lián)了...
這里補(bǔ)充一點:有中大廠的實習(xí)經(jīng)歷基本可以在眾多面試過程中秒殺面試官
干貨
首先廢話不多說兔港,很多人因為簡歷篩選就掛了庸毫,這里附上我自己的春招和秋招的簡歷区转。(至少除了銀行竖般、國企和一些卡學(xué)歷的公司以外的簡歷篩選都過了)
相信對比一下應(yīng)該對大家是有所啟發(fā)的。
分享干貨之前聪全,先分享一個陪伴我整個招聘過程的app:牛客载佳,炒雞棒的app炒事!
所以,一定要刷拍杌郏客討論帖挠乳! 一定要刷牛客討論帖姑躲! 一定要刷潘铮客討論帖!
其他app:
求職:攀蛭觯客卖怜,boss直聘,實習(xí)僧阐枣,51Job
薪資對比马靠,公司了解:OfferShow(媽媽再也不用擔(dān)心別HR宰啦),看準(zhǔn)侮繁,脈脈
學(xué)習(xí):怕侵啵客,簡書宪哩,掘金,慕課網(wǎng)第晰,博客園锁孟,CSDN,w3c(看我排列順序就懂我意思吧)
筆記茁瘦、計劃:oneNote品抽,印象筆記,TO-DO
一般來說甜熔,很多公司對了解分布式的人是很感興趣的圆恤,只要你的簡歷上寫了了解分布式,一般都會問到腔稀。其實我會的分布式知識也就幾個:分布式鎖盆昙、分布式事務(wù)、Dubbo焊虏、Zookeeper淡喜。這些里面只要了解一些基本都算是加分項。在剛學(xué)的時候诵闭,覺得分布式只是很難炼团,其實靜下心來學(xué)澎嚣,也沒有那么難。差不多一個月左右可以基本掌握瘟芝。
分布式鎖:使用數(shù)據(jù)庫怎么實現(xiàn)易桃?
? ? ? ? ? ? ? ? ? 使用Redis怎么實現(xiàn)?
? ? ? ? ? ? ? ? ? 使用Zookeeper怎么實現(xiàn)锌俱?
? ? ? ? ? ? ? ? ? 各種實現(xiàn)有什么問題颈抚?
? ? ? ? ? ? ? ? ? 比如鎖泄露、可重入這些問題嚼鹉。這里就不一一講解了贩汉,因為網(wǎng)上一搜分布式鎖,講的都很詳細(xì)锚赤。
分布式事務(wù):二段提交匹舞、TCC、本地消息表线脚。這三種會出現(xiàn)各種的優(yōu)缺點赐稽?這里看下博客也就基本都沒問題
Dubbo:學(xué)習(xí)Dubbo主要看官方文檔,官方文檔寫的非常好浑侥,里面從Dubbo的基礎(chǔ)再到實現(xiàn)細(xì)節(jié)姊舵。個人感覺最好的模塊是Dubbo中文網(wǎng)站的源碼導(dǎo)讀模塊。
這里靜下心來看寓落,很容易看懂括丁,把大致思路看懂了,面試基本沒什么問題伶选。
Zookeeper:Zookeeper其實了解起來很簡單史飞。買本書來看一下,幾天就會仰税。
上面這些東西都學(xué)得差不多了构资,分布式知識的基礎(chǔ)也就起來了。后面的消息隊列什么的我也還沒學(xué)陨簇,就不多說吐绵。學(xué)會這些的好處上面已經(jīng)說了,面試官對分布式知識很感興趣河绽,基本你寫就會被問到己单。
然后是項目,針對項目而言葵姥,一般來說簡歷上寫兩個項目左右就夠了荷鼠,大多數(shù)面試官一般會讓你挑一個最好的項目來說。所以多寫無意義(當(dāng)然是針對我這種做的項目不太好的人而言)榔幸。所以盡可能的優(yōu)化你的某一個項目允乐,多使用一些能吹的技術(shù)矮嫉。就比如我春招的時候就說我的項目里用到了多線程,定義不同的工作線程牍疏,解決了并發(fā)問題蠢笋、用UDP實現(xiàn)了TCP、Mysql查詢優(yōu)化等等鳞陨。
這些真的都是當(dāng)時做項目過程做到的嗎昨寞?并!沒厦滤!有援岩!? 品,你們細(xì)品
這是為了讓面試過程中掏导,說話主動權(quán)能在我手中享怀。也就是節(jié)奏可以把握在自己手上,一旦進(jìn)入自己的節(jié)奏趟咆,那我就可以讓面試官提問“我早已記得滾瓜亂熟的知識點”
舉個例子添瓷,面試官問到多線程,會先讓你說項目的多線程怎么運用的值纱,然后他會問一些跟這個知識點相關(guān)的“套路題”鳞贷,比如:線程池原理、操作流程虐唠、拒絕策略搀愧、為什么使用線程池(好處)、線程池種類(Fixed凿滤、Single妈橄、Cached....),這些不同種類的線程池具體怎么實現(xiàn)的翁脆?使用與什么場景?
基本上來說鼻种,面試官讓你介紹項目的時候反番,主動權(quán)就在你這邊,你需要將你項目使用的技術(shù)叉钥、優(yōu)化點都說出來罢缸,然后引導(dǎo)面試官向某一個方向問問題。比如你提到了用了線程池投队,很多面試官也就會問你線程池的問題枫疆。
然后分享一下自己自我介紹的套路:一般來說,自我介紹先介紹名稱敷鸦、學(xué)校息楔、專業(yè)寝贡,然后是自己做的方向(比如Java后端)。這些完了以后介紹自己學(xué)習(xí)的東西值依,比如java圃泡,從基本的語法到Jvm,java高并發(fā)(給面試官拋出一些可以問的東西)愿险,然后是框架颇蜡、提一下項目.....
上面這些都挺套路的,套路完了辆亏,還是要看基本功风秤。來了基本功!0邕丁缤弦!
對于Java開發(fā)來說,JVM是一個必備知識點甫匹。
一甸鸟、JVM內(nèi)存模型。
哪些是線程私有的兵迅?
虛擬機(jī)棧棧幀對應(yīng)什么抢韭?
虛擬機(jī)棧中局部變量表、操作數(shù)棧恍箭、動態(tài)鏈接等都有什么作用刻恭?這里提一下,動態(tài)鏈接是相對于靜態(tài)解析而言的扯夭,靜態(tài)解析也就是在類加載階段有一個解析階段鳍贾,是將符號引用轉(zhuǎn)化為直接引用,但是在這個階段不一定能完全解析方法地址交洗,也就是在不能判斷方法執(zhí)行版本時骑科,比如重載的方法時,就需要靠動態(tài)鏈接來找到對應(yīng)方法构拳。
堆的結(jié)構(gòu)咆爽,如何劃分?
Eden置森、To Survivor斗埂、From Survivor作用各是什么?
GC時這些部分有什么功能凫海?比如一個面試官讓你介紹GC呛凶,首先應(yīng)該介紹什么樣的對象會被GC,這里就要介紹引用計數(shù)法和可達(dá)性分析法行贪。然后是GC算法漾稀,各個算法優(yōu)缺點模闲,然后是垃圾收集器,一般來說主要了解CMS和G1县好,當(dāng)然其它能了解最好也要了解围橡。然后就是JVM調(diào)優(yōu),jvm參數(shù)缕贡、調(diào)優(yōu)命令:jstat翁授、jmap、jstack晾咪、jps等等收擦。最好自己用一下。后面的至于類加載機(jī)制谍倦、雙親委派模型都可以通過《深入理解Java虛擬機(jī)》這本書了解塞赂。
二、Java高并發(fā)
一般來說昼蛀,很多時候面試官會讓寫單例模式宴猾,我自己寫的一般都是volatile 雙重檢查加鎖的形式。主要原因在于這里可以引入介紹volatile和synchronized叼旋。volatile保證有序性和可見性仇哆。有序性很簡單,就是內(nèi)存屏障夫植,禁止指令重排序讹剔。可見性一般來說我會結(jié)合緩存一致性協(xié)議來說详民,MESI延欠,具體深入對具體的處理器中的緩存條目進(jìn)行操作,然后處理器和總線通信等等沈跨。這里可以參考《java多線程編程實戰(zhàn)指南》由捎,講的很詳細(xì)。然后是synchronized關(guān)鍵字的鎖的實現(xiàn)饿凛,和Lock的區(qū)別隅俘,做出的優(yōu)化:適應(yīng)性自旋鎖、偏向鎖笤喳、輕量級鎖,鎖什么條件下回升級碌宴?這些說完杀狡,Lock的實現(xiàn)?AQS贰镣?可重入實現(xiàn)呜象?讀寫鎖實現(xiàn)膳凝?這些可以參考《java并發(fā)編程的藝術(shù)》這本書,講的非常詳細(xì)恭陡、基本從源碼的角度來說蹬音。總之java并發(fā)可以問的問題很多休玩,我個人主要就看了以上我提到的兩本書著淆,不會的地方上網(wǎng)查查就行。
三拴疤、Java集合
一般來說集合主要了解ArrayList永部、LinkedList,它們之間的區(qū)別呐矾。HashMap苔埋、Maps.synchronizedMap、ConcurrentHashMap蜒犯。這里建議去了解一下java的十大并發(fā)容器组橄。針對于HashMap,需要了解1.8優(yōu)化使用了紅黑樹和尾插法罚随。然后是需要詳細(xì)介紹put get resize三個操作玉工,難點在resize,比如當(dāng)前節(jié)點在新的數(shù)組會映射到哪一個位置毫炉?怎么判斷瓮栗?然后是ConcurrentHashMap使用的分段鎖,繼承可重入鎖實現(xiàn)瞄勾,1.8使用synchronized關(guān)鍵字 CAS操作實現(xiàn)费奸。上面這些最好都讀源碼。Set的話一般都是參考Map來實現(xiàn)的进陡,也就是只使用Map的key來存取值愿阐。
HashMap,ConcurrentHashMap二者在1.6/1.7/1.8三個JDK版本中的源碼一定要去閱讀V壕巍缨历!可以選擇找個權(quán)威一點的博客,跟著博主一起閱讀糙麦。
四辛孵、操作系統(tǒng)
進(jìn)程線程、進(jìn)程狀態(tài)——用戶態(tài)轉(zhuǎn)內(nèi)核態(tài)赡磅,為什么要轉(zhuǎn)魄缚?虛擬內(nèi)存?死鎖?進(jìn)程通信冶匹?頁式段式段頁式习劫?
五、計網(wǎng)
IP頭部嚼隘,UDP和TCP頭部诽里?
TCP和UDP,主要了解三次握手四次揮手飞蛹,為什么三次谤狡,為什么四次?為什么揮手后要等待2MSL才中斷桩皿?什么是2MSL豌汇?
TCP快速重傳、滑動窗口泄隔、流量控制拒贱、擁塞控制、慢啟動機(jī)制等佛嬉。一般來說面試官應(yīng)該對擁塞控制和流量控制更感興趣逻澳。
HTTP請求格式,請求行暖呕、請求頭斜做,請求方法?RESTFUL湾揽?請求狀態(tài)碼瓤逼?HTTPS,對稱加密和非對稱加密库物?以非對稱加密的方式傳遞對稱加密的秘鑰霸旗。
六、數(shù)據(jù)庫
然后是Mysql戚揭,Mysql要求基本的增刪改查語句都要會诱告。
然后一般來說Mysql的調(diào)優(yōu)(怎樣排查執(zhí)行慢的sql):慢查詢?nèi)罩尽xplain分析查看是否走索引民晒,沒有索引創(chuàng)建索引精居,有的話判斷索引為什么失效?索引什么時候會失效潜必?最左匹配原則靴姿、or條件兩邊有一邊沒有使用索引、字段類型隱式轉(zhuǎn)換磁滚、like以%開頭空猜、表中數(shù)據(jù)較少導(dǎo)致全表比索引快,這些條件都會導(dǎo)致索引失效。
索引的底層實現(xiàn)辈毯?介紹B+ 樹?這里主要先介紹BST二叉搜索樹搜贤,然后從磁盤I/O的角度介紹B樹谆沃。然后介紹B 樹所做的優(yōu)化,即非葉子節(jié)點值存儲key仪芒,這樣這些節(jié)點可以存儲更多key唁影,也就降低樹高度,減少I/O次數(shù)掂名;葉子節(jié)點以鏈表形式連接据沈,方便范圍搜索。
然后是聚簇索引和非聚簇索引饺蔑。一般來說聚簇索引B+ 樹的葉子節(jié)點存儲的數(shù)據(jù)锌介,非聚簇索引葉子節(jié)點存儲指針,所以非聚簇索引要多一次I/O操作才能讀取到數(shù)據(jù)猾警。
最后就是Mysql的主從孔祸,主從原理和機(jī)制。Mysql我看的書是《Mysql技術(shù)內(nèi)幕》发皿,講得很具體崔慧。
Redis,redis只用一本書就夠了穴墅,《Redis的設(shè)計與實現(xiàn)》惶室。拓展問題有緩存穿透和緩存雪崩?怎么解決玄货?緩存穿透可以使用布隆過濾器皇钞、緩存雪崩可以設(shè)置隨機(jī)過期時間。Redis還是有很多學(xué)問的誉结,需要多看一些redis實戰(zhàn)方面的使用技巧鹅士。
七、算法
了解數(shù)據(jù)結(jié)構(gòu)以后就刷leetcode或者《劍指offer》吧惩坑。劍指offer是一定要在招聘會之前刷一遍的掉盅,如果你沒有刷一遍,那么我建議你以舒,不要找工作了趾痘,就那些個題你都不愿意啃,那咱們不合適蔓钟。
我會的基本也就這些了永票。書的話推薦這些:《Thinking in?Java》、《大話設(shè)計模式》、《深入理解Jvm》侣集、《Java EE互聯(lián)網(wǎng)輕量級框架整合開發(fā)— —SSM框架》键俱、《java多線程編程實戰(zhàn)指南》、《java并發(fā)編程的藝術(shù)》世分、《數(shù)據(jù)結(jié)構(gòu)與算法》编振、《Redis設(shè)計與實現(xiàn)》、《鳥哥私房菜》臭埋、《劍指offer》踪央、《ZooKeeper:分布式過程協(xié)同技術(shù)詳解》、《MySQL技術(shù)內(nèi)幕:InnoDB存儲引擎(第2版)》瓢阴、《java8實戰(zhàn)》等等畅蹂。我認(rèn)為學(xué)習(xí)技術(shù)不能單了解別人所說的就可以了,最主要是要問為什么荣恐。還有就是要沉下心來學(xué)習(xí)液斜,不斷的向前行。
這里附上一些面經(jīng)募胃,我比較少記錄面筋旗唁,因為講道理,面經(jīng)在疟允客的討論帖上面一找一大把检疫。。祷嘶。但是建議大家還是把每場的面筋和復(fù)習(xí)的每個知識點都記下來屎媳。至少在春招沒找到工作的時候,秋招你還知道復(fù)習(xí)啥论巍。
Java并發(fā)
ThreadLocal 類的底層實現(xiàn)是怎么實現(xiàn)的?
Java基礎(chǔ)+源碼
用過哪些Map,都有什么區(qū)別鞋怀,HashMap是線程安全的嗎,并發(fā)下使用的Map是什么双泪,他們內(nèi)部原理分別是什么,比如hashcode密似,擴(kuò)容等
JVM
談一談Java內(nèi)存管理(運行時數(shù)據(jù)區(qū))
項目
redis不同數(shù)據(jù)結(jié)構(gòu)的應(yīng)用
Linux
Mysql
鎖的類型村斟、五類并發(fā)問題贫导、三種封鎖協(xié)議
Redis
Redis 在單線程下實現(xiàn)高并發(fā)的蟆盹?核心的機(jī)制是什么孩灯?
redis不同數(shù)據(jù)結(jié)構(gòu)的應(yīng)用
Redis數(shù)據(jù)結(jié)構(gòu)之Hash
Redis數(shù)據(jù)結(jié)構(gòu)之String
Redis 和 數(shù)據(jù)庫是怎么保持一致性的?
redis的更新策略(先操作數(shù)據(jù)庫還是先操作緩存)
Spring和Mybatis
Spring 和 SpringBoot 的區(qū)別日缨?
除了@ResponseBody钱反,controller層如何標(biāo)準(zhǔn)返回給前端所要的數(shù)據(jù)類型?
操作系統(tǒng)
進(jìn)程中什么數(shù)據(jù)可以給線程用匣距?
場景題
一億的數(shù)據(jù),怎么樣進(jìn)行去重哎壳?對這些數(shù)據(jù)做排序毅待?并取出TOP K?
假如說 Word 文件有 4 M 刹泄,內(nèi)存只有 2 M外里,怎么處理這種情況 ?
需要排序的數(shù)據(jù)很大盅蝗,比內(nèi)存還大,這種情況該怎么處理姆蘸?
購物車為什么不存在session里面墩莫?為什么都存在cookie里?
分布式逞敷、中間件
RocketMq設(shè)置CONSUME_FROM_LAST_OFFSET的問題
RocketMQ生產(chǎn)者消費者介紹及相關(guān)配置參數(shù)
Kafka推捐、RabbitMQ裂问、RocketMQ等消息中間件的介紹和對比
計算機(jī)網(wǎng)絡(luò)
HTTP1.0、HTTP1.1 和 HTTP2.0 的區(qū)別
既然說 HTTP 是無狀態(tài)的牛柒,那服務(wù)器怎么記住上次請求的用戶堪簿?
從瀏覽器中輸入網(wǎng)址到看到網(wǎng)頁之間發(fā)生了什么焰络?