在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

技術(shù)大牛分享快手面試面經(jīng)

小林coding ? 來源:小林coding ? 2023-04-15 15:39 ? 次閱讀

這段時間分享了很多校招的面經(jīng),有很多讀者說想看社招的,其實(shí)社招面試是基于你的工作項(xiàng)目來展開問的,比如你項(xiàng)目用了 xxx 技術(shù),那么面試就會追問你項(xiàng)目是怎么用 xxx 技術(shù)的,遇到什么難點(diǎn)和挑戰(zhàn),然后再考察一下這個 xxx 技術(shù)的原理。

今天就分享一位快手社招面經(jīng),崗位是后端開發(fā),問題都是基于項(xiàng)目涉及的技術(shù)棧去展開聊的,同時最后也會有算法題。

項(xiàng)目

  • 自我介紹+項(xiàng)目介紹
  • 就你負(fù)責(zé)比較多的項(xiàng)目詳細(xì)說說,項(xiàng)目背景,data模型,流程,難點(diǎn)和挑戰(zhàn)
  • 講講項(xiàng)目后端用到的技術(shù)棧,比如mq,rpc,緩存啥的
  • 消息隊列用過嗎,業(yè)務(wù)場景?
  • 怎么保證消息的有序性?

Redis

Redis有哪些數(shù)據(jù)類型

回答:String,list,map,set,Zset,stream,hyperloglog。。。

(打斷)追問:map怎么擴(kuò)容,擴(kuò)容時會影響緩存嗎

回答:底層有兩個dict,一個dict負(fù)責(zé)請求,到達(dá)負(fù)載比例進(jìn)行擴(kuò)容,漸進(jìn)式擴(kuò)容,一部分一部分轉(zhuǎn)移到新的dict

追問:擴(kuò)容時訪問key怎么處理?

回答:先從舊dict獲取key,查不到的話,然后從新的dict獲取key

小林補(bǔ)充:

進(jìn)行 rehash 的時候,需要用上 2 個哈希表了。

798bf1f2-db5a-11ed-bfe3-dac502259ad0.pngimg

在正常服務(wù)請求階段,插入的數(shù)據(jù),都會寫入到「哈希表 1」,此時的「哈希表 2 」 并沒有被分配空間。

隨著數(shù)據(jù)逐步增多,觸發(fā)了 rehash 操作,這個過程分為三步:

  • 給「哈希表 2」 分配空間,一般會比「哈希表 1」 大 2 倍;
  • 將「哈希表 1 」的數(shù)據(jù)遷移到「哈希表 2」 中;
  • 遷移完成后,「哈希表 1 」的空間會被釋放,并把「哈希表 2」 設(shè)置為「哈希表 1」,然后在「哈希表 2」 新創(chuàng)建一個空白的哈希表,為下次 rehash 做準(zhǔn)備。

為了方便你理解,我把 rehash 這三個過程畫在了下面這張圖:

79b89450-db5a-11ed-bfe3-dac502259ad0.pngimg

這個過程看起來簡單,但是其實(shí)第二步很有問題,如果「哈希表 1 」的數(shù)據(jù)量非常大,那么在遷移至「哈希表 2 」的時候,因?yàn)闀婕按罅康臄?shù)據(jù)拷貝,此時可能會對 Redis 造成阻塞,無法服務(wù)其他請求

為了避免 rehash 在數(shù)據(jù)遷移過程中,因拷貝數(shù)據(jù)的耗時,影響 Redis 性能的情況,所以 Redis 采用了漸進(jìn)式 rehash,也就是將數(shù)據(jù)的遷移的工作不再是一次性遷移完成,而是分多次遷移。

漸進(jìn)式 rehash 步驟如下:

  • 給「哈希表 2」 分配空間;
  • 在 rehash 進(jìn)行期間,每次哈希表元素進(jìn)行新增、刪除、查找或者更新操作時,Redis 除了會執(zhí)行對應(yīng)的操作之外,還會順序?qū)ⅰ腹1?1 」中索引位置上的所有 key-value 遷移到「哈希表 2」 上
  • 隨著處理客戶端發(fā)起的哈希表操作請求數(shù)量越多,最終在某個時間點(diǎn)會把「哈希表 1 」的所有 key-value 遷移到「哈希表 2」,從而完成 rehash 操作。

