總結下面試題

操做系統

  • IO多路複用是什麼?有哪些api?
  • select和epoll的區別?水平觸發和邊緣觸發的區別是啥?使用的時候須要注意什麼?
  • epoll儲存描述符的數據結構是什麼?
  • select有描述符限制嗎?是多少?
  • 進程/線程/協程區別?go和swoole的協程實現有啥區別?

PHP

  • 描述一下cli模式下的幾個生命週期?
  • php-fpm運行機制?
  • php-fpm模式下,kill -9 master-pid,會怎麼樣?kill matser-pid呢?
  • 內存分配流程?爲何要這麼設計?
  • GC的出現是爲了解決什麼問題?何時會觸發GC?說下大概流程
  • nginx和php-fpm的通訊機制
  • fast-cgi和cgi區別
  • php-fpm建立worker進程的規則是什麼?不一樣場景下怎麼選擇?
  • php和mysql的通訊機制?長連接和短連接啥區別?怎麼實現的?鏈接池要怎麼實現?
  • swoole協程的原理?

mysql

  • innodb的數據組織方式?
  • B+樹的結構和插入細節?爲何主鍵通常都要自增?和B樹什麼區別?爲何索引要使用B+樹不是B樹也不是其餘的平衡樹?爲何redis能夠用跳錶?
  • 常見的優化(這裏我就不展開了,主要考察覆蓋索引查詢和最左匹配)
  • redolog/undolog/binlog的區別?binlog的幾種格式?說下兩階段提交?
  • 事務隔離級別和不一樣級別會出現的問題,innodb默認哪一個級別?MVCC怎麼實現的?快照讀和當前讀有啥區別?幻讀的問題怎麼解決?
  • 死鎖何時會出現?應用層應該怎麼作避免死鎖?mysql是怎麼處理死鎖的呢?
  • int佔多少字節?int(3)和int(11)有區別嗎?能夠往int(3)裏存1億嗎?varchar最長多少?
  • sql的執行流程

redis

  • sds的結構是什麼?爲何要存長度?跟c裏的字符串有什麼區別?
  • hash怎麼實現的?怎麼解決hash衝突?除了hashTable還有別的嗎?
  • zset怎麼實現的?跳錶是怎麼插入的?爲何選擇跳錶不用其餘平衡二叉樹?除了跳錶還有別的嗎?
  • rehash過程?會主動rehash嗎?
  • 用redis能夠實現隊列嗎?有什麼優勢和缺點?
  • 用redis怎麼實現一個延時隊列?
  • rdb和aof過程?rdb爲何能夠用建立子進程的方式進行?(這裏考察一個cow)這兩種持久化方式會丟數據嗎?
  • redis爲何快?(主要考察一個IO多路複用和單線程不加鎖)
  • 一致性哈希是什麼?節點較少時數據分佈不均勻怎麼辦?
  • 簡單說下幾種key的淘汰策略,redis裏的lru算法,何時會觸發?實現細節是什麼?怎麼保證淘汰合理的key?
  • lua腳本的做用是什麼?
  • 緩存擊穿/穿透/雪崩的處理策略

nginx

  • LVS和Nginx分別做用在osi哪一層?
  • 負載均衡算法

數據結構

  • 布隆過濾器,何時用?優勢是什麼?

算法

  • leetcode easy級別的題目,具體我就不寫了,難度比較低
相關文章
相關標籤/搜索