面試分4類:
A.純算法袁滥,扔給你3到5道算法題掘譬,在規(guī)定時間內(nèi)準(zhǔn)確完成,讓面試官滿意通過;
B.純應(yīng)用呻拌,給你一個應(yīng)用場景葱轩,問你有什么想法或者解決方案?
C.算法+應(yīng)用混合型藐握;
D.問一些語言和工具的使用經(jīng)驗靴拱,這種問題動手做過,而且認(rèn)真思考總結(jié)后猾普,才知道怎么回答袜炕;
E.問基礎(chǔ)知識,這種最簡單初家。
國美在線:
1.兩個字符串偎窘,請寫出計算這兩個字符串相似度的算法;
2.寫出解析某字符串中重復(fù)字串的方法溜在;
3.有若干帶索引的TB級數(shù)據(jù)陌知,比如iphone4s,iphone5,ipad,newpad,輸入的查詢是Phone,pad.
如何構(gòu)造索引?如何處理查詢掖肋?
4.如何實現(xiàn)K-V DB仆葡?分布式存儲和檢索系統(tǒng)?比如用berkelayDB如何實現(xiàn)一個類似memcached的系統(tǒng)志笼?
5.如何將相同的商品自動聚合到一起沿盅?
6.如何訓(xùn)練同義詞?
7.如何進(jìn)行商品的相關(guān)性推薦纫溃?
8.hadoop如何shuffle的腰涧?
9.談?wù)劮诸悺⒕垲愇珊啤㈥P(guān)聯(lián)規(guī)則窖铡、貝葉斯過濾?
10.如何反鏈接作弊揍很?
11.聊一下CPN?
12.講講消息中間件的實現(xiàn)?比如MQ万伤?.
13.頁面解析如何做的窒悔?有沒有設(shè)計自動化解析算法?
網(wǎng)頁解析比較復(fù)雜敌买,因 為現(xiàn)在的網(wǎng)頁不是純html,還包含了一些動態(tài)的腳本简珠,頁面內(nèi)容會因加載時機(jī)及腳本的運(yùn)行而發(fā)生變化,需要模擬瀏覽器運(yùn)行來提取其中的outerlink 和content(href已經(jīng)指明的非腳本outerlink可直接用正則提群缗ァ)瀏覽器會 創(chuàng)建自己的解析器來解析網(wǎng)頁聋庵,解析有2個過程:分詞、構(gòu)建Dom樹芙粱。,如果熟悉瀏覽器內(nèi)核祭玉,對此問題會很有幫助。分詞算法屬于詞法分析春畔,分詞算法的輸出為html符號序列脱货,分詞和構(gòu)建dom樹都可以用有限狀態(tài)機(jī)來描述。翻頁抓取可以用開源的渲染引擎Webkit或者M(jìn)etaSeeker之類的小工具律姨,網(wǎng)頁內(nèi)容的提取可以用Tika,Jsoup,Htmlparser來完成振峻。http://ued.ctrip.com/blog/?p=3295
14.(K,V)存儲的數(shù)據(jù)庫如何加快搜索速度?
DHgate網(wǎng):
1.lucene內(nèi)部如何排序择份?
2.搜索引擎的評分機(jī)制扣孟?
3.如何優(yōu)化索引?如何優(yōu)化檢索荣赶?
4.索引文件多大時會影響檢索速度凤价?
5.Java序列化有什么優(yōu)缺點?與開源的protobuffer thrift作比較拔创。
淘寶網(wǎng):
1.給我畫一下IP首部利诺?
2.講一下WEB服務(wù)器的運(yùn)行機(jī)制?
3.HashMap和Hashtable?
4.什么叫索引伏蚊?什么叫分布式數(shù)據(jù)庫立轧?
5.系統(tǒng)線程cpu很高格粪,怎么排查躏吊?
6.對于多線程開發(fā),比較大的挑戰(zhàn)有哪些帐萎?如何避免出現(xiàn)數(shù)據(jù)不一致導(dǎo)致死鎖的問題比伏?線程安全性如何保障?
7.平時關(guān)注哪些開源項目疆导?
8.線上出現(xiàn)問題怎么排查赁项,減少內(nèi)存泄露發(fā)生要注意哪些問題?如何做冗余?
9.性能測試的考核關(guān)注指標(biāo)主要有哪些悠菜?
10.分庫分表與讀寫分離具體如何實現(xiàn)舰攒?說明依據(jù)。
11.講講JVM垃圾回收的原理和算法悔醋。
12.如何保證數(shù)據(jù)庫的事務(wù)性摩窃?通過配置文件可以實現(xiàn),但是從內(nèi)部機(jī)制如何實現(xiàn)芬骄?
13.B+樹為什么能加快搜索速度猾愿?
人人網(wǎng):
1.順時針從外向內(nèi)打印旋轉(zhuǎn)方陣.(面renren時的題)
2.定義棧的數(shù)據(jù)結(jié)構(gòu),要求添加一個min函數(shù)账阻,能夠得到棧中最小元素蒂秘。要求函數(shù)min,push,pop的時間復(fù)雜度為O(1).
3.HTTP是有狀態(tài)還是無狀態(tài)?為什么淘太?
4 .使用過Linux內(nèi)核調(diào)試工具嗎姻僧?
5.Java鎖具體是如何實現(xiàn)的?聊聊各種鎖的優(yōu)缺點和適用場景
6.聊一下Paxos算法的實現(xiàn)蒲牧?
7.Bloom Filter;
8.大整數(shù)加法 ;
9.SOAP和Restful有什么區(qū)別段化?
10.談?wù)凱ageRank算法思想?
搜狗:
1.寫一個bash腳本造成,把當(dāng)前目錄及其所有子目錄下的.java文件都改名為.class文件显熏。(例如:dir1/dir2/name.java 改名為 dir1/dir2/name.class)
58.對sql優(yōu)化有什么實際操作經(jīng)驗?是如何優(yōu)化的晒屎?
云壤:
1.統(tǒng)計一個數(shù)組中出現(xiàn)次數(shù)最多的數(shù)字的次數(shù)喘蟆,如果次數(shù)相同,取較大的數(shù)字出現(xiàn)的次數(shù)鼓鲁。
2.A蕴轨,B兩個升序鏈表,將其合成一個非降序的鏈表C骇吭,且繼續(xù)使用A,B的空間橙弱。
3.求1-n這n個數(shù)字,0,1,2,3,4,5,6,7,8,9各自出現(xiàn)的次數(shù)燥狰。
4.用兩個棧模擬一個隊列棘脐。
5.寫出一個二叉樹的橫向搜索算法。
6.兩個數(shù)組中的數(shù)字求重龙致。
7.如何去掉一個文件里面的c++風(fēng)格注釋蛀缝?
8.求素數(shù)的算法
9.元素為comparable,數(shù)量為n的可重復(fù)數(shù)組目代,要求時間復(fù)雜度O(n),空間復(fù)雜度O(1),問數(shù)組中有沒有某一個元素個數(shù)超過n/2個屈梁?
10. 兩塊虛擬網(wǎng)卡進(jìn)行通訊嗤练,但是需要數(shù)據(jù)加密,如何實現(xiàn)數(shù)據(jù)加密?
11.進(jìn)程和線程的區(qū)別在讶,進(jìn)程通信的方式有哪些煞抬,線程同步控制的方式有哪些?
12.寫一下二分查找构哺。
13.把一個非常大的數(shù)轉(zhuǎn)成二進(jìn)制此疹,求其中1的個數(shù).
京東商城:
1.問項目,主要是電商訂單處理的細(xì)節(jié)遮婶、事務(wù)控制蝗碎、鎖粒度,銀行相關(guān)的業(yè)務(wù)比如支付系統(tǒng)旗扑、財務(wù)系統(tǒng)蹦骑;
2.問基礎(chǔ),如JDK的那個版本開始引入NIO的臀防?NIO設(shè)計思想眠菇、tomcat 中的NIO是怎么用的?解決了什么問題袱衷?
3.分庫解決什么問題捎废?分表解決什么問題?實現(xiàn)分庫分表基于什么標(biāo)準(zhǔn)致燥?一般表多大的時候開始拆分登疗?
蘑菇街:
1.LVS的3中配置方式,你用的那一種嫌蚤?為什么辐益?
2.MongoDB索引用的什么數(shù)據(jù)結(jié)構(gòu)?
3.HashMap的源碼讀過嗎脱吱?
4.一致性hash導(dǎo)致雪崩效應(yīng)時該如何解決智政?(虛擬節(jié)點表)
5.是否讀過集合的JDK源碼?然后就是問源碼細(xì)節(jié)箱蝠。
6.消息中間件怎么設(shè)計會比較高效续捂?
7.redis與memcached的比較,傳統(tǒng)DB和NoSQL DB的差異性比較宦搬。
8.一個存儲系統(tǒng)如何最大化利用磁盤的IO速度牙瓢?現(xiàn)在有上千萬的客戶端要上傳圖片,并且客戶端應(yīng)用需要有權(quán)限分級床三,如何設(shè)計這個系統(tǒng)一罩?
9.如果做系統(tǒng)調(diào)優(yōu)?舉個實際的例子撇簿?
10.Mysql binlog如何做復(fù)制的聂渊?
11.說說對網(wǎng)絡(luò)爬蟲的理解?
12.熟悉Hadoop和HBase嗎四瘫?
億瑪在線:
1.姚晨有一千萬粉絲汉嗽,她發(fā)布了一個消息,如何把這條消息推送到每個粉絲找蜜?
2.用多線程遞增打印一個數(shù);
3.至少使用兩種方法求表達(dá)式的值:1 – 2 + 3 – 4 + … + m饼暑;
4.用多線程模擬考試交卷。
5.函數(shù)的遞歸調(diào)用和棧一樣嗎洗做?
優(yōu)購網(wǎng):
1.主要是做面試題弓叛,沒怎么問項目;
2.運(yùn)算符優(yōu)先級,比如y+=--x/z++,其中x=1,y=2,z=3,設(shè)計運(yùn)算符的優(yōu)先級高低時的標(biāo)準(zhǔn)是什么诚纸?撰筷;
求解math.round(11.5) math.round(-11.5) 。
3.已排好序的數(shù)組int a[]={0,1,2,3,4,5,6,7,8,9}畦徘,用冒泡的話比較次數(shù)是多少毕籽?(有陷阱)
4.廣域網(wǎng)中如何防止sql注入攻擊?
5.有一個四位數(shù)井辆,前兩位相同关筒,后兩位相同,且該四位數(shù)是另外一個兩位數(shù)的平方杯缺,實現(xiàn)高效的算法求該數(shù)是多少蒸播?
這道題本來是一道小學(xué)六年級的算術(shù)題,可以把該問題轉(zhuǎn)化成另外一個求完全平方數(shù)的問題來解答萍肆,還有其它解法廉赔。
6.手寫html,jsp,servlet,jdbc,js完成一個用戶登錄模塊;
7.寫一個sql嵌套語句查詢匾鸥,題目忘了蜡塌。
友友天宇:
1.單向鏈表的反轉(zhuǎn)。
2.海量日志數(shù)據(jù)查詢勿负,搜索引擎會將每次用戶輸入的查詢字符串進(jìn)行記錄馏艾,假設(shè)目前已有1000萬條查詢字符串記錄,每個查詢字符串的長度是1-255個字節(jié),去重后不足300萬條記錄奴愉,請你計算出重復(fù)度最高的前10個查詢字符串琅摩,要求使用內(nèi)存不能超過1G。
3.金額轉(zhuǎn)換锭硼,將阿拉伯?dāng)?shù)字的金額形式“¥1234.56”轉(zhuǎn)換成中文金額的大寫形式“壹仟貳佰叁拾肆元伍角陸分”(最大支持”萬億“房资;10^4為壹萬, 10^8為壹億檀头;注意0轰异,比如:壹仟零貳)岖沛;
4.Linux 的常見命令及shell編程的考察;
58同城:
1.session和cookie;
2.spring IoC 和AOP搭独;
3.緩存池節(jié)點增加婴削,數(shù)據(jù)也增加,如何分配數(shù)據(jù)牙肝?(注意一致性hash是由外部提供的唉俗,memcached和redis本身不提供,推薦看下Tair);
4.JVM 6種gc和gc參數(shù)調(diào)優(yōu)配椭,要求舉實際的例子虫溜;
5.線上系統(tǒng)故障如何排查?要求舉實際例子股缸,比如如何知道是磁盤空間已滿導(dǎo)致業(yè)務(wù)上的問題衡楞?;
6.訂單業(yè)務(wù)的預(yù)留和分配的具體實現(xiàn)步驟乓序?分配是同步還是異步寺酪?業(yè)務(wù)對時限的要求?
7.Java單鏈表反轉(zhuǎn)替劈;
8.Oracle本身如何支持分頁查詢寄雀?寫出sql分頁?
9.講一下B樹索引;
10.談?wù)凩inux系統(tǒng)的一些常見的故障排除方法和調(diào)優(yōu)策略陨献?比如某個JAVA應(yīng)用導(dǎo)致cpu100%盒犹,如何找到這個線程并定位原因解決問題?
11.只寫后端嗎眨业?對前端開發(fā)熟悉嗎急膀?
12.多線程的實現(xiàn)方式,要求結(jié)合項目中用到多線程的地方詳細(xì)講解為什么這個業(yè)務(wù)要用多線程龄捡,而不用單線程卓嫂?
13.數(shù)據(jù)庫的分布式事物如何保證?鎖的使用聘殖?鎖策略晨雳?
14.設(shè)計模式熟悉嗎?舉幾個實際例子并加以說明為什么要用這種設(shè)計模式奸腺?
15.workflow是如何選worker節(jié)點的餐禁?
其他一些小公司:
1.小白鼠喂藥問題(艾漫智慧)
2.怎么理解Sharding?
以下2個問題(標(biāo)號3、4)是一位在Google工作了26年的技術(shù)專家問我的問題突照,要完全答好這兩個問題并不容易帮非!
3.一個程序員應(yīng)該具備什么素質(zhì)?
4.設(shè)計一個接口系統(tǒng)應(yīng)該注意些什么?
5.統(tǒng)計一篇文章中出現(xiàn)的不相同單詞的個數(shù)末盔,要考慮效率筑舅。
6.A和a的Ascii碼哪個大?
7.寫程序打印楊輝三角庄岖。
8.判斷一個文件里重復(fù)的行及重復(fù)的行數(shù)豁翎。
9.說一下數(shù)據(jù)庫連接池的原理角骤。
一般都會根據(jù)簡歷項目問問題
從項目介紹到數(shù)據(jù)量隅忿、系統(tǒng)設(shè)計、存儲和實現(xiàn)細(xì)節(jié)邦尊,然后會穿插基礎(chǔ)性的問題或者比較有深度的問題
1.DB中有海量數(shù)據(jù)背桐,找出其中某條數(shù)據(jù),有哪些策略加快這個過程蝉揍?如果用緩存链峭,假如數(shù)據(jù)都能放進(jìn)內(nèi)存,怎么做比較快又沾?
2.索引有那些分類弊仪?建(province,gender)這種索引,對下面兩種查詢有什么影響杖刷?
a.province & gender;
b.gender & province;
3.類似微博這種應(yīng)用励饵,涉及M:N的Productor&Consumer模型,其中M和N都非常大滑燃,如何在不對Queue加鎖的情況下役听,快速處理這些用戶請求?(暫不考慮緩存表窘、LB)典予?
4.對MongoDB熟悉到何種程度?
5.如果給你一個應(yīng)用乐严,但你不熟悉瘤袖,這時該怎么處理?
6.復(fù)制的模式昂验?Java三大框架捂敌?設(shè)計模式?
7.數(shù)據(jù)量很大的情況下凛篙,如何做緩存黍匾?緩存的策略?
8.如何很快load一個頁面呛梆?(前锐涯、后端角度)
9.對lucene 和Solr熟悉到什么程度?
10.有很多的用戶同時發(fā)帖子填物,如何盡快在前端展示某個用戶發(fā)的帖子纹腌?
假設(shè)某論壇是主從數(shù)據(jù)庫霎终,我發(fā)一個帖子后立即刷新頁面,因為顯示帖子是讀升薯,這個時候如果延遲比較厲害莱褒,就會提示 404 -———帖子不存在,這就有問題了涎劈;我們還要假設(shè)用戶的容忍度是看見自己的新內(nèi)容广凸,別人新的內(nèi)容可以有延遲(實際上延遲是很小的時間單位)壹蔓。
針對這個假設(shè)的問題鲜棠,可以采取幾種方案:
a.有更新數(shù)據(jù)后的 讀取相關(guān)數(shù)據(jù)動作,都從默認(rèn)到主庫嫁乘;
b.利用緩存蹦浦;插入新的數(shù)據(jù)扭吁,會有l(wèi)ast_id返回,組裝成數(shù)據(jù)盲镶,緩存到前端侥袜。讀取此 id 數(shù)據(jù)時,先從緩存取溉贿。
11.實時搜索怎么做枫吧?Lucene支持實時搜索嗎?
Lucene從2.9版本開始就支持實時索引和搜索顽照,主要涉及的類是IndexReader.
12.在有代碼規(guī)范要求時由蘑,MVC代碼結(jié)構(gòu)如何組織,比如前代兵、后端尼酿,數(shù)據(jù)訪問,業(yè)務(wù)邏輯植影,你是如何分類的裳擎?
13.項目中選用的什么web服務(wù)器?答:Nginx思币。追問:為什么鹿响?答:大家都在用。面試官直接無語加無奈...汗谷饿!
14.怎么看待技術(shù)惶我?加班的看法?是否有其他問題要問博投?
搜狗:
1.貝葉斯绸贡;
2.給你一個xml樹和其根節(jié)點,實現(xiàn)其遍歷、查找听怕、插入捧挺、刪除;
3.單點登錄;
4.字符串轉(zhuǎn)數(shù)字尿瞭,比如“-1982.30”(個人理解就是atoi)闽烙;
當(dāng)當(dāng)網(wǎng):你遇到最難解決的技術(shù)問題是什么?
mysql對于大表(千萬級),要怎么優(yōu)化呢?
【鏈接】MySQL對于千萬級的大表要怎么優(yōu)化声搁?
http://www.zhihu.com/question/19719997
MySQL把主表拆分多個表后,如何解決查詢效率問題?
【鏈接】MySQL把主表拆分多個表后,如何解決查詢效率
http://www.zhihu.com/question/19986725
58同城高級Java開發(fā)工程師面試題
1.如果你現(xiàn)在CPU100%了黑竞,你如何查詢是哪個進(jìn)程,哪個線程酥艳,哪行代碼占用CPU過高摊溶?
2.通過端口號查找jvm進(jìn)程怎么查爬骤?
3.對spring的源碼了解了多少充石。
4.https在tomcat中怎么配置,https在tomcat中默認(rèn)端口號是多少霞玄?
5.目前能解決同步鎖阻塞效率問題的線程池
6.比如說你緩存里存了個對象骤铃,可是有一天對象對應(yīng)的類里增加或者刪除了一條屬性,你怎么處理這個緩存中的對象坷剧?
1.如果定義一個類惰爬,放入hashmap 哪些方法需要被重新編寫;
2.請簡述sleep()和wait()的區(qū)別;
3.內(nèi)存泄露與溢出的區(qū)別;
1.有A到J十個人手拉手構(gòu)成一個環(huán),其中A和B不相鄰惫企,問一共有多少種排列方式撕瞧?
2.代碼的優(yōu)化,給出下一段代碼狞尔,請做出最好的優(yōu)化
[cpp] view plaincopy
int f(n)
{
if(n<=4)
return n*n;
else
{
return f(n-4)f(n-1) - f(n-2)f(n-2);
}
}
3.有兩枚硬幣AB丛版,其中A為正常硬幣,B的兩面都是人頭偏序,隨機(jī)從AB中選出一枚页畦,并拋向空中。求:1)若硬幣落下后是人頭研儒,則是A的概率豫缨;2)連續(xù)拋n次,落下后都是人頭端朵,求是A的概率好芭。
4.什么是同步IO和異步IO,各有什么優(yōu)缺點?什么情況下用同步IO較好冲呢,什么時候用異步IO較好舍败?
5.給定一個字符串,求串中字典序最大的子序列
抽象類和接口有什么區(qū)別
請說一下java中的內(nèi)存回收機(jī)制所采用的算法
Sleep()和wait()有什么區(qū)別?
請列舉幾種排序算法瓤湘,并用JAVA實現(xiàn)快速排序算法瓢颅。
36輛車,6條跑道弛说,無計時器挽懦,最少幾次比賽可以選出前三
一個未排序的整形序列,比如10,20,3,7,5,9,4,2,90木人,給出這些數(shù)字當(dāng)中最長連續(xù)數(shù)的長度信柿,例子中的長度是 4[2,3,4,5]。算法復(fù)雜度最好為O(n)
兩個線程醒第,一個運(yùn)行B.m1()渔嚷,一個運(yùn)行B.m2(),這個程序可能的行為有哪些稠曼?
Class A{
int f;
A(){f = 1;}
}
Class B{
A a;
void m1(){a = new A();}
void m2(){if(a != null) System.out.println(a.f);}
}
在N個無序數(shù)中找K個最小值
Hadoop集群的namenode上形病,當(dāng)meta數(shù)據(jù)損壞之后如何修復(fù)?數(shù)據(jù)的丟失率是怎樣計算霞幅?
目前需要對100臺服務(wù)器做RAID 漠吻,有什么方式能夠通過自動化的方式實現(xiàn)?
有超過10億行的數(shù)據(jù)司恳,每行第一列為唯一ID列途乃,其余列為數(shù)值型列扔傅,假設(shè)數(shù)值型列分別為A,B,C,D,請問如何高效的實現(xiàn)一個算法能夠完成:
某一列數(shù)值符合在某個區(qū)間的范圍內(nèi)的記錄的條數(shù)
某一列數(shù)值符合在某個區(qū)間同時另一列數(shù)值在某個數(shù)值區(qū)間的記錄的條數(shù)
某廣告主在渠道投放每天有大量點擊數(shù)據(jù)试读,包含每個點擊的IP信息。請基于IP信息設(shè)計防止渠道作弊的算法和思路邢享。
一個url文件鹏往,每行是一個url地址骇塘,可能有重復(fù)。
(1)統(tǒng)計每個url的頻次款违,設(shè)計函數(shù)實現(xiàn)實現(xiàn)唐瀑。
(2)設(shè)有10億url,平均長度是20插爹,現(xiàn)在機(jī)器有8G內(nèi)存哄辣,怎么處理,寫出思路毅弧。
20個億整數(shù)的兩個集合a與b,求a與b的交集当窗,內(nèi)存為4Gb
在N個無序數(shù)中找K個最小值
一個流式輸入序列(method_name, latency),其中method_name大約有100萬種元咙,latency的取值為1到10億的正整數(shù),每天的數(shù)據(jù)量大概100億條庶香。限制最多 1GB的程序運(yùn)行內(nèi)存简识,設(shè)計一種方法,計算一天內(nèi)每個method_name的50%,95%,99% percentile的latency倘零,誤差不超過5%戳寸。
《編程之美》
http://www.coolshell.cn/
《程序員面試金典》