這樣就巧妙地把一次性大量數(shù)據(jù)遷移工作的開銷,分?jǐn)偟搅硕啻翁幚碚埱蟮倪^程中,避免了一次性 rehash 的耗時操作。

在進(jìn)行漸進(jìn)式 rehash 的過程中,會有兩個哈希表,所以在漸進(jìn)式 rehash 進(jìn)行期間,哈希表元素的刪除、查找、更新等操作都會在這兩個哈希表進(jìn)行。比如,查找一個 key 的值的話,先會在「哈希表 1」 里面進(jìn)行查找,如果沒找到,就會繼續(xù)到哈希表 2 里面進(jìn)行找到。

另外,在漸進(jìn)式 rehash 進(jìn)行期間,新增一個 key-value 時,會被保存到「哈希表 2 」里面,而「哈希表 1」 則不再進(jìn)行任何添加操作,這樣保證了「哈希表 1 」的 key-value 數(shù)量只會減少,隨著 rehash 操作的完成,最終「哈希表 1 」就會變成空表。

跳表結(jié)構(gòu)了解嗎

回答:第一層是雙向鏈表,會有多層來作為鏈表的索引

追問:和二叉樹有什么區(qū)別,從時間復(fù)雜度和空間復(fù)雜度分析

回答:二叉查找樹的時間復(fù)雜度是O(logn),空間復(fù)雜度是O(n);跳表的時間復(fù)雜度是O(log_{k}n),k為跳表索引步長,空間復(fù)雜度是O(n)

MySQL

MySQL事務(wù)用過嗎,應(yīng)用場景是什么

自己學(xué)習(xí)的demo里用過,場景:銀行轉(zhuǎn)賬

追問:假如是跨行轉(zhuǎn)賬怎么解決事務(wù)

回答:我想一想。。。

小林補(bǔ)充:用分布式事務(wù)

(打斷)追問:跨行先不說,先說不跨行,先說說單庫事務(wù),事務(wù)的4個基本特性

回答:原子性,一致性,隔離性,持久性

追問:一致性指的是什么

回答:一致性指的是事務(wù)提交前后數(shù)據(jù)庫狀態(tài)一致,是原子性,隔離性和持久性的整合

追問:隔離級別有哪幾種

回答:讀未提交,讀已提交,可重復(fù)讀,序列化

追問:可重復(fù)讀是是什么意思,怎么實(shí)現(xiàn)的

同一個事務(wù)中多次讀取結(jié)果一致。通過Read View + MVCC實(shí)現(xiàn),在事務(wù)開始時創(chuàng)建一個Read View,之后都用這個Read View。

追問:可重復(fù)讀具體實(shí)現(xiàn)細(xì)節(jié)

回答:Read View的結(jié)構(gòu)包含(1)當(dāng)前事務(wù)id,(2)active事務(wù)id列表,(3)最小active事務(wù)id記為min_txn_id,(4)next事務(wù)id記為max_txn_id。如果record對應(yīng)的事務(wù)id,小于最小active事務(wù)id,直接讀;否則讀取最小active事務(wù)id之前版本的數(shù)據(jù)(這塊的邏輯答得有問題,用語言表達(dá)時有點(diǎn)混亂,可以私下多練習(xí)練習(xí)表達(dá))

小林補(bǔ)充:

我們需要了解兩個知識:

  • Read View 中四個字段作用;
  • 聚簇索引記錄中兩個跟事務(wù)有關(guān)的隱藏列;

那 Read View 到底是個什么東西?

79df94a6-db5a-11ed-bfe3-dac502259ad0.pngimg

