3W字經(jīng)驗(yàn)總結(jié),告訴你如何準(zhǔn)備校招!
前期準(zhǔn)備
校招在我看來(lái)是一件時(shí)間特別長(zhǎng)的戰(zhàn)爭(zhēng),為什么這么說(shuō)呢,因?yàn)閺哪汩_(kāi)始準(zhǔn)備校招的那一刻開(kāi)始,到你正式拿到offer的,并且確定去哪一家公司時(shí),時(shí)間差不多一年左右,這個(gè)時(shí)間其實(shí)比考研、公務(wù)員等都要長(zhǎng),你可能會(huì)問(wèn)為什么需要這么長(zhǎng)的時(shí)間,當(dāng)然,這也跟個(gè)人的具體情況相關(guān),每個(gè)人也會(huì)不一樣的,但是,也差不了多少,大神級(jí)別的除外了。
這篇文章主要還是講講校招的整個(gè)流程,需要準(zhǔn)備什么,遇到問(wèn)題時(shí)怎么去解決,怎么去調(diào)整心態(tài),這些都是很重要的,我也是把我個(gè)人的真實(shí)經(jīng)歷告訴大家,希望能夠?qū)Υ蠹矣袔椭?/p>
選擇方向
在我看來(lái),第一件事情應(yīng)該就是選擇你找工作的方向,這件事情應(yīng)該在你開(kāi)始找工作的半年前左右確定,比如,你2021年3月開(kāi)始春招找工作,那么,我建議你最好在現(xiàn)在,也就是2020年10月就確定找工作的方向,為什么要這么早,后面我會(huì)具體分析。
說(shuō)到工作的方向,就現(xiàn)在的互聯(lián)網(wǎng)公司來(lái)說(shuō),其實(shí)可以選擇的方向還是特別多的,也是看個(gè)人的選擇,當(dāng)然,也是可以有一些數(shù)據(jù)來(lái)做參考的;現(xiàn)在的校招的主流的方向有:算法,后端開(kāi)發(fā),前端開(kāi)發(fā),測(cè)試開(kāi)發(fā),運(yùn)營(yíng)開(kāi)發(fā),客戶(hù)端開(kāi)發(fā),測(cè)試等等,這些崗位通常來(lái)說(shuō)是選擇最多的,對(duì)于幾個(gè)崗位,我也給一下自己的建議,可以供參考。
首先是算法,算法這個(gè)方向,在我剛剛讀研究生的時(shí)候也是有想過(guò)的,但是,隨著深入的了解,以及對(duì)于市場(chǎng)對(duì)于這個(gè)崗位的需求分析,后來(lái),我就慢慢的放棄了,當(dāng)然這只是一方面的原因;對(duì)于算法崗位,現(xiàn)在比較熱門(mén)的就是深度學(xué)習(xí)、機(jī)器學(xué)習(xí)了,由于CV方向特別火爆,這里的火爆并不是說(shuō)好找工作,而是競(jìng)爭(zhēng)太大了,就今年的算法崗位來(lái)說(shuō),或者說(shuō)從去年開(kāi)始,基本上就是神仙打架了,沒(méi)有一兩篇頂刊論文,你都不好意思說(shuō)你是搞算法的,所以,如果你想找算法的工作,我的建議是,第一,是不是研究生,第二,是不是211/985以上,或者更直接點(diǎn)是不是985以上的學(xué)校,第三,有沒(méi)有發(fā)過(guò)好的期刊的論文,我覺(jué)得這三點(diǎn)至少滿(mǎn)足兩點(diǎn)以上才可以考慮去找算法的工作,否則,建議轉(zhuǎn)開(kāi)發(fā)。
接下來(lái)說(shuō)一下開(kāi)發(fā),開(kāi)發(fā)現(xiàn)在其實(shí)競(jìng)爭(zhēng)壓力也不小,想進(jìn)大廠的壓力其實(shí)也很大,因?yàn)樾枨缶瓦@么多,當(dāng)然,跟算法比起來(lái)就好很多了,后端畢竟方向很多,語(yǔ)言的選擇也是很多的,比如,Java、C++、Python、Go這些語(yǔ)言的方向都是可以選擇的,之前也說(shuō)過(guò),Go現(xiàn)在的需求也是在慢慢變大的,可以考慮一下這個(gè)方向,競(jìng)爭(zhēng)可能小一些,其中,Java的競(jìng)爭(zhēng)最大,可能是因?yàn)榇蠹叶加X(jué)得Java好找工作吧,導(dǎo)致投遞的人數(shù)特別多,大廠就更不用說(shuō)了,想找一個(gè)Java崗位的工作真的不容易,從我身邊的朋友來(lái)看,以及身邊同學(xué)找工作的感受來(lái)看,C++進(jìn)大廠的難易程度還是小一些的,大家可以考慮一下,當(dāng)然,這些選擇也是看你對(duì)哪個(gè)方向更喜歡了,或者更熟悉了,這里只是給一些建議。
校招流程
上面說(shuō)了如何選擇的問(wèn)題,選擇好了之后,就應(yīng)該熟悉一下目前的校招流程了,剛剛開(kāi)始的時(shí)候如果不了解的話(huà),或者沒(méi)有了解一些經(jīng)驗(yàn)之類(lèi)的,還是會(huì)犯一些錯(cuò)誤的,所以這里給大家總結(jié)一下。
在現(xiàn)在的校招的模式下,校招分為春招和秋招,春招基本上是找實(shí)習(xí)的,還是少量的校招補(bǔ)招的,補(bǔ)招就是上一年秋招沒(méi)有招滿(mǎn),然后在春招繼續(xù)招人,而秋招基本上就是應(yīng)屆生找工作的最佳時(shí)期了。
在今年的春天,2月份開(kāi)始吧,春招就開(kāi)始了,很多的公司就開(kāi)始招是實(shí)習(xí)生了,特別是字節(jié)跳動(dòng),在2月初就開(kāi)始了提前批,2月底提前批就結(jié)束了。
所以,春招找實(shí)習(xí)的黃金時(shí)間就是2-5月了,這個(gè)兩到三個(gè)月的時(shí)間都一直會(huì)有機(jī)會(huì),也是拿實(shí)習(xí)offer的最佳時(shí)期。
接下來(lái),6-8月這個(gè)時(shí)間段,如果你在春招找到了實(shí)習(xí),那么一般你就在公司實(shí)習(xí)了,實(shí)習(xí)結(jié)束后,到9月開(kāi)始就是要開(kāi)始秋招了。
但是,這里其實(shí)有一個(gè)問(wèn)題,在前面就講到過(guò),現(xiàn)在的秋招一般都會(huì)很早,可能在7月的時(shí)候很多的公司提前批就開(kāi)始了,而提前批又是很好拿offer的時(shí)候,所以,選擇去不去實(shí)習(xí)就顯得很重要了,或者,你去實(shí)習(xí)了,如果發(fā)現(xiàn)你所實(shí)習(xí)的公司不是你想留的公司,建議盡早離職準(zhǔn)備秋招。從今年的情況來(lái)看,可能因?yàn)橐咔榈挠绊?,到?月份開(kāi)始秋招,發(fā)現(xiàn)其實(shí)已經(jīng)晚了,拿我的情況跟身邊的同學(xué)來(lái)說(shuō),今年9月份開(kāi)始秋招,一般都是投了一大堆的公司,結(jié)果最后只有可憐的5個(gè)面試機(jī)會(huì),這個(gè)時(shí)候才發(fā)現(xiàn),提前批真的很重要,再對(duì)比一些沒(méi)有實(shí)習(xí)的同學(xué),通過(guò)提前批的面試,一般都有幾個(gè)offer斬獲,對(duì)比之下,發(fā)現(xiàn)實(shí)習(xí)的優(yōu)勢(shì)竟然沒(méi)有了,可能這就是現(xiàn)在互聯(lián)網(wǎng)公司的找工作的現(xiàn)實(shí)寫(xiě)照吧。
怎么投遞,怎么內(nèi)推
前面講了校招的流程問(wèn)題,這里講一下在面試的過(guò)程中一定會(huì)遇到的問(wèn)題,那就是投遞簡(jiǎn)歷。
大家應(yīng)該都知道,現(xiàn)在互聯(lián)網(wǎng)公司找工作,基本上都是在??途W(wǎng)看相關(guān)的信息,這也是給大家提供了一個(gè)渠道。
關(guān)于投遞,現(xiàn)在不同的公司也有不同的形式。
第一種,大公司,大公司一般都會(huì)有自己的投遞官方網(wǎng)站的,都是在官方網(wǎng)站進(jìn)行投遞,這個(gè)麻煩的就是,很多的簡(jiǎn)歷信息都是需要手動(dòng)輸入的,所以,還是比較耗時(shí)的,到時(shí)候遇到了你就會(huì)發(fā)現(xiàn)真的有點(diǎn)煩,有時(shí)候投遞個(gè)簡(jiǎn)歷需要半天;但是,有一個(gè)好處就是,可以比較實(shí)時(shí)的查看面試進(jìn)度,直接在官網(wǎng)上進(jìn)行查看就可以了。
第二種,有一些公司因?yàn)闆](méi)有自己的官方網(wǎng)站,所以,就托管在第三方來(lái)進(jìn)行這個(gè)操作,比如,在??途W(wǎng)上直接進(jìn)行投遞,在??途W(wǎng)上填寫(xiě)簡(jiǎn)歷,然后,就可以一鍵投遞了,這個(gè)方便一些,但是,就是感覺(jué)很多時(shí)候沒(méi)有消息,我也不知道為什么。
第三種,也是依賴(lài)第三方公司,今年投遞的感覺(jué)來(lái)說(shuō),一般都是依賴(lài)一個(gè)叫做https://www.mokahr.com/,這個(gè)網(wǎng)站一般就是公司進(jìn)行內(nèi)推的,這個(gè)投遞網(wǎng)站好處就是方便投遞,而且有些公司只需要你上傳你的電子版的簡(jiǎn)歷就可以,降低了投遞成本,但是,不方便的就是查詢(xún)投遞進(jìn)度。
然后,說(shuō)到內(nèi)推,其實(shí),方式也就那么多。一般,如果有實(shí)驗(yàn)室的師兄師姐在比較好的互聯(lián)網(wǎng)公司,那么,我們可以通過(guò)這種渠道進(jìn)行內(nèi)推,一般也是比較靠譜的,成功率比較高;其次,現(xiàn)在很多內(nèi)推也都是在??途W(wǎng)進(jìn)行了,我很多時(shí)候也是在??途W(wǎng)看有沒(méi)有公司的內(nèi)推,這種方式有一個(gè)問(wèn)題就是一般內(nèi)推的人很多,最終你能不能被篩選到是一個(gè)問(wèn)題;最后,還有一種方式就是通過(guò)公眾號(hào),官方的公眾號(hào)投遞,或者有一些公眾號(hào)也會(huì)提供內(nèi)推碼。
最后,就算沒(méi)有內(nèi)推,其實(shí)也不要緊,很多人直接在官網(wǎng)投遞,也是能夠機(jī)會(huì)的,而且,現(xiàn)在的內(nèi)推跟前幾年還不一樣,現(xiàn)在就算是內(nèi)推了,最多也就是有個(gè)筆試的機(jī)會(huì),不會(huì)直接給面試機(jī)會(huì),直接給面試機(jī)會(huì)除非是簡(jiǎn)歷特別出眾。
校招知識(shí)儲(chǔ)備
這一部分我覺(jué)得是這篇文章的重點(diǎn)了,寫(xiě)這篇文章也是為了告訴大家怎么準(zhǔn)備校招,而其中的專(zhuān)業(yè)知識(shí)部分就決定你能不能拿到offer了,所以,接下來(lái),我重點(diǎn)的跟大家聊聊校招的專(zhuān)業(yè)知識(shí)部分的準(zhǔn)備工作。
算法
首先,我可以告訴大家一點(diǎn)就是,校招對(duì)于技術(shù)棧的要求并不會(huì)很高,校招就是招聘應(yīng)屆生,只需要你有可塑性、可培養(yǎng)的空間,那么,就很有可能給你offer,那么,如果校招不強(qiáng)調(diào)技術(shù)棧的重要性,那么注重什么的考察呢?
沒(méi)錯(cuò),就是算法,對(duì)于計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生來(lái)說(shuō),從大學(xué)開(kāi)始接觸到計(jì)算機(jī)的必修課里面一定是有數(shù)據(jù)結(jié)構(gòu)和算法這門(mén)課程的,而且也是相當(dāng)?shù)闹匾U?,從我自身面試的?jīng)歷來(lái)說(shuō),算法可以說(shuō)是十分的重要,再?gòu)?qiáng)調(diào)也不為過(guò)。
在現(xiàn)在的招聘流程中,首先是有筆試,大公司的筆試一般就是2-4道編程題,題目的難度leetcode的hard以上,所以,筆試就是檢驗(yàn)?zāi)愕乃惴ǖ哪芰Γ贿M(jìn)入到面試階段后,基本上每一輪面試中,一定是會(huì)有算法題的,現(xiàn)在也是一般使用牛客網(wǎng)進(jìn)行考核,所以,大家可以先去??途W(wǎng)適應(yīng)適應(yīng),那么,在一次面試中,算法的重要性怎么樣呢?我這么說(shuō)吧,如果一輪面試中,面試官出了一道算法題,如果你做出來(lái)了,其他的專(zhuān)業(yè)知識(shí)點(diǎn)回答的很一般,你有可能進(jìn)入到下一輪面試,如果你算法題沒(méi)有做出來(lái),專(zhuān)業(yè)知識(shí)點(diǎn)就算回答的再好,基本上也是涼涼。因此,從我的經(jīng)驗(yàn)來(lái)看,面試中A出算法題,至少可以拿到60分,A不出來(lái),那就是0分,無(wú)一例外。
那么算法如何準(zhǔn)備呢,這也是我想跟大家聊的一個(gè)話(huà)題,因?yàn)槲以谡夜ぷ髦?,算法的能力可以說(shuō)太一般了,很多的算法都是不懂的,基本的題目也是很難做出來(lái),但是,經(jīng)過(guò)這一年的訓(xùn)練,現(xiàn)在在面試中的算法題A出來(lái)基本上是沒(méi)有問(wèn)題的,除非是特別難的題目,那當(dāng)我沒(méi)說(shuō),有過(guò)幾次經(jīng)歷,感覺(jué)被刷KPI了;因此,如果你現(xiàn)在也是對(duì)算法沒(méi)有任何的自信的話(huà),不用太擔(dān)心,因?yàn)槲乙彩沁@樣過(guò)來(lái)的,只要你堅(jiān)持,有方法的訓(xùn)練,應(yīng)對(duì)基本的面試是完全沒(méi)有問(wèn)題的。
接下來(lái)就是講講怎么去應(yīng)付校招的算法難關(guān),拿offer。
首先,如果你離秋招還有一年多的時(shí)間,也就是明年的秋天才參加秋招,或者時(shí)間更多,同時(shí),你的數(shù)據(jù)結(jié)構(gòu)跟算法的基礎(chǔ)也是不太好的話(huà),我建議你先看看數(shù)據(jù)結(jié)構(gòu)與算法的書(shū)籍,關(guān)于看哪些書(shū)籍,我之前已經(jīng)寫(xiě)過(guò)了,可以看這篇文章必須看的數(shù)據(jù)結(jié)構(gòu)與算法書(shū)籍推薦: https://blog.ouyangsihai.cn/cong-ru-men-dao-na-da-han-offer-bi-xu-kan-de-suan-fa-shu-ji-tui-jian-bu-hao-bu-tui-jian.html。
其次,如果你的時(shí)間非常緊張,馬上就快要參加春招找實(shí)習(xí)了,這個(gè)時(shí)候其實(shí)我就不太推薦看書(shū)了,看書(shū)的效率其實(shí)是很難保證的,我建議你看一下??途W(wǎng)左神的算法教程,左神的教程我是看過(guò)的,從基礎(chǔ)到進(jìn)階的一整套課程,我覺(jué)得講的非常的精彩,能夠看得出來(lái)左神的功力,對(duì)于每一種算法的類(lèi)型,每一個(gè)題目的講解都是細(xì)致入微的,推薦去看看。
然后,如果你對(duì)于基本的算法通過(guò)看視頻或者看書(shū)有了一定的了解的話(huà),那么,接下來(lái)就是校招的刷題時(shí)間了。
講到刷題,其實(shí)方法很重要,這里我就講一下我的這一年的刷題的經(jīng)驗(yàn),其中也有自己的血與淚的故事,就不多說(shuō)了,這里告訴大家,避免踩坑。
不管哪個(gè)方向的,我都建議你刷題的第一本書(shū)是《劍指offer》,為什么這么說(shuō)呢,因?yàn)槊嬖嚨臅r(shí)候,很多的題目都是出自這本書(shū)的,不管哪個(gè)公司,另外我還要告訴你,特別是春招的時(shí)候,因?yàn)榇蠹覝?zhǔn)備的都不是特別好,所以,面試官出的題目也不會(huì)很難,一般就是選自這本書(shū),一定要好好的把每一道題目都吃透。那么怎么樣才算吃透呢,可能你看了幾遍這本書(shū),但是還是不夠的,你還需要去??途W(wǎng)找到劍指offer的專(zhuān)欄,進(jìn)行線(xiàn)上的練習(xí),只有當(dāng)你自己可以在線(xiàn)上把每一道題都可以A出來(lái)的時(shí)候,并且都是最優(yōu)解,這個(gè)時(shí)候,這本書(shū)就是過(guò)關(guān)了,那么,你也是可以應(yīng)付面試中的70%的算法題。

