牛逼的來了!![]()
5面螞蟻金服Java崗,順利拿下offer曆程分享
一面:
- 介紹一下自己;
- 問項目經曆, 聊"資料同步"
- 接着聊上了 K8S 的項目
- 有沒有什麼鑽研得比較深的技術?
- kubernetes 的架構是怎麼樣的?
- golang 與 java 的比較
- golang 的 gc 算法
- 怎麼擴充 kubernetes scheduler, 讓它能 handle 大規模的節點排程?
- 你有什麼想問我的?
二面:
- 先聊了聊項目。
- 給 Prometheus 做了哪些改動?
- 自研配置中心, 具體做了哪些内容?
- 有用過 MySQL 的什麼進階特性嗎?
- 配置中心的核心資料表是怎麼設計的?
- 為什麼在業務裡用 Redis, Redis 有什麼優點?
- 對 Redis 裡資料結構的實作熟悉嗎?
- 用過 Redis 的哪些資料結構, 分别用在什麼場景?
- Java 初始化一個線程池有哪些參數可以配置, 分别是什麼作用?
- 自己寫的 Java 應用調優過哪些 JVM 參數, 為什麼這麼調優?
- 用 Jetty 的時候有沒有配什麼參數, 為什麼這麼配?
- Jetty QTP 等待隊列配置成無限的話, 你覺得好嗎? 會有什麼問題嗎?
- 用過 Linux Bash 裡的哪些指令, 分别用它們幹嘛?
一道筆試題: 需要在給的連結中作答, 不能 google, 不能跳出, 不能用 IDE: 用 Java 的 wait + notify 機制實作;
題目如下:
啟動兩個線程, 一個輸出 1,3,5,7…99, 另一個輸出 2,4,6,8…100 最後 STDOUT 中按序輸出 1,2,3,4,5…100
三面:
- 依然先聊項目,對監控警報的項目很感興趣, 問了挺多細節, 最後問了一個問題: 現在要你實作一個語義不弱于 PromQL 的查詢語言, 你能實作嗎?
- 你覺得做得最深入的項目是什麼?
- 聊資料同步項目
- Linux 掌握得怎麼樣?
- Golang 掌握得怎麼樣?
- 問算法掌握得怎麼樣?
- 問最短路算法
- k8s 掌握得怎麼樣?
- k8s 的 exec 是怎麼實作的?
四面:
- 覺得自己基礎知識掌握怎麼樣?
- 平時一般會用到哪些資料結構?
- 連結清單和數組相比, 有什麼優劣?
- 如何判斷兩個無環單連結清單有沒有交叉點?
- 如何判斷兩個有環單連結清單有沒有交叉點?
- 如何判斷一個單連結清單有沒有環, 并找出入環點
- TCP 和 UDP 有什麼差別?
- 描述一下 TCP 四次揮手的過程中
- TCP 有哪些狀态?
- TCP 的 LISTEN 狀态是什麼?
- TCP 的 CLOSE_WAIT 狀态是什麼?
- 建立一個 socket 連接配接要經過哪些步驟?
- 常見的 HTTP 狀态碼有哪些?
- 301和302有什麼差別?
- 504和500有什麼差別?
- HTTPS 和 HTTP 有什麼差別?
- 手寫快排
五面:
- 介紹一下自己
- 在 k8s 上做過哪些二次開發?
- 自己用 Helm 建構過 chart 嗎?有哪些?
- 有沒有考慮過自己封裝一個面向研發的 PaaS 平台?
- 配置中心做了什麼?
- 為什麼不用 zookeeper?
- 配置中心如何保證一緻性?
- Spring 裡用了單例 Bean, 怎麼保證通路 Bean 字段時的并發安全?
- 假如我還想隔離兩個線程的資料, 怎麼辦?
- Golang 裡的逃逸分析是什麼?怎麼避免記憶體逃逸?
- Golang 的 GC 觸發時機是什麼?
- 有沒有寫過 k8s 的 Operator 或 Controller?
- 談一談你對微服務架構的了解;