百度我是在拉勾網(wǎng)上投的簡歷欠痴,之前也投過一次迄靠,簡歷都沒通過刪選,后來讓學姐幫我改了一下簡歷喇辽,重新投另一個部門梨水,獲得了面試機會。6月23日中午HR打電話過來預約了下午4點半面試茵臭,說會在線寫代碼疫诽,讓我準備好網(wǎng)絡環(huán)境。結(jié)果5點半還沒打電話過來旦委,被放鴿子奇徒。與hr重新溝通過后,確定下周一下午再面缨硝,可是跟hr溝通預約這一套貌似在百度并沒有什么用摩钙。
百度技術一面20分鐘
晚7點,因為想到下周一才面試查辩,我剛準備出去打個羽毛球胖笛,北京的電話就來了。面試官各種抱歉宜岛,說開會拖延了长踊。
1、自我介紹
說了很多遍了萍倡,很流暢撿重點介紹完身弊。
2、問我數(shù)據(jù)結(jié)構算法好不好
挺好的(其實心還是有點虛列敲,不過最近刷了很多題也只能壯著膽子充胖子了)
3阱佛、找到單鏈表的三等分點,如果單鏈表是有環(huán)的呢
用快慢指針戴而,一個走一步凑术,一個走三步。如果有環(huán)所意,先判斷環(huán)在哪淮逊,找最后一個節(jié)點,然后用之前的無環(huán)的做法
4扁眯、講一下項目的架構
我重點講了MVC
5壮莹、說一下你熟悉的設計模
我重點講了單例、工廠方法姻檀、代理
6命满、有沒有配置過服務器啥啥啥
這個我真不知道,都沒聽過呢绣版,只能誠實說沒有胶台,畢竟都沒法扯歼疮。
一面挺匆忙的,我估計面試官剛開完會還沒吃飯呢诈唬。他說讓我等韩脏,可能再找一個同事面我,可能就直接告訴我結(jié)果了铸磅。從一面面試官的聲音和口吻赡矢,我判斷他一定是個部門老大,問的設計偏多阅仔,后面hr告訴我他就是我要去的部門的老大吹散。哈哈。
百度技術二面60分鐘八酒,詳細問答
面完一面正準備出去打羽毛球空民,北京的電話又來了。(注定這周五參加不了球隊活動了P呙浴) 二面:跟一面比起來界轩,二面面試官的聲音聽起來就像是搞技術開發(fā)的,果不其然衔瓮,一個小時的純技術電話面試浊猾!面的特別全面!
1报辱、Spring:有沒有用過Spring与殃,Spring IOC单山、AOP機制與實現(xiàn)碍现,Spring MVC
其實我挺不想被問到Spring的細節(jié)的,框架這些我都沒有復習不太記得了米奸。所以我對面試官說Spring里面的一些比較重要的機制我理解的還不錯昼接,然后我用一個實際的例子把我對IOC、AOP理解講了一下悴晰,他聽了說對慢睡,理解的不錯(難得遇到一個邊面試邊能給反饋的面試官,好開心)
Spring MVC其實我用過铡溪,我就對面試官講了我的項目中用到的Servlet漂辐,jsp和javabean實現(xiàn)的MVC,以及MVC各個模塊職責以及每個模塊是怎么聯(lián)系到一起的棕硫,最后我補充了一句我想SpringMVC的思想其實跟這個是一樣的(他說對的髓涯,嘿嘿有反饋真好)
2、多線程:怎么實現(xiàn)線程安全哈扮,各個實現(xiàn)方法有什么區(qū)別纬纪,volatile關鍵字的使用蚓再,可重入鎖的理解,Synchronized是不是可重入鎖
這里我就主要講了Synchronized關鍵字包各,還有并發(fā)包下面的一些鎖摘仅,以及各自的優(yōu)缺點和區(qū)別。volatile關鍵字我主要從可見性问畅、原子性和禁止JVM指令重排序三個方面講的娃属,再講了一下我在多線程的單例模式double-check中用到volatile關鍵字禁止JVM指令重排優(yōu)化。
3护姆、集合:HashMap底層實現(xiàn)膳犹,怎么實現(xiàn)HashMap線程安全
我講了一下HashMap底層是數(shù)組加單鏈表實現(xiàn),Node內(nèi)部類签则,add的過程须床,Hash沖突解決辦法,擴容渐裂,三種集合視圖豺旬。HashMap線程安全的實現(xiàn)方式主要講了HashTable、ConcurrentHashMap以及Collections中的靜態(tài)方法SynchronizedMap可以對HashMap進行封裝柒凉。以及這三種方式的區(qū)別族阅,效率表現(xiàn)。
4膝捞、JVM內(nèi)存管理坦刀,GC算法,HotSpot里面的垃圾回收器蔬咬、類加載
JVM內(nèi)存主要分為五個區(qū)鲤遥,哪些是線程共享的,哪些是線程獨享的林艘,每個區(qū)存放什么盖奈。GC方面:怎么判斷哪些對象需要被GC,GC的方法狐援,Minor GC與Full GC钢坦。HotSpot GC算法以及7種垃圾回收期,主要講了CMS和G1收集器啥酱。類加載:類加載的過程爹凹,Bootstrap classloader-ExtClassloader-AppClassloader同辣,父類委托機制硼补。
5、進程和線程的區(qū)別
從調(diào)度戚长、并發(fā)性、擁有的資源和系統(tǒng)開銷四個方面回答的宇植。
6得封、HTTP有沒有狀態(tài),我說無狀態(tài)指郁,怎么解決HTTP無狀態(tài)忙上,其實就是怎么進行會話跟蹤,有四種方法:URL重寫闲坎、隱藏表單域疫粥、Cookie、Session腰懂。
7梗逮、Java IO,NIO绣溜,Java中有沒有實現(xiàn)異步IO
Java IO實現(xiàn)的是同步阻塞慷彤,它是怎么實現(xiàn)同步阻塞的。我拿了read()方法舉例來講的怖喻。NIO實現(xiàn)的是同步非阻塞底哗,我詳細講了一下Selector中的select()方法輪詢說明它是如何實現(xiàn)多路復用IO的。然后對比了一下他們的效率锚沸。面試官可能看我對這一塊比較了解跋选,又繼續(xù)問我Java中有沒有實現(xiàn)異步IO,我感覺好像沒有哗蜈,但面試官說有前标,讓我想想,其實這里我并不清楚啦距潘,所以我就對面試官講了一下我對Unix中異步IO模型的理解炼列,然后說至于Java里面有沒有我真的不太清楚。(他居然笑了绽昼!說你理解是對的唯鸭,Java里面有沒有不重要!哈哈)
8硅确、前端會不會,Ajax是什么明肮,Ajax實現(xiàn)原理
前端我只是會用一些js而已菱农,用過jquery框架,問我Ajax全稱是啥柿估,我猜是異步的js和xml循未。Ajax實現(xiàn)原理其實我也不懂,我就只簡單講了一下它通過XMLHttpRequest對象進行異步查詢,Ajax引擎在客戶端運行的妖,減少了服務器工作量绣檬。
9、讓我設計一個線程池
因為我簡歷中有寫到我對多線程嫂粟、并發(fā)這一塊理解比較好娇未。所以他老問這方面的題。這個問題因為我之前看過ThreadPoolExecutor的源代碼星虹,所以我就仿照那個類的設計思路來想的零抬,詳細講了一下核心池、創(chuàng)建線程可以用工廠方法模式來進行設計宽涌、線程池狀態(tài)平夜、阻塞隊列、拒絕策略這幾個方面卸亮。設計的還算比較周全忽妒。
10、講幾個設計模式兼贸,哪些地方用到了锰扶,為什么要用
單例模式,jdk中的getRuntime()寝受;工廠方法模式坷牛,ThreadPoolExcutor用到ThreadFactory;觀察者模式:java.util包下面的Observable和Observer很澄。最后主要講了一下工廠方法模式的使用場景京闰。
11、Mysql優(yōu)化甩苛、索引的實現(xiàn)
我從數(shù)據(jù)庫設計優(yōu)化和查詢優(yōu)化兩方面講的蹂楣。索引B+樹實現(xiàn),InnoDB和MyISAM主鍵索引的實現(xiàn)區(qū)別讯蒲,一個聚集一個非聚集痊土。
12、事務的隔離級別
四種隔離級別墨林,可能會出現(xiàn)哪些異常赁酝,mysql中默認級別。
13旭等、有沒有用過Hibernate酌呆、mybatis、git
這個簡單講一下就好搔耕,分別是干什么的
14隙袁、Linux
我說這個本科學過,但是很久沒用,命令忘光了菩收。他說沒事梨睁,考你幾個簡單的:cd、ls娜饵、dir(真的是簡單的)
15坡贺、算法題
1、從10萬個數(shù)中找最小的10個划咐,時間復雜度分析(最大堆拴念,考慮內(nèi)存)
2、從一個有正有負數(shù)組中找連續(xù)子數(shù)組的最大和褐缠,時間復雜度分析(動態(tài)規(guī)劃)
3政鼠、滿二叉樹第i層有多少個節(jié)點,n層的滿二叉樹共有多少個節(jié)點
終于到我提問環(huán)節(jié)了
1队魏、你們是什么部門(他說是核心部門公般,大數(shù)據(jù)研發(fā))
2、我對高并發(fā)和負載均衡挺有興趣的胡桨,但是我平時在學校也沒有這個環(huán)境讓我在這方面有所體驗官帘,那你建議我目前可以怎么學呢(他說這確實是不太好學,只能看些理論和別人的博客昧谊,以后工作中才能慢慢學)
3刽虹、中間件具體是做什么的,是解決高并發(fā)和負載均衡嗎(他說差不多是的呢诬,然后他說我們這個部門不是中間件涌哲,是大數(shù)據(jù)部門啊,我說恩我知道)
最后沒啥問題了尚镰,他讓我保持電話暢通阀圾。
這一面面完,口干舌燥狗唉,我一度懷疑他可能不知道我是在應聘實習生的崗位初烘。有太多要總結(jié)的了,放在總結(jié)的地方一起講吧分俯。
百度技術三面25分鐘
面試官說是他是另外一個部門的肾筐,需要進行交叉面試。
1澳迫、MySql優(yōu)化
2局齿、說下項目做了些什么,架構之類的
3橄登、在collabedit上在線寫代碼,題目很簡單是編程之美上的原題,一個有序的整數(shù)數(shù)組拢锹,輸出兩個數(shù)谣妻,使它們的和為某個給定的值。之前做過很快寫好卒稳,然后給他講思路蹋半。他繼續(xù)問如果數(shù)組無序怎么辦,先排序充坑。
4减江、兩個文件,每個文件中都有若干個url捻爷,找出兩個文件中相同的url(用HashMap)
這一面挺簡單的辈灼,只是增加之前面試沒有過的在線寫代碼環(huán)節(jié),collabedit后來我才了解也榄,像facebook一些互聯(lián)網(wǎng)公司遠程面試都會用這個在線編輯器寫代碼巡莹,就是文本文檔寫,沒有提示甜紫,不能編譯運行降宅,跟白板寫一樣。平時練練手就好囚霸。
百度技術HR四面30分鐘
三面面試官說他那就是終面腰根,說我過了等hr聯(lián)系我。萬萬沒想到半小時后的hr面居然也是技術拓型。
1额嘿、自我介紹,都四面了還自我介紹吨述?岩睁!我還以為是單純的hr面,所以介紹的都是我的性格和生活方面的揣云,結(jié)果并不是捕儒。
2、問項目邓夕,問的特別特別細刘莹,技術細節(jié),還有遇到什么問題焚刚,怎么解決的点弯,做項目有沒有人帶,怎么跟別人溝通的矿咕。
3抢肛、數(shù)據(jù)庫優(yōu)化狼钮,如果數(shù)據(jù)庫一個表特別大怎么辦 數(shù)據(jù)庫優(yōu)化我就講了之前講過很多遍的點,他問一個表特別大怎么辦:大表分小表捡絮,怎么實現(xiàn):使用分區(qū)表
4熬芜、問研究生的科研題目,為什么選這個題福稳,看了一些什么論文(細到問我那些論文是發(fā)表在什么期刊上的涎拉,作者是哪所學校的),為什么要選這個算法的圆,怎么優(yōu)化的鼓拧,實驗結(jié)果怎么跟別人作對比的,為什么比別人的算法好(一個個問題不斷砸過來越妈,我猜我說的那些專業(yè)名詞他應該不太懂季俩,只是判斷一下是不是我做的而已。叮称。)
5种玛、確定實習時間 這一面確實讓我感到有壓迫感,項目是本科做的瓤檐,挺久了赂韵,一些技術細節(jié)上也沒太總結(jié),所以問細了我只能連想帶編挠蛉,嘿嘿祭示。科研方面倒還好谴古,上個學期都在弄這個质涛,一些算法的實現(xiàn)和改進、對比都還記得比較清楚掰担,回答的挺流暢的汇陆,可能這真的就是技術型的hr面吧。
讀者福利带饱、完整面試題【含答案】Java核心筆記毡代,Java架構面試專題整合千道(pdf文檔)
針對于上面的文章我總結(jié)出了互聯(lián)網(wǎng)公司java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構視頻資料免費分享給大家(包括Dubbo教寂、Redis、Netty执庐、zookeeper酪耕、Spring cloud、分布式轨淌、高并發(fā)等架構技術資料)迂烁,希望能幫助到您面試前的復習且找到一個好的工作看尼,也節(jié)省大家在網(wǎng)上搜索資料的時間來學習。
資料獲取方式:加qun群:956011797點擊立即加入 找管理免費獲然楸弧狡忙!