記錄疫情下PHP中高階面試重點
話不多說直接上題。 (有些想用冒號分隔的,奈何鍵盤的冒號鍵和 tab 好像壞了)
開場時, hr 介紹了本次參與面試的各成員即職位,然後瞭解他的疑問,產品經理詢問了本辭職的原因和想要了解的問題。
接下來正戲開始了。
總監 A: 看你對 MySQL 掌握的很熟練,說說 MySQL 的隔離級別。。
我: MySQL 事務的隔離級別從第到高分別是 讀未提交,讀已提交,可重複讀,序列化,MySQL 預設的隔離級別是 可重複讀,事務併發可能引發的問題是 髒讀,不可重複讀,幻讀,然後分別闡述了引發這幾種狀況的操作即解決方案。
總監 A: 你在實際場景中是更具怎樣的策略來修改隔離級別的。
我: …. (這裡省略號意思是我胡謅一些場景,其實是有點懵的,因為我只處理過千萬級別的訪問量資料,但是不是高併發,所以並未涉及修改隔離界別,還是平時思考的深度不夠啊)
總監 A: innodb 的索引有哪些,它是怎麼實現的。
我: 主鍵 唯一 普通 聯合索引,有 B 樹、B + 樹、hash 的實現的。
總監 A: 這幾中實現有什麼區別,你平時設計索引時是更具是什麼策略來選擇它們的。
我: B 樹和 B + 樹是在資料在葉子結點上不一樣,在樹的深度上不一樣,相同的檢索,B 樹要比 B + 樹多一次的 IO。 根據實際業務場景來選擇不一樣索引演算法,如果是讀多寫少,我就會選擇 B + 樹(實際上內心沒底,因為忘了)
總監 A: MySQL 鎖的分類,作用,你在實際工作的中使用場景。
我: (此時內心有些打鼓,因為之前面試都是由淺入深)… 然後簡述我的理解,但是實際上答案並不滿意。因為 B 和 C 也插入其他問題。
總監 B: 分散式熟悉嗎,分散式鎖怎麼實現,瞭解過 etcd 嗎。
我: 可以使用 redis 的 setnx 結合過期時間實現,因為這塊我之前在業務中實現過,etcd,這個沒了解過(心裡就沒有這個概念),還,,(被打斷)
總監 C: 時間有限,我們繼續其他問題,看你做過 PHP 最佳化,opcahche 是怎麼用的。
我: ( 冥思了一下),,操作碼解析最佳化.
總監 C: opcode 呢
我: 這個 沒印象了,(這個確實沒印象了,因為之前基於業務場景,我從前端,cdn,伺服器反向代理,資料庫快取,和程式邏輯程式碼的最佳化,專案就有了一個質的提升,但就是唯獨沒有這個 opchache 和 opcode 的東西接觸,失誤啊)
總監 C: 簡述一下 url 發生的過程,說重點就行
我 瀏覽器輸入 url 之後解析成 IP,然後請求傳送到 web 伺服器,如果是 nginx 就會透過 cgi 傳送給 PHP-FPM,然後等待 PHP 指令碼解析,處理邏輯,響應資料。
總監 C: cgi 是什麼東西,用來幹嘛的
我: cgi 是一個協議,是類似於 PHP 這樣的語言和 web 伺服器通訊一個協議。
總監 B: PHP-FPM 是什麼架構模式的,你怎麼最佳化過它。
我: 它是一個 master(主)-worker(工作程式)的架構模式,正真處理請求的是 work 程式,master 主要是管理和回收子程式,最佳化的話,曾經有更改過它的程式數的配置,我大概簡述一下: 由於之前配置的靜態模式,預設的 200 個程式數,後來有了一定的併發,我就該改成 “第三種” 配置模式,配置指定數量的程式數,有個最小值和最大值(最大值這裡其實是忘了,就是想這肯定不能沒有限制,畢竟硬體資源就是天花板呢),然後根據實際的請求數,然後動態的增加程式數量。
總監 B: 還有其他最佳化嗎
我: (沉默了會兒,其實當時修改時還是做了其他修改的,但是確實忘了,感覺此次面試拉跨了),當時確實還做了其他最佳化來的,,但是想不起來了。
總監 B: 說說你使用到的 rabbitmq 和你對他的理解。
我 : (簡述了 rabbitmq 的架構)以及我的使用場景和業務。
總監 B: 說說你用到的 topic 模式
我: ( 簡述了 topic 的使用流程,算是過關了)。
總監 A: 說說 redis 分片。
我: 分片 就是將 key 分割到多個 redis 例項的處理過程,利用的是多臺計算機的記憶體,cpu 的處理能力,提高,,,,
總監 A: 怎麼樣實現排行榜
我: 可以使用 redis 的有序集合,因為它有個分數,,,
總監 A: 用那個函式取值的
我: (回憶了下,確實想不起來了) 這個忘記了,什麼 member 的函式。
總監 A: 說說 AOP 的,使用過嗎
我: aop 切面程式設計,就是使用動態代理等技術使功能模組的統一維護,有點像 laravel 的 facade(心裡沒底,想內比來的,失敗)。
總監 A: 說說 hyperf 的特點
我: 基於 swoole,外掛化的高效能、高靈活的協程框架,它是依賴注入的容器化,aop 模式,註解模式,事件模式,,,
總監 A: 說說協程池和協程狀態管理
我: (這裡實際上沒有答上來,實際上後來思考了下還是能回答部分的,至少協程狀態管理是可以解答的)
總監 A: 如果會 go,這個問題很簡單
總監 A: 說說 laravel
我: (這裡算是我的強項了,就不一一簡述了)
總監 B: 說說 Linux 吧和 shell 指令碼
我: (簡述了 Linux 以及常用命令和 vi),shell 的表示式和變數定義、使用都是有區別於 PHP 語言的。
總監 C: 看你使用 map reduce 對資料批處理,說說它吧
我 基於 monogo 的 map redcue 對資料處理,,,(被打斷)
總監 C: 我還以為使 hadoop 的 map reduce
總監 A: 說說你對未來的規劃吧
我: …
以上是我本次影片面試的 100% 還原,後來細細回想,其實很多都是能有解決方案的,但是為什麼本次面試的效果如此拉跨呢,,,節奏,,對就是節奏。就是面試官以來就給了 “深” 東西,打亂了我的節奏。
相關推薦:《》《》
以上就是記錄疫情下PHP中高階面試重點的詳細內容,更多請關注php中文網其它相關文章!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2827563/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 昨日PHP中高階面試重點回顧PHP面試
- Java中高階面試題Java面試題
- 中高階Java面試題Java面試題
- 怎麼掌握安卓中高階開發面試知識點?快取重點都在這!安卓面試快取
- Android面試準備(中高階)Android面試
- Java面試題中高階進階(JVM篇Java記憶體)Java面試題JVM記憶體
- Android 進階/面試 重難點Android面試
- 2018年Android面試題含答案--適合中高階(下)Android面試題
- Java面試題中高階進階(JVM篇01)Java面試題JVM
- 安卓中高階開發面試知識點之——快取安卓面試快取
- 2018 Android中高階面試題總結Android面試題
- Android 中高階面試必知必會Android面試
- Java面試題中高階進階(JVM調優篇)Java面試題JVM
- 記錄最近的幾次面試(PHP)面試PHP
- 中高階前端開發高頻面試題前端面試題
- Java面試題中高階進階(JVM篇Java垃圾回收)Java面試題JVM
- 前端筆試題面試題記錄(下)前端筆試面試題
- PHP中高階面試的時候總是會問到這些問題(總結)PHP面試
- 2020面試必知:中高階工程師面試題集整理(題目+答案)工程師面試題
- 面試重點:webpack面試Web
- 面試記錄面試
- 史上最全的中高階JAVA工程師-面試題彙總Java工程師面試題
- php面試考點整理PHP面試
- 單車的重點和坑記錄一下
- 面試記錄2面試
- 面試題記錄面試題
- 面試記錄2020.12.19面試
- 2018中高階Android面試題總結上(附答案)Android面試題
- 2019年總結:Java中高階面試題228道系列(6)Java面試題
- PHP日常注意點-記錄1PHP
- 記錄下為了面試需要看的文章面試
- [前端經典面試篇] 中高階面試知識點 中大廠必問 (更新至四月第六版)前端面試
- Java中高階面試題及答案【第三部分】Java面試題
- 75 道 BAJT 中高階 Java 面試題,你能答上幾道?Java面試題
- PHP 高階工程面試題彙總PHP面試題
- 記錄近期面試題,面試總結面試題
- 面試三十三題!說實話,中高階面試題看完解析後也不怎麼難!面試題
- 99面試常問:中高階開發面試必問的Redis,看這篇就夠了!面試Redis