Read View 有四個重要的字段:

  • m_ids :指的是在創(chuàng)建 Read View 時,當(dāng)前數(shù)據(jù)庫中「活躍事務(wù)」的事務(wù) id 列表,注意是一個列表,“活躍事務(wù)”指的就是,啟動了但還沒提交的事務(wù)
  • min_trx_id :指的是在創(chuàng)建 Read View 時,當(dāng)前數(shù)據(jù)庫中「活躍事務(wù)」中事務(wù) id 最小的事務(wù),也就是 m_ids 的最小值。
  • max_trx_id :這個并不是 m_ids 的最大值,而是創(chuàng)建 Read View 時當(dāng)前數(shù)據(jù)庫中應(yīng)該給下一個事務(wù)的 id 值,也就是全局事務(wù)中最大的事務(wù) id 值 + 1;
  • creator_trx_id :指的是創(chuàng)建該 Read View 的事務(wù)的事務(wù) id

知道了 Read View 的字段,我們還需要了解聚簇索引記錄中的兩個隱藏列。

假設(shè)在賬戶余額表插入一條小林余額為 100 萬的記錄,然后我把這兩個隱藏列也畫出來,該記錄的整個示意圖如下:

79f36a76-db5a-11ed-bfe3-dac502259ad0.png圖片

對于使用 InnoDB 存儲引擎的數(shù)據(jù)庫表,它的聚簇索引記錄中都包含下面兩個隱藏列:

  • trx_id,當(dāng)一個事務(wù)對某條聚簇索引記錄進(jìn)行改動時,就會把該事務(wù)的事務(wù) id 記錄在 trx_id 隱藏列里
  • roll_pointer,每次對某條聚簇索引記錄進(jìn)行改動時,都會把舊版本的記錄寫入到 undo 日志中,然后這個隱藏列是個指針,指向每一個舊版本記錄,于是就可以通過它找到修改前的記錄。

在創(chuàng)建 Read View 后,我們可以將記錄中的 trx_id 劃分這三種情況:

7a1748d8-db5a-11ed-bfe3-dac502259ad0.pngimg

一個事務(wù)去訪問記錄的時候,除了自己的更新記錄總是可見之外,還有這幾種情況:

  • 如果記錄的 trx_id 值小于 Read View 中的 min_trx_id 值,表示這個版本的記錄是在創(chuàng)建 Read View 已經(jīng)提交的事務(wù)生成的,所以該版本的記錄對當(dāng)前事務(wù)可見

  • 如果記錄的 trx_id 值大于等于 Read View 中的 max_trx_id 值,表示這個版本的記錄是在創(chuàng)建 Read View 才啟動的事務(wù)生成的,所以該版本的記錄對當(dāng)前事務(wù)不可見

  • 如果記錄的 trx_id 值在 Read View 的

    min_trx_id
    

    max_trx_id
    

    之間,需要判斷 trx_id 是否在 m_ids 列表中:

    • 如果記錄的 trx_id m_ids 列表中,表示生成該版本記錄的活躍事務(wù)依然活躍著(還沒提交事務(wù)),所以該版本的記錄對當(dāng)前事務(wù)不可見
    • 如果記錄的 trx_id 不在 m_ids列表中,表示生成該版本記錄的活躍事務(wù)已經(jīng)被提交,所以該版本的記錄對當(dāng)前事務(wù)可見

MySQL binlog,redolog和undolog的區(qū)別

回答:從這三種log的功能進(jìn)行分析,undolog用來做事務(wù)回滾;redolog用來處理mysql宕機(jī)(或進(jìn)程掛掉)時的數(shù)據(jù)恢復(fù);binlog記錄所有的數(shù)據(jù)修改操作,可以用來做全量的數(shù)據(jù)恢復(fù),主從復(fù)制(后一點(diǎn)當(dāng)時沒答出來)。

