攜程&拼多多研發面經
攜程&拼多多研發面經
攜程面經是參考我同學的面試經驗寫出來的,因為面試官的問題可能不怎麼更新,所以有緣的小夥伴看看,說不定就面到了。
攜程面經
一面:
租車事業部
1 專案講一下
2 多執行緒併發讀取資料庫可能出現的問題,如何解決執行緒數不夠帶來的問題,我說了幾種方式,一個是使用快取,一個是使用資料庫連線池,他問我能不能借助類似IO處理的方式來優化,於是我說了使用AIO非同步處理。他問我有沒有用過,我就大概說了一下。
3 Java的資料結構瞭解哪些,說一下linkedlist和ArrayList的區別,如果使用它們來儲存字串,哪個更合適呢,如果要進行字串的增刪改查和拼接操作呢。
4 多個string常量相加會有什麼問題,我說會產生多個string,其實是會使用stringbuilder進行append操作,每次相加都會新建一個stringbuilder物件,比較低效。
而使用stringbuilder物件直接append則只有一個stringbuilder物件。
當使用for迴圈時,string相加會優化成一個stringbuilder進行append操作。
5 map是否執行緒安全,為什麼不是呢,如何實現執行緒安全呢,除了用chm和hashtable還有別的方式嗎,我說自己實現一個map然後重寫get和put方法,加synchronized即可。
6 說幾種你瞭解的設計模式,讓我選一種寫一下,果斷寫了列舉類單例。
7 http的方法有哪些,get和post的區別,get的url長度是否有限制,url很長會有什麼問題,我說了安全問題,長度限制,以及處理麻煩,好像不是他想要的答案。
8 MySQL的索引怎麼加,什麼時候用不到索引,怎麼建立索引。
9 線上報錯了怎麼辦,log日誌怎麼打的,使用應用日誌會有什麼缺點,如果是全鏈路呼叫的日誌要怎麼記錄,我聯想到elk,不過沒講清楚。
10 redis的資料結構有哪些,使用過哪些。
11 git你們是怎麼用的,有幾個分支,上線報錯了怎麼辦,可以直接回滾麼。
12 Java的volatile關鍵字是怎麼實現的。
13 java為什麼要有多級的類載入器
換了個部門又面了一次
酒旅事業部:
1 拿出我寫的筆試題,問我當時怎麼想的,我就說使用順序查詢,他說這個複雜不達標,只能到o(n),但是不能到O(lgn),讓我優化。
我剛開始說在輸入時去做判斷,他說要優化程式碼,不能直接在輸入做。
於是開始思考,然後他給了我提示,說可以用hashmap,引導我說出key為日期,value為訂單號的做法,然後我又以此類推說了另一個日期的操作。
最後終於想出來可以把開始日期到結束日期之間的時間都放到key裡,然後只要命中就是符合條件的選項,這樣的複雜度就是O(1)了。因為輸入時直接放入map,用的時候讀取即可。
2 問我專案裡的一些東西。
3 網路程式設計方面,select,poll,epoll的區別,優缺點,使用場景。
4 Java的多執行緒
5 MySQL的聚簇索引和非聚簇索引,用不到索引的情況,非聚簇索引能有多個麼,索引能建很多麼,會有什麼問題。
6 MySQL和redis配合,寫一下get和set方法對應的流程圖,先更新快取還是資料庫,不命中資料怎麼辦,然後又問如果是多執行緒的進行這類操作呢,我剛開始說事務,他說不是的,我又說用redis代理來完成這一操作,保證redis的讀寫自動觸發mysql的讀寫,保證其事務性,但是他說這樣太依賴於Redis了,會出問題。然後他問我一般如何保證多執行緒併發安全,我說可以使用鎖,他說如果是叢集環境呢,我說那麼用分散式鎖吧。他問我一般怎麼實現分散式鎖,我就說了redis和zk。
7 讓我設計一系列關於許可權管理的表,問我需要哪些表,我說就使用者表,許可權表吧,然後引導我說還需要一張職位表,但是一個使用者可能有多個許可權,並且許可權是可變的,可以是多對多的關係,於是他又引導我寫出了使用者-許可權的連線表。同理還需要一張職位-許可權的連線表,於是一共需要五張表,可以說面試官還是很善良的。
8 一道開放智力題
一家餐館,有6張小桌,四張大桌,平均用餐1小時, 門口有10個等待的人,6個人是一起的,另外2個人和2個人是分開的。問我在這些條件下如何預估我們兩個人要等多久才能吃到飯,我就巴拉巴拉說了一堆,最後引導我說出了小桌要等60/6 = 10,前面兩組20分鐘,一共是30分鐘。
拼多多
之前拼多多學霸批掛了,所以又來面了一次正式批,不同於學霸批,這次面試官和hr都不再熱情,而是給我一種很不耐煩的感覺,面試體驗很差,所以草草面完了。
一面:
1 專案
2 筆試題,迴圈小數,說一下思路
3 說一下SpringMVC和Spring,hibernate
4 MySQL資料庫和Redis說一下
5 分散式鎖怎麼使用,setnx和設定超時是兩條指令,怎麼保證原子性,可以使用lua指令碼保證在事務中執行。
6 你們的Redis是怎麼用的,如何做快取更新。
7 jvm記憶體分割槽,執行緒池工作原理。
8 演算法題,abbaabbaaa這樣的字串,怎麼變成aaabbbaaa,這種形式的字串
。其中a和b的個數都可以是0到n個。
剛開始說用dfs刪除元素,後來說了用map和其他容器來存元素個數,都不對,
最後面試官說,可以用兩個for迴圈設定i和j兩個斷點
二面
HR嘰裡呱啦,很不耐煩的樣子
1 拿了幾個offer了
2 對拼多多有什麼瞭解
3 我們工作壓力大你能接受麼
4 薪酬你預計要多少
5 城市選擇問題
6 女朋友,家裡人的想法
7 職業規劃。
三面
1 演算法題,兩個棧實現一個佇列,並且要維護佇列的最小值。
沒答好,很煩。
2 然後問基礎,Java容器,linkedhashmap,3 hashmap實現,treemap實現
3 Java多執行緒的狀態,實現方式,通訊方式
4 MySQL,redis巴拉巴拉
5 單點登陸實現,cookie不能跨域怎麼辦。能否直接繫結ip訪問session
6 專案經歷介紹
感覺面試官態度不太好,也就隨便面完了。
▼更多精彩內容
大俠,這裡有乾貨!
喜歡記得來一個