因為在原公司待的不是很開心,然后決定裸辭了(千萬不要裸辭!!!一方面心理壓力比較大,另一方面也可能會被壓薪資)
裸辭之后沒著急找作業,因為原先做的東西比較偏底層,所以也是學習了一段時間先拿小公司練練手,大廠問的東西無外乎專案、基礎、演算法,這些的話樓主推薦幾本書,基本問的東西都在這里面了《Redis設計與實作》、《Mysql技術內幕 InnoDB存盤引擎》、《TCP-IP詳解卷一》、《HTTP權威指南》、《深入理解Linux內核》、《研磨設計模式》、《資料結構與演算法分析-c語言描述》機械工業的那個 我這邊是應聘go的開發,學習go的話推薦《Go并發編程實戰》、林海的《Go原始碼決議》最好原始碼和書一起看
這篇挺長的,抽著看吧

百度
一面
-
redis和etcd的區別
-
從資料結構方面來講 Redis支持多種資料型別(string,set,list,hash,zset)
-
從讀寫性能上來講,Redis讀寫性能優異,并且提供了RDB、AOF持久化,而etcd v3的底層采用boltdb做存盤,value直接持久化
-
從使用場景上來看,etcd更適用于服務發現,配置管理,而Redis更適用于非強一致性的需求,比如說是佇列,快取,分布式Session
-
兩者都是KV存盤,但是etcd通過Raft演算法保證了各個節點間的資料和事務的一致性,更強調各個節點間的通信;Redis則時更像是記憶體式的快取,因此來說讀寫能力很強,
-
Redis是c開發的,etcd是go開發的,他是源于k8s的興起作為一個服務發現,
-
etcd v3只能通過gRPC訪問,而redis可以通過http訪問,因此etcd的客戶端開發作業量高很多,
-
etcd的Raft演算法介紹一下
-
ping指令的實作,涉及到哪些協議
-
linux的用戶態和內核態,什么時候切換到內核態
-
為什么說執行緒的切換比協程要慢
-
redis、etcd 分布式鎖的實作
-
redis string型別的底層實作
-
和c語言string的區別
-
獲取字串長度只需要O(1)的時間復雜度,程式僅需要訪問SDS的len屬性即可
-
c語言會產生緩沖區溢位,在Redis中如果需要對SDS進行修改時,API回顯檢查SDS的空間是否滿足修改所需要的要求,如果不滿足的話,API會自動將SDS的空間拓展到執行修改所需要的大小,然后才執行實際的修改操作
-
減少修改字串時帶來的記憶體重分配次數,SDS通過free屬性記錄未使用的位元組,通過未使用空間,SDS實作了空間預分配和惰性空間釋放兩種優化策略,是的修改字串長度N次最多需要執行N次的記憶體重分配,
-
c字串只能保存文本資料,SDS可以保存文本或者二進制資料
二面
二面基本是場景設計題,具體忘了,有一說一百度面試體驗很好,和面試官一起探討解決的辦法
之后有一道智力題吧,有10個元素存到長度為12的陣列中,有兩個元素重復,找出這兩個元素
比如a+b通過把元素累加在進行減法運算可以得到a+b
通過累乘再進行除法運算可以得到a*b的值
考慮到假如元素溢位,那么可已通過平方累加得到a^2+b^2的值
根據關系式可以求得a,b的值
三面
-
go和java的區別
可以從多個角度來講 比如面向物件來說,多型繼承等等
從運行速度來講,go的并發模型 channel和goroutine
從包管理來講,go mod 包括之前的dep等等 -
go的gmp調度原理
-
cpu的背景關系切換問題
-
channel有無緩沖槽的區別
主要還是從同步和異步來講 -
redis的zset實作
-
負載均衡實作
幾道演算法題 現場手寫的
堆排的一道問題,string化整型,鏈表反轉
四面
手寫了兩道演算法,單鏈表的中間節點 一道dp題目 百度的演算法題目都是easy到meduim級別的
然后對專案問的比較細,比如在實作的虛擬鏈路中keepalive是怎么實作的啊,有什么可以優化的點嗎
怎么查找程式的性能瓶頸等等
最新2020整理收集的一些面試題(都整理成檔案),有很多干貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,需要獲取這些內容的朋友微信掃描下方二維碼免費獲取:暗號:【CSDN】