小林補(bǔ)充:

  1. binlog(二進(jìn)制日志):記錄所有對MySQL數(shù)據(jù)庫的修改操作,包括插入、更新和刪除等。binlog主要用于數(shù)據(jù)恢復(fù)到指定時間點(diǎn)或者指定事務(wù)。可以使用mysqlbinlog命令將binlog文件解析成SQL語句,從而恢復(fù)MySQL數(shù)據(jù)庫的狀態(tài)。

  2. redolog(重做日志):記錄所有對MySQL數(shù)據(jù)庫的修改操作,但是只記錄了物理操作,比如頁的修改。redolog主要用于MySQL的崩潰恢復(fù),即在MySQL崩潰后,通過重做日志,將數(shù)據(jù)庫恢復(fù)到最近一次提交的狀態(tài)。可以使用 Forcing InnoDB Recovery 來進(jìn)行崩潰恢復(fù)。

  3. undolog(回滾日志):用于記錄事務(wù)的回滾操作,即在事務(wù)執(zhí)行過程中,如果發(fā)生了回滾,會將回滾操作記錄到undolog中。undolog主要用于 MySQL 的回滾操作,比如使用ROLLBACK語句回滾事務(wù)。undolog是InnoDB存儲引擎的特有日志,不同于其他存儲引擎。

追問:binlog和redolog做數(shù)據(jù)恢復(fù)的區(qū)別

回答:redolog有大小限制,數(shù)據(jù)可能被覆蓋,用來處理緊急數(shù)據(jù)庫故障;binlog是全量操作日志,可以進(jìn)行做全量的數(shù)據(jù)恢復(fù)。

小林補(bǔ)充:

binlog和redolog都是用于MySQL數(shù)據(jù)庫的日志。它們都可以用于數(shù)據(jù)恢復(fù),但是它們的使用場景和恢復(fù)方法有所不同。

binlog是MySQL的二進(jìn)制日志,它記錄了所有對MySQL數(shù)據(jù)庫的修改操作,包括插入、更新和刪除等。binlog可以用于恢復(fù)MySQL數(shù)據(jù)庫到指定的時間點(diǎn)或者指定的事務(wù)。具體來說,可以使用mysqlbinlog命令將binlog文件解析成SQL語句,然后再執(zhí)行這些SQL語句,從而恢復(fù)MySQL數(shù)據(jù)庫的狀態(tài)。

redolog是MySQL的重做日志,它記錄了所有對MySQL數(shù)據(jù)庫的修改操作,但是只記錄了物理操作,比如頁的修改。redolog可以用于恢復(fù)MySQL數(shù)據(jù)庫的崩潰恢復(fù),即在MySQL崩潰后,通過重做日志,將數(shù)據(jù)庫恢復(fù)到最近一次提交的狀態(tài)。具體來說,可以使用innodb_recovery命令來進(jìn)行崩潰恢復(fù),該命令會根據(jù)重做日志來恢復(fù)數(shù)據(jù)庫。

因此,binlog和redolog都可以用于數(shù)據(jù)恢復(fù),但是它們的使用場景和恢復(fù)方法有所不同。binlog主要用于數(shù)據(jù)恢復(fù)到指定時間點(diǎn)或者指定事務(wù),而redolog主要用于MySQL的崩潰恢復(fù)。

算法

  • 合并兩個有序數(shù)組

面試總結(jié)

感覺

基礎(chǔ)知識答得還行,編程拉了

不足之處

有些地方的表達(dá)邏輯不夠清晰,代碼得多寫。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4630

    瀏覽量

    93364
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3848

    瀏覽量

    64688
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4828

    瀏覽量

    69058
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    829

    瀏覽量

    26744
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    378

    瀏覽量

    10945

原文標(biāo)題:快手面試,一直追著問我。。。

