談談面試知識點準備

storyflow發表於2021-11-24

一、背景

一直當大頭兵,好久沒面試了,很多人有個誤區:把面試題不應該背背就能過了嗎?
最近面試發現現實是:面試還是偏向八股文 && 考察你是否真的理解了。(php轉go的開發)
更在乎你的上限有多高?不是太關注你解決問題的能力有多強。(似乎有點諷刺)

二、為什麼?

大家捲起來,肯定要區分考察度,簡單的面試題被攻克了,那就考察八股文。
八股文被攻克了,那就考慮你是不是真懂了。( 讓面試官覺得你懂了也是本事 )

真的知識其實是很少的,等我面完總結了下發現:其實面試的點其實是很少的,也造成了我的錯覺,不就那麼些知識點嗎?
雖然就是那些知識點,我真的懂了嗎? 錯覺就是:會造成你覺得面試可以,但是面試官覺得一塌糊塗。

三、面試風格

本來應該是考察程式設計水平怎麼樣,但是基本因為一些原因導致基本都變形了,特別是網路那些面試題,基本就是細節的QA,本身用的不多。
沒辦法,背吧。

八股文還是偏向死記硬背,問的高階點就是問理解了。
有些面試題感覺有點過了。比如:某物的,磁碟io和網路io區別
另外一類是位元組之類,問到你不會為止。
比如怎麼解決快取穿透?你說singlefight?接著會追問,問到你不會為止。
不會? 你認為應該怎麼設計?

四、面試題目型別

1)QA型別問題

方案:臨時抱佛腳還是很有用的

背誦的問題就是很容易忘了,雖然有些平時根本用不到,能理解還是理解下吧,畢竟還會有下次。

2)知識盲點 - 底層實現原理

有些知識盲點是想不明白的,解決方案:認真思考把它想通。

比如說之前在準備go channel的底層原理的時候
中文的很多文章屬於二手理解,可能理解不了。
建議看看英文資料,相對來說講的更清晰些。

最喜歡問概念是否清晰的問題? 為什麼要這麼設計?
例如:mysql的b+樹的連結串列是雙向和單向的?

3)知識盲點 - 資料結構+演算法

出門左轉 leetcode

4)知識盲點 - 架構類 (基本準備不了)

這些最常見的就是分散式架構相關經驗,我也在學習中。
比如CAP、可用性、高併發、一致性等等

五、方法論篇

1) 縱向對比

例如:
1、資料結構:b樹、b+樹、二叉樹、調錶、紅黑樹的區別?
2、選型方面:rabbitmq、rocketmq、kafka區別?

2)深入學習(看書等)

比如go channel, 剛開始對傳送、接收機制不熟悉,然後多找了一些資料,懂了之後,就發現簡單很多了。

3)按主題/結構 (多關注社群主題分享)

這個比較高階,比如談談分散式鎖?
Before:
我們是用的redis setnx來實現的。然後就沒有然後了。
After:
有三種:資料庫鎖,shard application,中心化鎖管理(redis、zke、tcd等)
1)資料庫鎖:樂觀鎖、給資料行加版本號
2)shard: 主要採用一致性hash, 用的不多
3) redis: set + nx引數,多節點採用Redlock。可能存在鎖丟失問題,用Redisson續期。
4)zk: 大家都是上來直接建立一個鎖節點下的一個接一個的臨時順序節點。如果自己不是第一個節點,就對自己上一個節點加監聽器。只要上一個節點釋放鎖,自己就排到前面去了,相當於是一個排隊機制。
5) 考慮效能用redis分散式鎖(AP模式),對一致性要求高用zk(CP模式)。
推薦:技術分享:Distributed Lock Manager (陳皓)

六、最後

做大頭兵,基本知識肯定夠了。想往上發展,這些知識點是逃不掉的。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章