shopee基本就沒問語言相關問題,很大的一部分難點在網(wǎng)絡和數(shù)據(jù)庫舔痕,其他的方面都是很常規(guī)的題
一面
項目相關
- 介紹了一下項目
- 怎么避免線程空轉(zhuǎn)的
- epoll和select和poll
- 什么是線程安全袜腥,怎么做到線程安全
數(shù)據(jù)結(jié)構&&操作系統(tǒng)&&網(wǎng)絡
這幾個方面好像很少枚冗,寫在一起吧
- 數(shù)組和鏈表不同
- set和unordered_set的底層
- 具體說說哈希表
- 什么是堆狼纬,堆排序
- 進程通信方式
- 虛擬地址的好處
- 什么是缺頁異常
- 三次握手四次揮手
- time_wait狀態(tài)在哪里
- https過程
數(shù)據(jù)庫
- mysql的存儲引擎
- 索引的數(shù)據(jù)結(jié)構
- 創(chuàng)建索引要考慮什么問題,例如索引越多越好嗎(索引的維護需要時間空間不是越多越好优构,要考慮哪些列常被用來做條件,考慮聯(lián)合索引的最左匹配雁竞,非聚簇索引可以用覆蓋索引)
- redis的五種基本數(shù)據(jù)結(jié)構
- 說出redis的10個命令(我就憋了幾個钦椭,不到10個,他估計也看透了我水平了)
- redis的過期策略(有l(wèi)ru還有隨機吧)
- lru是屬于主動過期還是被動過期(這啥啊,我不會……)
做題
小case彪腔,寫的挺快的侥锦,面試官可能覺得我編程題還可以才給過的吧,畢竟我數(shù)據(jù)庫那塊那么爛……
- 合并鏈表
- 最長不重復子串
二面
項目
- (一見面就夸我項目經(jīng)驗多)介紹了后臺和安卓兩個項目
- reactor模式介紹
- 使用多路復用和普通的方式對比有什么好處(一個線程能維護多個連接德挣,減少線程數(shù))
- 使用多路復用的話怎么做到快速響應一個連接上的事件(非阻塞io恭垦,耗時任務丟給計算線程)
- 非阻塞io和阻塞io區(qū)別
網(wǎng)絡
- tcp和udp的不同
- tcp怎么處理丟包的問題的(ack,超時重傳盲厌,接收緩沖署照,快重傳)
- 如果接收方發(fā)了重復ack了,但是對方一直沒有回應會怎樣(不知道吗浩,我說可能就丟棄接收緩沖的數(shù)據(jù)了)
- 知道一個域名建芙,怎么和他通信(dns,ip懂扼,路由)
- http除了常用的get和post還有什么方法
- 說了一個廣播造成的問題問怎么解決禁荸,我想了一會才反應過來是廣播風暴,我說我只記得可以用“生成樹協(xié)議”
- A要用到B服務器的服務阀湿,開了多個連接赶熟,但是只有一小部分連接成功了,怎么排查原因(我說可以用netstat查看一下兩端的連接狀態(tài)陷嘴,比如可以判斷B是否被SYN攻擊了映砖,還是單純網(wǎng)絡問題。 另外也可能B端的文件描述符用完了灾挨,他表示能想到文件描述符這個層面很好)
數(shù)據(jù)庫
- 索引的數(shù)據(jù)結(jié)構邑退,與B樹的區(qū)別
- 事務的特性
- 原子性怎么實現(xiàn)(undo log做回滾)
- undo log什么情況會執(zhí)行(崩潰重啟)
- 那重啟時怎么判斷是要做undo log還是redo log(不會……)
- 隔離級別說一下
- 和隔離級別對應的有三個問題說一下
- 那隔離級別是怎么實現(xiàn)的(我說用鎖,但是具體用什么鎖怎么用我忘了)
- 了解redis那其他的中間件例如*¥%¥#劳澄,#¥#%地技,H%454
^……有了解的嗎(有一兩個大概知道做什么的但是確實不了解)
- 微服務呢(我了解個概念吧……)
智力題
本來已經(jīng)結(jié)束了,結(jié)果我問他這輪怎么沒寫代碼秒拔,他說你要的話我出幾道題莫矗,口述即可
- 檢測鏈表是否有環(huán)
- 圓形棋盤下棋,最后一個放的贏砂缩,問先手策略(這題我拼多多面過……)
- 2個玻璃球100層樓問題作谚,沒想到最優(yōu),只想到2分