滴滴 自動駕駛Vovager
一面
主要是專案和部分基礎知識這里記不太清了
演算法 劍指63 股票問題
dp[i]=max(dp[i-1],num[i]-num[j])
| 1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
問了能不轉py
二面
二面主要問了專案以及一道演算法題和場景設計題,我個人覺得不具有總結性
三面
*epoll和poll的區別
三面送命了,順時針列印矩陣,一般按層模擬就好了,我也不知道怎么腦子就抽了
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
最新2020整理收集的一些面試題(都整理成檔案),有很多干貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,需要獲取這些內容的朋友微信掃描下方二維碼免費獲取:暗號:【CSDN】


Aibee
一面
-
陣列中找出和為k的兩個元素回傳下標 模板題了
另一道有意思的題目可以參考leetcode 560題 -
無頭結點的鏈表元素洗掉
-
排行榜的設計
-
https加密程序
-
InnoDb的索引模型 詳細一些
-
覆寫索引和非覆寫索引的區別
二面
演算法和股票差不多
根據專案延伸來問的一些問題
-
slice的底層實作
-
gmp調度模型
-
golang的gc回收
-
tcp的粘包問題
-
mysql隔離級別
三面
沒啥好說的 和面試官互相吹牛逼了
最新2020整理收集的一些面試題(都整理成檔案),有很多干貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,需要獲取這些內容的朋友微信掃描下方二維碼免費獲取:暗號:【CSDN】

小米
一面
-
Redis快取策略
-
分布式CAP原理
-
Mysql事務的隔離級別 分別解決了哪些問題?
-
mysql的存盤引擎的區別?
-
Redis持久化的區別
-
Grpc的程序
二面
懟了專案 業務上不合適
-
怎么限制goroutine的數量?
-
redis為什么快?

位元組跳動
一面
-
https的程序
-
客戶端請求網址,服務器接收到請求后回傳證書公鑰
-
客戶端驗證證書的有效性和合法性,然后生成一個隨機值
-
客戶端通過證書的公鑰加密隨機值,將加密后的密鑰發送給服務器
-
服務器通過私鑰解密密鑰,通過解密后的密鑰加密要發送的內容
-
客戶端通過密鑰解密接受的內容
-
-
http keep-alive的作用
-
755 是什么權限? 詳細見linux權限入門
7=rwx=4+2+1 5=rx
擁有者可讀可寫可執行 群組可讀可執行 其他組可讀可執行 -
linux 查找當前檔案后20行
tail -n 20 filename -
linux統計字符出現的個數
grep -o objStr filename|wc -l -
epoll和poll的區別
本質都是IO多路復用 -
演算法題 10進制轉7進制
-
演算法題 判斷數獨的有效性
二面
撕AVL樹 撕哈希表
最新2020整理收集的一些面試題(都整理成檔案),有很多干貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,需要獲取這些內容的朋友微信掃描下方二維碼免費獲取:暗號:【CSDN】


知乎
一面
專案
-
redis的多集群方案
-
mysql的b+索引
-
golang的記憶體分配機制
-
golang的多型實作
-
interface的底層實作
二面
只問了兩道演算法
連續子序列的最大和并回傳所有序列
另一道忘了
三面
-
非遞回形式的前序遍歷
-
k個有序鏈表合并
專案問題
-
golang的context包
-
string型別轉為[]byte程序發生了什么
-
redis的資料型別及底層實作
-
mysql聚集索引和非聚集索引底層實作
-
b+樹和紅黑樹

騰訊
一面
之前看面經聽說騰訊面試官惜字如金,果真就想幾個字騙一段話啊
-
golang的多路復用
-
fasthttp為什么快
-
pprof使用
-
性能調優怎么做
-
http2.0的多路復用怎么實作的
-
最大連續子序列和
-
mysql怎么監控流量
-
golang調度 能不能不要p
-
負載均衡哪些演算法?
二面
二面基本圍繞專案拓展來說的 人家說你簡歷寫的我不問,,
場景設計 秒殺、抽獎、推薦 三劍客
etcd和zk的區別
etcd的Raft演算法詳細講一下
三面
專案細問包括一些基礎問題沒啥好講的
職業規劃等等