文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    面試通關(guān)技巧樣板

    ,新技術(shù)崗位會隨之產(chǎn)生,迅速把握行業(yè)發(fā)展、瞄準(zhǔn)某項(xiàng)新技術(shù)的發(fā)展前景,是成功跳槽的第一步。記者發(fā)現(xiàn),很多技術(shù)人才一方擔(dān)憂自己的職業(yè)前景,另一方
    發(fā)表于 08-07 19:38

    單片機(jī)程序員面試求教

    各位前輩好: 小弟后天的要去面試單片機(jī)程序員實(shí)習(xí),請問有什么經(jīng)較好的,求教,萬分跪謝!
    發(fā)表于 10-17 16:41

    【CANNON試用體驗(yàn)】面試

    今天不說技術(shù),說面試。上一周一直在深圳面試,沒有弄小鋼炮。那么就說點(diǎn)面試心得吧。給大家一點(diǎn)點(diǎn)參考意見。這幾天,深有體會。[fly]而不死者
    發(fā)表于 03-09 14:31

    華為面試改革,你怎么看?

    那些把經(jīng)背得滾瓜爛熟,但是設(shè)計和編碼能力不行的人,沒有硬實(shí)力是通不過面試的。現(xiàn)在大家都說:面試造航母,工作擰螺絲, 面試中的知識點(diǎn)在工作中
    發(fā)表于 05-06 11:00

    軟件開發(fā)實(shí)習(xí)經(jīng) 精選資料分享

    某二線城市金融領(lǐng)域小公司軟件開發(fā)實(shí)習(xí)視頻分享(面試官沒開視頻,所以無法眼神交流。。。。。。)前一天HR電話溝通:說看了我的簡歷,問了我得專業(yè),因?yàn)椴皇怯嬎銠C(jī)專業(yè),就有點(diǎn)懷疑我是否能勝任軟件開發(fā)
    發(fā)表于 07-30 08:14

    CVTE嵌入式面試相關(guān)資料分享

    遠(yuǎn)程面試過程:先是電話突襲面試,相當(dāng)于筆試,問進(jìn)程線程,TCP,UDP協(xié)議;再是牛客網(wǎng),在線視頻代碼編寫, 詢問算法,比較基礎(chǔ)。現(xiàn)場面試過程:一主要問基礎(chǔ),***
    發(fā)表于 10-27 06:14

    快手刷粉絲,深度的講解下快手漲粉技巧的方法

    方法和教程 快手刷粉絲專家,教大家快手如何怎么漲粉絲的幾種方法,以強(qiáng)大的技術(shù)與豐富的資源為各大快手提供一站式貼心服務(wù),專業(yè)打造快手代刷服務(wù),
    發(fā)表于 01-25 15:44 ?9w次閱讀

    快手刷評論的作用是什么?

    ? ? ? ?快手上發(fā)布短視頻的小伙伴每天苦思冥想,絞盡腦汁的給出創(chuàng)意,給出段子,有的是為了單純的記錄生活的點(diǎn)點(diǎn)滴滴,而有的是為了能夠吸引更多的粉絲,成為網(wǎng)紅。在一些快手熱門短視頻的評論區(qū),也聚集著
    發(fā)表于 03-13 11:26 ?9956次閱讀

    深信服算法工程師面試經(jīng)歷

    深信服面的算法工程師,深信服的面試很專業(yè),不愧是重技術(shù)的公司,經(jīng)歷了三,雖然掛了難免失落,但是還是很慶幸有這次的經(jīng)歷。掛的原因是自己沒有準(zhǔn)備充分,完全是去裸面的。感覺自己掛在了二
    的頭像 發(fā)表于 03-22 14:38 ?3752次閱讀

    工程師技術(shù)面試應(yīng)該準(zhǔn)備什么

    亞馬遜這樣的公司有 14 項(xiàng)領(lǐng)導(dǎo)原則 。他們不想僅僅雇傭一個數(shù)據(jù)科學(xué)家或軟件工程師。對于許多只進(jìn)行一次或兩次面試面試者來說,這可能沒有那么明顯,因?yàn)槟闾珜W⒂诨卮?b class='flag-5'>面試技術(shù)部分。但是
    的頭像 發(fā)表于 09-23 16:41 ?4113次閱讀

    CVTE嵌入式面試匯總

    遠(yuǎn)程面試過程:先是電話突襲面試,相當(dāng)于筆試,問進(jìn)程線程,TCP,UDP協(xié)議;再是牛客網(wǎng),在線視頻代碼編寫, 詢問算法,比較基礎(chǔ)。現(xiàn)場面試過程:一主要問基礎(chǔ),一對一
    發(fā)表于 10-19 17:53 ?3次下載
    CVTE嵌入式<b class='flag-5'>面試</b>匯總

    【嵌入式工程師】海康威視面試經(jīng)驗(yàn) | 內(nèi)涵紫光展銳、瑞芯微等公司嵌入式經(jīng)

    寫在前面的話本文是自己在應(yīng)聘嵌入式工程師時遇到的一些面試問題總結(jié),大部分的面試都是根據(jù)項(xiàng)目發(fā)問,希望這份經(jīng)可以給你幫助,加油????。文章目錄寫在前面的話
    發(fā)表于 10-19 18:33 ?7次下載
    【嵌入式工程師】海康威視<b class='flag-5'>面試</b>經(jīng)驗(yàn) | 內(nèi)涵紫光展銳、瑞芯微等公司嵌入式<b class='flag-5'>面</b><b class='flag-5'>經(jīng)</b>

    面試經(jīng) | 2021大疆嵌入式軟件工程師筆試題B卷

    最近都在忙著復(fù)習(xí)期末考試,這奇葩學(xué)校,非要提前開學(xué)考試搞的跟秋招面試都撞上了,就不吐槽了。剛剛做完大疆嵌入式軟件工程師筆試題B卷,趁還記得一些,記錄下來,供小伙伴們參考。考前看了一些經(jīng),都說大疆
    發(fā)表于 10-21 10:21 ?17次下載
    <b class='flag-5'>面試</b><b class='flag-5'>面</b><b class='flag-5'>經(jīng)</b> | 2021大疆嵌入式軟件工程師筆試題B卷

    嵌入式軟件工程師筆試面試指南-C/C++

    哈嘍,大家好。最近幾天,我把去年秋招總結(jié)的筆試面試的一些內(nèi)容,又進(jìn)行了重新規(guī)劃分類。詳細(xì)分成了簡歷書寫,面試技巧,經(jīng)總結(jié),筆...
    發(fā)表于 01-25 18:22 ?3次下載
    嵌入式軟件工程師筆試<b class='flag-5'>面試</b>指南-C/C++

    985碩士騰訊經(jīng)分享 騰訊面試比之前的要難

    大家好,我是小林。 今天又來分享經(jīng)了,這次騰訊春招實(shí)習(xí)的經(jīng),崗位是 java 后端開發(fā)。 讀者的背景是985碩,根據(jù)讀者的面試感受說是,
    的頭像 發(fā)表于 04-11 16:07 ?1345次閱讀
    主站蜘蛛池模板: 国产3p在线播放 | 亚洲国产精品久久久久婷婷老年 | 国产亚洲精品美女久久久 | h国产| 青青青草国产 | 国产久爱青草视频在线观看 | 加勒比一到三区 | 亚洲精品在线不卡 | www国产永久免费视频看看 | 久久久免费 | 色综合狠狠操 | 97夜夜操| 成人午夜精品久久久久久久小说 | 人与牲动交xx | 色丁香婷婷 | 国产精品嫩草影院午夜 | 丰满年轻岳欲乱中文字幕 | 成人在线综合网 | 国产精品久久久久久免费播放 | 最新国产精品视频免费看 | 日韩美女影院 | 禁网站在线观看免费视频 | 免费看特级淫片日本 | 亚洲高清不卡视频 | 天天看天天碰 | 国产成人精品日本亚洲语音1 | 国产精品久久久久久福利 | aaa免费视频 | 边做饭边被躁欧美三级小说 | 女的扒开尿口让男人桶 | 老外一级黄色片 | 狼色视频在线观免费观看 | 国产真实灌醉美女疯狂弄 | bt天堂在线最新版www | 国产精品天天爽夜夜欢张柏芝 | 成年色黄大色黄大片 视频 成年视频xxxxx免费播放软件 | 四虎4hu永久在线观看 | 成人在线黄色 | 欧美黑人5o厘米全进去 | www.妖精视频 | 禁h粗大太大好爽好涨受不了了 |