攜程&拼多多研發面經

攜程&拼多多研發面經

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

攜程面經

一面:

租車事業部

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 項目經歷介紹

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

▼更多精彩內容

今日頭條研發面經

螞蟻金服研發面經

百度研發面經整合版

拼多多&快手研發面經

美團&京東研發面經

大俠,這裏有乾貨!

喜歡記得來一個

--------------------- 本文來自 How_2_Play_Life 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/a724888...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章