坊間傳言的阿里P6招聘需求
感覺面試還是主要圍繞簡歷來問的,所以不熟悉的東西最好不要隨便寫上去。項目和基礎都很重要,項目中最好有難點,能夠體現自己解決問題的過程和思路。
電話面:
- 自我介紹
- 事務的特性 ACID , 數據庫的死鎖發生的情景
- 死鎖的四個必要特性, 非共享, 持有並等待, 非搶佔, 循環等待
- 死鎖避免 死鎖預防
- 線程的狀態 , 新建,就緒,running, wait, blocked, terminated
- sleep 和 wait 的區別, 類的不同,是否會釋放持有的鎖,monitor
- JDK 可重入鎖, 讀寫鎖 , 底層 AQS,抽象隊列同步器的機制
- 悲觀鎖和樂觀鎖, 概念上,JDK 中的類, CAS的缺點, 空轉,ABA問題。使用pause指令, AtomicStampedReference
- 講一講Servlet, web.xml 配置路徑到servlet的映射, init, service, destroy
- 可以看一看Tomcat容器的過程 ,Connector和 Context容器兩大部分。完成從socket到 request和Response對象的構造
- SpringMVC的 dispatcher-servlet的請求解析過程
- redis介紹, 系統中的角色,作爲緩存, 分佈式session服務器
- redis的 性能,可用性,主從複製+哨兵, redis緩存訪問有網絡上的消耗。
- redis事務, 分佈式事務, 2PC, 本地消息表等, 3PC
阿里一面:
- 講一講異常, throwable, exception, error
- try- catch
- 手寫單例模式——很生疏,GG
- volatile ,作用,底層, lock 前綴的指令, 多CPU的嗅探機制,多處理器下的緩存一致性協議
- synchronized
- JVM 內存劃分, 堆內存分代
- redis, 源碼,
- spring bean的實例化過程。——不熟悉的地方不要寫上去。
- AOP
- 使用redis來實現單點登錄,那麼當單個redis節點內存不夠的時候,怎麼辦?集羣化,redis-Cluster
- 比較偏底層
阿里二面:
- JVM內存劃分, 堆內存爲什麼要進行分代回收, 生命週期不同
- redis,主從,哨兵,集羣,分佈式鎖。
- redis的對象類型, 每種對象類型對應的底層的數據結構,參考redis設計與實現。
- string, list, hash, set, sortedset.
- 每種對象都至少有2中數據結構, SDS, linkedlist, ziplist, intset, ziplist, skiplist
- ISN, TCP協議爲什麼要隨機初始化一個序列號——安全性, 防止和上一次會話滯留的報文衝突
阿里三面:
- 說明一下缺頁中斷, 虛擬內存
- JVM中的內存區域劃分,堆的分代,爲什麼分代, 垃圾回收算法,垃圾回收器
- Linux進程間的通信方式, 管道,有名管道,socket,共享內存,消息隊列
- 如何實現進程間特定場景下的高效通信, 問了存儲相關的問題。
- MySQL索引類型, 底層的數據結構
- 手寫一個雙鏈表的插入和刪除,查找方法
HR面:
- 自我介紹
- 項目中遇到的難點
- 對部門的理解
- 個人的職業發展,城市的選擇,職業方向,有沒有其他公司的offer
阿里高級Java必考題與答案
答案獲取方式
點擊【面試】即可獲得詳細答案鏈接!