BIGO
-
prometheus實際使用
-
linux tcp 半連接
-
常見的linux指令
tail pwd chmod lsof netstat top -
實作一個壓測工具
golang撰寫一個http客戶端,支持引數httprequest -c 5 -r 1000 http://**** 客戶端,輸出所有回應 -
string型別加法實作
-
sql題
復制代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE IF NOT EXISTS `mytable` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`video_id` bigint unsigned NOT NULL DEFAULT0,`uid`intunsigned NOT NULL DEFAULT0,`country` varchar(194) NOT NULL ,`class` varchar(64) NOT NULL ,`status` tinyint(4) unsigned NOT NULL DEFAULT'0',`video_view` bigint(20) unsigned NOT NULL DEFAULT'0',`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;SELECT * FROM mytable WHERE created > ? ANDclass= ? AND country IN (?) ORDER BY created DESC LIMIT100;SELECT * FROM mytable WHEREclass= ? AND country IN (?) ORDER BY video_view DESC LIMIT100;SELECT * FROM mytable WHERE created > ? ANDclassIN (?) LIMIT100;SELECT * FROM mytable WHERE created > ? AND country IN (?) LIMIT100;怎么建索引?
-
map如何實作順序讀取
空間換時間
借助額外的資料結構比如slice 等,對key進行排序,遍歷slice得到順序輸出 -
協程泄***r>如果你啟動了一個 goroutine,但并沒有符合預期的退出,直到程式結束,此goroutine才退出,這種情況就是 goroutine 泄露,當 goroutine 泄露發生時,該 goroutine 的堆疊(一般 2k 記憶體空間起)一直被占用不能釋放,goroutine 里的函式在堆上申請的空間也不能被 垃圾回收器 回收,
-
空結構體的用處
空結構體不占用記憶體空間-
實作set
-
實作chan struct{} 不占用記憶體空間,實作傳遞信號的通道
剩下的忘了一直在看表了想著還不結束, 面了兩個小時
-
最新2020整理收集的一些面試題(都整理成檔案),有很多干貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,需要獲取這些內容的朋友微信掃描下方二維碼免費獲取:暗號:【CSDN】

面試總結
不知道你們看完了發現沒,就一個百度,就要懂很多知識點,那如果阿里巴巴,支付寶,華為、等一線大廠呢?是不是感覺自己還要學習的還有很多~
經過這次面試,我總結一下幾點:
1、基本語法
這包括static、final、transient等關鍵字的作用,foreach回圈的原理等等,今天面試我問你static關鍵字有哪些作用,如果你答出static修飾變數、修飾方法我會認為你合格,答出靜態塊,我會認為你不錯,答出靜態內部類我會認為你很好,答出靜態導包我會對你很滿意,因為能看出你非常熱衷研究技術,
2、集合
非常重要,也是必問的內容,基本上就是List、Map、Set,問的是各種實作類的底層實作原理,實作類的優缺點,集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的實作原理,能流利作答,當然能掌握CopyOnWrite容器和Queue是再好不過的了,另外多說一句,ConcurrentHashMap的問題在面試中問得特別多,大概是因為這個類可以衍生出非常多的問題,關于ConcurrentHashMap,我給網友朋友們提供三點回答或者是研究方向:
(1)ConcurrentHashMap的鎖分段技術
(2)ConcurrentHashMap的讀是否要加鎖,為什么
(3)ConcurrentHashMap的迭代器是強一致性的迭代器還是弱一致性的迭代器
3、設計模式
設計模式在作業中還是非常重要、非常有用的,23種設計模式中重點研究常用的十來種就可以了,面試中關于設計模式的問答主要是三個方向:
(1)你的專案中用到了哪些設計模式,如何使用
(2)知道常用設計模式的優缺點
(3)能畫出常用設計模式的UML圖
4、多執行緒
這也是必問的一塊了,會問得深入一些比如說Thread和Runnable的區別和聯系、多次start一個執行緒會怎么樣、執行緒有哪些狀態,當然這只是最基本的,出乎意料地,幾次面試幾乎都被同時問到了一個問題,問法不盡相同,總結起來是這么一個意思:假如有Thread1、Thread2、Thread3、Thread4四條執行緒分別統計C、D、E、F四個盤的大小,所有執行緒都統計完畢交給Thread5執行緒去做匯總,應當如何實作?
聰明的網友們對這個問題是否有答案呢?不難,java.util.concurrent下就有現成的類可以使用,
另外,執行緒池也是比較常問的一塊,常用的執行緒池有幾種?這幾種執行緒池之間有什么區別和聯系?執行緒池的實作原理是怎么樣的?實際一些的,會給你一些具體的場景,讓你回答這種場景該使用什么樣的執行緒池比較合適,最后,雖然這次面試問得不多,但是多執行緒同步、鎖這塊也是重點,synchronized和ReentrantLock的區別、synchronized鎖普通方法和鎖靜態方法、死鎖的原理及排查方法等等
5、IO
IO分為File IO和Socket IO,File IO基本上是不會問的,問也問不出什么來,平時會用就好了,另外記得File IO都是阻塞IO,Socket IO是比較重要的一塊,要搞懂的是阻塞/非阻塞的區別、同步/異步的區別,借此理解阻塞IO、非阻塞IO、多路復用IO、異步IO這四種IO模型,Socket IO如何和這四種模型相關聯,這是基本一些的,深入一些的話,就會問NIO的原理、NIO屬于哪種IO模型、NIO的三大組成等等,這有些難,當時我也是研究了很久才搞懂NIO,提一句,NIO并不是嚴格意義上的非阻塞IO而應該屬于多路復用IO,面試回答的時候要注意這個細節,講到NIO會阻塞在Selector的select方法上會增加面試官對你的好感,如果用過Netty,可能會問一些Netty的東西,畢竟這個框架基本屬于當前最好的NIO框架了(Mina其實也不錯,不過總體來說還是比不上Netty的),大多數互聯網公司也都在用Netty,
6、JDK原始碼
要想拿高工資,JDK原始碼不可不讀,上面的內容可能還和具體場景聯系起來,JDK原始碼就是實打實地看你平時是不是愛鉆研了,
JDK原始碼其實沒什么好總結的,純粹看個人,總結一下比較重要的原始碼:
(1)List、Map、Set實作類的源代碼
(2)ReentrantLock、AQS的源代碼
(3)AtomicInteger的實作原理,主要能說清楚CAS機制并且AtomicInteger是如何利用CAS機制實作的
(4)執行緒池的實作原理
(5)Object類中的方法以及每個方法的作用
7、框架
老生常談,面試必問的東西,一般來說會問你一下你們專案中使用的框架,然后給你一些場景問你用框架怎么做,比如我想要在Spring初始化bean的時候做一些事情該怎么做、想要在bean銷毀的時候做一些事情該怎么做、MyBatis中$和#的區別等等,這些都比較實際了,平時積累得好、有多學習框架的使用細節自然都不成問題,
如果上面你的問題答得好,面試官往往會深入地問一些框架的實作原理,問得最多的就是Spring AOP的實作原理,當然這個很簡單啦,兩句話就搞定的的事兒,即使你不會準備一下就好了,
8、資料庫
資料庫十有八九也都會問到,一些基本的像union和union all的區別、left join、幾種索引及其區別就不談了,比較重要的就是資料庫性能的優化,如果對于資料庫的性能優化一竅不通,那么有時間,還是建議你在面試前花一兩天專門把SQL基礎和SQL優化的內容準備一下,
不過資料庫倒是不用擔心,一家公司往往有很多部門,如果你對資料庫不熟悉而基本技術又非常好,九成都是會要你的,估計會先把你放到對資料庫使用不是要求非常高的部門鍛煉一下,
9、資料結構和演算法分析
資料結構和演算法分析,對于一名程式員來說,會比不會好而且在作業中絕對能派上用場,陣列、鏈表是基礎,堆疊和佇列深入一些但也不難,樹挺重要的,比較重要的樹AVL樹、紅黑樹,可以不了解它們的具體實作,但是要知道什么是二叉查找樹、什么是平衡樹,AVL樹和紅黑樹的區別,
10、Java虛擬機
Java虛擬機應該是很重要的一塊內容,談談Java虛擬機中比較重要的內容
ava虛擬機的記憶體布局
GC演算法及幾種垃圾收集器
類加載機制,也就是雙親委派模型
Java記憶體模型
happens-before規則
volatile關鍵字使用規則
也許這些內容面試無用,但在走向大牛的路上,不可不會,
11、Web方面的一些問題
Java主要面向Web端,因此Web的一些問題也是必問的,
談談分布式Session的幾種實作方式?(常用的四種能答出來自然是讓面試官非常滿意的)
講一下Session和Cookie的區別和聯系以及Session的實作原理
這兩個問題之外,web.xml里面的內容是重點,Filter、Servlet、Listener,不說對它們的實作原理一清二楚吧,至少能對它們的使用知根知底,另外,一些細節的方面比如get/post的區別、forward/重定向的區別、HTTPS的實作原理也都可能會被考察到,
最后,如果有興趣有時間,建議學習、研究一下SOA和RPC,面向服務體系,大型分布式架構必備,救命良方、包治百病、屢試不爽,
最新2020整理收集的一些面試題(都整理成檔案),有很多干貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題資料等,需要獲取這些內容的朋友微信掃描下方二維碼免費獲取:暗號:【CSDN】


看完三件事??
如果你覺得這篇內容對你還蠻有幫助,我想邀請你幫我三個小忙:
-
點贊,轉發,有你們的 『點贊和評論』,才是我創造的動力,
-
關注公眾號 『 java爛豬皮 』,不定期分享原創知識,
-
同時可以期待后續文章ing🚀

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/226823.html
標籤:其他

