1. 程式人生 > >攜程&拼多多研發面經

攜程&拼多多研發面經

攜程&拼多多研發面經

 

 

 

 

 

攜程面經是參考我同學的面試經驗寫出來的,因為面試官的問題可能不怎麼更新,所以有緣的小夥伴看看,說不定就面到了。

 

攜程面經

一面:

租車事業部

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 專案經歷介紹

感覺面試官態度不太好,也就隨便面完了。

 

 

 

 

 

 

▼更多精彩內容

 

今日頭條研發面經

螞蟻金服研發面經

百度研發面經整合版

拼多多&快手研發面經

美團&京東研發面經

 

 


大俠,這裡有乾貨!

 

 

喜歡記得來一個