如果這一步你已經(jīng)做到了,還想要提高的話(huà),我還會(huì)推薦左神的書(shū)《程序員代碼面試指南:IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解》,這本書(shū)的難度比劍指offer難很多,里面有很多有難度的題目,但是各個(gè)章節(jié)都編排的非常合理,都是按照分類(lèi)來(lái)的,非常適合進(jìn)行刷題,訓(xùn)練自己的算法思維。

當(dāng)然,如果你不想看書(shū),想直接刷題,那么,我推薦你去leetcode進(jìn)行刷題,去leetcode刷題也需要注意一點(diǎn),盡量按照類(lèi)型來(lái)刷,這樣可以更好的進(jìn)行練習(xí),同時(shí),我也建議你先把hot100搞定,然后再去刷其他的,這樣可以先把最熱門(mén)的題目搞定,其他的有時(shí)間再去訓(xùn)練。
以上就是應(yīng)付算法的一些技巧,這當(dāng)然只是針對(duì)大多數(shù)的人來(lái)說(shuō)的,大佬可以跳過(guò)。
專(zhuān)業(yè)方向知識(shí)
這一部分接著上面的算法,可以算是比較合理的,只有在算法的基礎(chǔ)上,才有資本談?wù)搶?zhuān)業(yè)知識(shí),否則,沒(méi)有任何意義。首先聲明一下,下面的這一部分主要是針對(duì)Java開(kāi)發(fā)的,其他的方向在這里不討論。
Java大家都知道技術(shù)是非常的多的,也是比較費(fèi)時(shí)間的,但是,結(jié)合校招的特點(diǎn),狠毒的技術(shù)其實(shí)是不用討論的,主要的需要復(fù)習(xí)的在這里都會(huì)講到,主要包括下面這些。
數(shù)據(jù)結(jié)構(gòu) 計(jì)算機(jī)網(wǎng)絡(luò) 操作系統(tǒng) 數(shù)據(jù)庫(kù) Java基礎(chǔ) Java集合 Java多線(xiàn)程與并發(fā) JVM Spring、Mybatis、SpringBoot等框架 Redis Dubbo Zookeeper 消息隊(duì)列
以上的這些知識(shí)點(diǎn)其實(shí)都是考察的非常頻繁的,其中數(shù)據(jù)庫(kù),數(shù)據(jù)結(jié)構(gòu),Java集合,并發(fā),JVM,Redis這幾塊知識(shí)點(diǎn),被問(wèn)到的概率特別高,基本上是面試必問(wèn)的。
不過(guò),大家不用太擔(dān)心,因?yàn)?,通過(guò)這一年多的面試,我基本上把這些知識(shí)點(diǎn)都進(jìn)行了總結(jié),常見(jiàn)的面試題也都是進(jìn)行了總結(jié),只需要按照我總結(jié)的來(lái)進(jìn)行復(fù)習(xí),我覺(jué)得問(wèn)題不大,互聯(lián)網(wǎng)前50應(yīng)該是沒(méi)有任何問(wèn)題的。
下面我給出一些我總結(jié)的常見(jiàn)面試題,都進(jìn)行了分類(lèi),非常好進(jìn)行復(fù)習(xí)。
一 Java基礎(chǔ) 一致性hash算法 sleep和wait 強(qiáng)軟弱虛引用 Arrays.sort原理 創(chuàng)建對(duì)象的方式 若hashcode方法永遠(yuǎn)返回1會(huì)產(chǎn)生什么結(jié)果 解決hash沖突的三種方法 為什么要重寫(xiě)hashCode()方法和equals()方法以及如何進(jìn)行重寫(xiě) 動(dòng)態(tài)代理 sleep和wait的區(qū)別 java 地址和值傳遞的例子 Java序列化 java NIO,java 多線(xiàn)程、線(xiàn)程池,java 網(wǎng)絡(luò)編程解決并發(fā)量 JDBC 連接的過(guò)程 ,手寫(xiě) jdbc 連接過(guò)程 說(shuō)出三個(gè)遇到過(guò)的程序報(bào)異常的情況 socket 是靠什么協(xié)議支持的 java io 用到什么設(shè)計(jì)模式 serviable 的序列化,其中 uuid 的作用 什么情景下會(huì)用到反射 淺克隆與深克隆有什么區(qū)別,如何實(shí)現(xiàn)深克隆 反射能夠使用私有的方法屬性嗎和底層原理? 處理器指令優(yōu)化有些什么考慮? object 對(duì)象的常用方法 Stack 和 ArrayList 的區(qū)別 statement 和 prestatement 的區(qū)別 手寫(xiě)模擬實(shí)現(xiàn)一個(gè)阻塞隊(duì)列 util 包下有哪幾種接口 很常見(jiàn)的 Nullpointerexception ,你是怎么排查的,怎么解決的; 靜態(tài)內(nèi)部類(lèi)和非靜態(tài)內(nèi)部類(lèi)的區(qū)別是什么? 怎么創(chuàng)建靜態(tài)內(nèi)部類(lèi)和非靜態(tài)內(nèi)部類(lèi)? Xml 解析方式,原理優(yōu)缺點(diǎn) 靜態(tài)變量和全局變量的區(qū)別 二 Java集合 hashmap treemap 還了解除 util 其他包下的 List 嗎? CopyOnWriteArrayList hashmap的jdk1.7和jdk1.8區(qū)別 concurrenthashmap的jdk1.7和jdk1.8區(qū)別 HashMap 實(shí)現(xiàn)原理,擴(kuò)容因子過(guò)大過(guò)小的缺點(diǎn),擴(kuò)容過(guò)程 采用什么方法能保證每個(gè) bucket 中的數(shù)據(jù)更均勻 解決沖突的方式,還有沒(méi)有其他方式(全域哈希) Collection 集合類(lèi)中只能在 Iterator 中刪除元素的原因 ArrayList、LinkedList、Vector ConcurrentHashMap 和 LinkedHashMap 差異和適用情形 ConcurrentHashMap分段鎖是如何實(shí)現(xiàn),ConcurrentHashmap jdk1.8 訪問(wèn)的時(shí)候是怎么加鎖的,插入的時(shí)候是怎么加鎖的 訪問(wèn)不加 鎖插入的時(shí)候?qū)︻^結(jié)點(diǎn)加鎖 ArrayDeque 的使用場(chǎng)景 ArrayBlockingQueue 源碼 hashmap 和 treemap 的區(qū)別 rehash 過(guò)程 HashMap 的負(fù)載因子,為什么容量為2^n list,map,set 之間的區(qū)別 什么時(shí)候會(huì)用到 HashMap 常見(jiàn)的線(xiàn)程安全的集合類(lèi) 三 JVM 反射在jvm層面的實(shí)現(xiàn) jvm的方法區(qū)存什么? JDK1.8 JVM方法區(qū)變成了什么,為什么這樣做 oom出現(xiàn)的原因 Class.forName和ClassLoader的區(qū)別 java對(duì)象信息分配 java虛擬機(jī)ZGC詳解 java虛擬機(jī)CMS詳解 java虛擬機(jī)G1詳解 JVM tomcat 容器啟動(dòng),jvm 加載情況描述 四 多線(xiàn)程并發(fā) volitale使用場(chǎng)景 可重入鎖,實(shí)現(xiàn)原理 Java 無(wú)鎖原理 講講多線(xiàn)程,多線(xiàn)程的同步方法 synchronized原理 reetrantlock java 線(xiàn)程安全都體現(xiàn)在哪些方面 如果維護(hù)線(xiàn)程安全 如果想實(shí)現(xiàn)一個(gè)線(xiàn)程安全的隊(duì)列,可以怎么實(shí)現(xiàn)? Java多線(xiàn)程通信方式 CountDownLatch、CyclicBarrier、Semaphore 用法總結(jié) juc下的內(nèi)容 AOS等并發(fā)相關(guān)面試題 threadlocal java 線(xiàn)程池達(dá)到提交上限的具體情況 ,線(xiàn)程池用法,Java 多線(xiàn)程,線(xiàn)程池有哪幾類(lèi),每一類(lèi)的差別 要你設(shè)計(jì)的話(huà),如何實(shí)現(xiàn)一個(gè)線(xiàn)程池 線(xiàn)程池的類(lèi)型,固定大小的線(xiàn)程池內(nèi)部是如何實(shí)現(xiàn)的,等待隊(duì)列是用了哪一個(gè)隊(duì)列實(shí)現(xiàn) 線(xiàn)程池種類(lèi)和工作流程 線(xiàn)程池使用了什么設(shè)計(jì)模式 線(xiàn)程池使用時(shí)一般要考慮哪些問(wèn)題 線(xiàn)程池的配置 Excutor 以及 Connector 的配置 五 Java框架(ssm) hibernate Hibernate 的生成策略 Hibernate 與 Mybatis 區(qū)別 Mybatis原理 mybatis執(zhí)行select的過(guò)程 mybatis有哪些executors mybatis插件原理 mybatis二級(jí)緩存 spring&springmvc spring中的設(shè)計(jì)模式 spring中bean的作用域 BeanFactory和FactoryBean區(qū)別 aspect的種類(lèi) spring aop的實(shí)際應(yīng)用 spring實(shí)現(xiàn)多線(xiàn)程安全 spring的bean的高并發(fā)安全問(wèn)題 ioc aop總結(jié)(概述性) Spring 的加載流程,Spring 的源碼中 Bean 的構(gòu)造的流程 Spring 事務(wù)源碼,IOC 源碼,AOP 源碼 spring 的作用及理解 事務(wù)怎么配置 spring事務(wù)失效情況 Spring 的 annotation 如何實(shí)現(xiàn) SpringMVC 工作原理 了解 SpringMVC 與 Struct2 區(qū)別 springMVC 和 spring 是什么關(guān)系 項(xiàng)目中 Spring 的 IOC 和 AOP 具體怎么使用的 spring mvc 底層實(shí)現(xiàn)原理 動(dòng)態(tài)代理的原理 如果使用 spring mvc,那 post 請(qǐng)求跟 put 請(qǐng)求有什么區(qū)別啊;然后開(kāi)始問(wèn) springmvc:描述從 tomcat 開(kāi)始到 springmvc 返回到前端顯示的整個(gè)流程,接著問(wèn) springmvc 中的 handlerMapping 的內(nèi)部實(shí)現(xiàn),然后又問(wèn) spring 中從載入 xml 文件到 getbean 整個(gè)流程,描述一遍 六 微服務(wù)(springboot等) springboot springcloud 七 數(shù)據(jù)結(jié)構(gòu) 二叉樹(shù)相關(guān) 紅黑樹(shù) 八 數(shù)據(jù)庫(kù) MySQL 數(shù)據(jù)庫(kù)死鎖問(wèn)題 hash索引和B+樹(shù)索引的區(qū)別 可重復(fù)的原理MVCC count(1)、count(*)、count(列名) mysql的undo、redo、binlog的區(qū)別 explain解釋 mysql分頁(yè)查詢(xún)優(yōu)化 sql注入 為什么用B+樹(shù) sql執(zhí)行流程 聚集索引與非聚集索引 覆蓋索引 sql總結(jié) 有人建議給每張表都建一個(gè)自增主鍵,這樣做有什么優(yōu)點(diǎn)跟缺點(diǎn) 對(duì) MySQL 的了解,和 oracle 的區(qū)別 500萬(wàn)數(shù)字排序,內(nèi)存只能容納5萬(wàn)個(gè),如何排序,如何優(yōu)化? 平時(shí)怎么寫(xiě)數(shù)據(jù)庫(kù)的模糊查詢(xún)(由字典樹(shù)扯到模糊查詢(xún),前綴查詢(xún),例如“abc%”,還是索引策略的問(wèn)題) 數(shù)據(jù)庫(kù)里有 10000000 條用戶(hù)信息,需要給每位用戶(hù)發(fā)送信息(必須發(fā)送成功),要求節(jié)省內(nèi)存 項(xiàng)目中如何實(shí)現(xiàn)事務(wù) 數(shù)據(jù)庫(kù)設(shè)計(jì)一般設(shè)計(jì)成第幾范式 mysql 用的什么版本 5.7 跟 5.6 有啥區(qū)別 提升 MySQL 安全性 問(wèn)了一個(gè)這樣的表(三個(gè)字段:姓名,id,分?jǐn)?shù))要求查出平均分大于 80 的 id 然后分?jǐn)?shù)降序排序,然后經(jīng)過(guò)提示用聚合函數(shù) avg。 為什么 mysql 事務(wù)能保證失敗回滾 主鍵索引底層的實(shí)現(xiàn)原理 經(jīng)典的01索引問(wèn)題? 如何在長(zhǎng)文本中快捷的篩選出你的名字? 多列索引及最左前綴原則和其他使用場(chǎng)景 事務(wù)隔離級(jí)別 索引的最左前綴原則 數(shù)據(jù)庫(kù)悲觀鎖怎么實(shí)現(xiàn)的 建表的原則 索引的內(nèi)涵和用法 給了兩條 SQL 語(yǔ)句,讓根據(jù)這兩條語(yǔ)句建索引(個(gè)人想法:主要考慮復(fù)合索引只能匹配前綴列的特點(diǎn)) 那么我們來(lái)聊一下數(shù)據(jù)庫(kù)。A 和 B 兩個(gè)表做等值連接(Inner join) 怎么優(yōu)化 數(shù)據(jù)庫(kù)連接池的理解和優(yōu)化 Sql語(yǔ)句分組排序 SQL語(yǔ)句的5個(gè)連接概念 數(shù)據(jù)庫(kù)優(yōu)化和架構(gòu)(主要是主從分離和分庫(kù)分表相關(guān)) 分庫(kù)分表 跨庫(kù)join實(shí)現(xiàn) 探討主從分離和分庫(kù)分表相關(guān) 數(shù)據(jù)庫(kù)中間件 讀寫(xiě)分離在中間件的實(shí)現(xiàn) 限流 and 熔斷 行鎖適用場(chǎng)景 Redis redis為什么快? Redis 數(shù)據(jù)結(jié)構(gòu)原理 Redis 持久化機(jī)制 Redis 的一致性哈希算法 redis了解多少 redis五種數(shù)據(jù)類(lèi)型,當(dāng)散列類(lèi)型的 value 值非常大的時(shí)候怎么進(jìn)行壓縮 用redis怎么實(shí)現(xiàn)搖一搖與附近的人功能 redis 主從復(fù)制過(guò)程 Redis 如何解決 key 沖突 redis 是怎么存儲(chǔ)數(shù)據(jù)的 redis 使用場(chǎng)景 九 計(jì)算機(jī)網(wǎng)絡(luò) cookie 禁用怎么辦 Netty new 實(shí)例化過(guò)程 socket 實(shí)現(xiàn)過(guò)程,具體用的方法;怎么實(shí)現(xiàn)異步 socket. 瀏覽器的緩存機(jī)制 http相關(guān)問(wèn)題 TCP三次握手第三次握手時(shí)ACK丟失怎么辦 dns屬于udp還是tcp,原因 http的冪等性 建立連接的過(guò)程客戶(hù)端跟服務(wù)端會(huì)交換什么信息(參考 TCP 報(bào)文結(jié)構(gòu)) 丟包如何解決重傳的消耗 traceroute 實(shí)現(xiàn)原理 IO多路復(fù)用 select 和 poll 區(qū)別? 在不使用 WebSocket 情況下怎么實(shí)現(xiàn)服務(wù)器推送的一種方法 可以使用客戶(hù)端定時(shí)刷新請(qǐng)求或者和 TCP 保持心跳連接實(shí)現(xiàn)。 查看磁盤(pán)讀寫(xiě)吞吐量? PING 位于哪一層 網(wǎng)絡(luò)重定向,說(shuō)下流程 controller 怎么處理的請(qǐng)求:路由 IP 地址分為幾類(lèi),每類(lèi)都代表什么,私網(wǎng)是哪些 十 操作系統(tǒng) Java I/O 底層細(xì)節(jié),注意是底層細(xì)節(jié),而不是怎么用 Java IO 模型(BIO,NIO 等) ,Tomcat 用的哪一種模型 當(dāng)獲取第一個(gè)獲取鎖之后,條件不滿(mǎn)足需要釋放鎖應(yīng)當(dāng)怎么做? 手寫(xiě)一個(gè)線(xiàn)程安全的生產(chǎn)者與消費(fèi)者。 進(jìn)程和線(xiàn)程調(diào)度方法 linux linux查找命令 項(xiàng)目部署常見(jiàn)linux命令 進(jìn)程文件里有哪些信息 sed 和 awk 的區(qū)別 linux查看進(jìn)程并殺死的命令 有一個(gè)文件被鎖住,如何查看鎖住它的線(xiàn)程? 如何查看一個(gè)文件第100行到150行的內(nèi)容 如何查看進(jìn)程消耗的資源 如何查看每個(gè)進(jìn)程下的線(xiàn)程? linux 如何查找文件 select epoll等問(wèn)題 十一 框架其他 Servlet 的 Filter 用的什么設(shè)計(jì)模式 zookeeper 的常用功能,自己用它來(lái)做什么 redis 的操作是不是原子操作 秒殺業(yè)務(wù)場(chǎng)景設(shè)計(jì) 如何設(shè)計(jì)淘寶秒殺系統(tǒng)(重點(diǎn)關(guān)注架構(gòu),比如數(shù)據(jù)一致性,數(shù)據(jù)庫(kù)集群一致性哈希,緩存, 分庫(kù)分表等等) 對(duì)后臺(tái)的優(yōu)化有了解嗎?比如負(fù)載均衡 對(duì) Restful 了解 Restful 的認(rèn)識(shí),優(yōu)點(diǎn),以及和 soap 的區(qū)別 lrucache 的基本原理 十二 設(shè)計(jì)模式 Java常見(jiàn)設(shè)計(jì)模式 十三 分布式 dubbo中的dubbo協(xié)議和http協(xié)議有什么區(qū)別? 負(fù)載均衡 分布式鎖的實(shí)現(xiàn)方式及優(yōu)缺點(diǎn) CAP 如何實(shí)現(xiàn)分布式緩存 十四 其他 Java 8 函數(shù)式編程 回調(diào)函數(shù) 函數(shù)式編程,面向?qū)ο笾g區(qū)別 Java 8 中 stream 迭代的優(yōu)勢(shì)和區(qū)別? 同步等于可見(jiàn)性嗎? git底層數(shù)據(jù)結(jié)構(gòu) 安全加密 web安全問(wèn)題
上面的這些就是我整理的互聯(lián)網(wǎng)公司的各個(gè)知識(shí)點(diǎn)的常見(jiàn)面試題,非常高頻的面試題,這里因?yàn)橄抻谄?,不太好進(jìn)行全部展示,如果想去看具體的解答或者質(zhì)量高的博文解答,可以去我的github上查看高頻面試題分類(lèi)匯總: https://github.com/OUYANGSIHAI/JavaInterview/blob/master/docs/interview-experience/%E9%9D%A2%E8%AF%95%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E5%88%86%E7%B1%BB%E6%B1%87%E6%80%BB.md。
上面的這些面試題可能不是特別的全面,有一些是沒(méi)有考慮到的,考慮到這個(gè)問(wèn)題,我就把一些相關(guān)的面試題整理成了思維導(dǎo)圖,如果大家有需要也可以直接去這篇文章獲取,關(guān)于思維導(dǎo)圖有什么好處我在這篇文章就不多說(shuō)了,在上面這篇文章中有提到,總之,拿到這些資料,只要你好好去思考,對(duì)面試一定是大有幫助的,畢竟我就是這樣走過(guò)來(lái)的。
當(dāng)然,這個(gè)github不止上面這些面試題,還有其他的關(guān)于我這一年的所有積累和總結(jié),看了你就知道,一定會(huì)對(duì)你面試有很大的幫助的,因?yàn)槲揖褪强可厦娴倪@些拿到大廠offer的。
面經(jīng)
本來(lái)這篇文章最后還是想講講一些公司的面經(jīng)的,但是,寫(xiě)著寫(xiě)著,發(fā)現(xiàn)這篇文章已經(jīng)寫(xiě)了幾天了,字?jǐn)?shù)也快2W字了,考慮到文章篇幅太長(zhǎng)了也不好,所以,這篇文章暫時(shí)就不分享一些公司的面經(jīng)了,后面的文章再給大家分享,如果希望看到后面的公司的面經(jīng)的話(huà),比如,字節(jié)、阿里、騰訊等等,麻煩給個(gè)贊,這篇文章死磕了快一周了,原創(chuàng)不易,希望對(duì)大家有幫助。
最后,覺(jué)得不錯(cuò),點(diǎn)個(gè)贊唄!
關(guān)注公眾號(hào),查看更多優(yōu)質(zhì)文章 最近,整理一份Java資料《Java從0到1》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。 獲取方式:關(guān)注公眾號(hào)并回復(fù)?Java?領(lǐng)取,更多Java內(nèi)容陸續(xù)奉上。 明天見(jiàn)(??ω??)??
