阿里面試的那些二三事
技術面試
自我介紹
個人經歷背景、經歷過什么大起大落 做過什么有挑戰的事情 每家公司自己的成長和挑戰是?
項目:
項目怎么講清楚? 面向的用戶和客戶是誰?體量有多少? 業務流程是什么樣的? 有哪些模塊? 用到了什么樣的技術? 每種技術是如何選型的?為什么是這樣的一個技術架構?架構有沒有哪里不好的?
業務痛點和客戶價值&衡量指標
角色:
架構:
模塊+模型+表結構+挑戰+結果;
依賴了什么?對外輸出了什么? 沉淀了什么?
都有哪些模塊?相互之間的關聯關系是什么? 各模塊的解決的問題是? 為什么要這么設計? 為什么要這些表? 為什么要分庫分表?
技術亮點&擅長的技術
挑戰&難點&怎么解決的?
達成目標 業務和產品策略是什么?運營節奏是?
在技術選型上有沒有其他的對比?為什么選擇這個方案?
做這個項目,你最大的收獲是什么?你覺得哪些地方可以改進?再來一次會怎么做
學到了什么?
團隊定位
- 整體的產品&技術架構是什么? 你們團隊在里面的定位是?背的核心kpi是?
- 團隊組織架構? 分多少團隊 各自負責什么? 你們團隊負責什么?你負責什么?你這一趴的定位是什么?
- 跟業務整體目標有什么關聯? 你對目標體系做的增量價值是? 有什么創新方案?推動了誰?過程中經歷過哪些困難? 怎么克服?
業務理解-目標驅動和行業對比意識
- 業務競對分析:他們是怎么做的? 體量 ? 優劣勢?
-
- 使命&願景&用戶價值?
-
- 團隊背的核心KPI是?衡量的核心指標是?
-
- 有沒有跟業務或者主管不一致的想法? 后面如何處理?如何證明自己? 后期的效果如何?
-
- 你對客戶是否有拜訪 跟客戶有什么聯動 自己有沒有主動推動過一些事情並落地帶來好結果?
- 有沒有收到了什么負面反饋? 什么原因?如何改善? 成長是什么?
- 除了開發需求 有沒有自己自己主動推動過業務產品發展的事情?
主動性&擔當&工作成果&貢獻-業務推動能力及其結果
- 主動發起並構建了統一的....平台,並解決了協同實習性等諸多問題問題,引入了規則引擎等技術框架,有非常好的發現問題、解決問題能力,對細節把控也比較好;
- 主動發起了...項目,在模型設計、數據存儲、信息加密方面做了比較多的工作, 對業務與技術的理解不錯。
技術-深度和視野
基礎
- 基礎數據結構的實現:linkedList arrayList hashmap treemap
- hashmap 實現? 紅黑樹特性和原理? 復雜度?
- HashMap在JDK8中如何解決死循環問題?
- HashMap和HashSet關系
- concurrentHashMap實現
-
- 常見的並發模塊和類? -
- volatile的作用和原理
- ThreadPoolExecutor用法與關鍵參數關系?核心參數理解
- 進程間如何通訊,線程間如何通訊? 線程通訊:信號量、信號、鎖
- Threadlocal是怎樣實現的? 注意些什么?
- sleep()和wait()的區別,
- 進程間通信方式有哪些?各有什么優缺點,挑一兩種說下使用場景
-
- synchronize和重入鎖的區別:
- aqs 邏輯, 加鎖和釋放鎖
- 重入鎖下有幾條隊列?
- cas理解、產生的問題、怎么解決?哪些類通過版本?
-
- jvm內存結構?
- 棧溢出情況、新生代內存結構及其比例划分&為什么這么設計?
- 垃圾回收器類型和算法?G1 CMS使用場景?-
- jvm常見參數? 常見分析指令? jps jmap jstack zprofile等?- 沒怎么做個調優 Integer
-
- 類加載機制 雙親委派 為什么這么設計? 如何打破? Tomcat osgi jdbc如何做的? 其他語言 怎么做的額? node里的npm? -
- 自定義類加載器如何實現?注解的原理?如何實現自定義注解?
- maven jar包 沖突解決方案? spring cloud 怎么做的? 版本代號-
- 如何排查類沖突?如何隔離沖突?如何自定義類加載器
-
- spring aop的理解?用了哪些設計模型?動態代理理解? 有哪些實現方式?jdk cglib asm ?選型對比?
- BeanFactory和ApplicationContext的差異?
- spring 容器啟動順序和流程,擴展點BeanFactoryPostProcessor的加載流程?
- springcontext 管理bean 加載插件 , 沒看過
- spring事務傳播機制 ?異常處理?
-
- Spring IOC的初始化和生命周期?
- spring的ioc啟動流程簡述:refresh方法、解析xml文件或注釋、BeanDefinition、初始化上下文ApplicationContext
- 相互依賴 死循環問題 - 三級緩存 提前曝光 還沒初始化先放到緩存里
-
- springboot 和spring 的區別?何自定義stater、spring.factories實現自動配置,加載所有需要加載的bean?
- bean factory和factory bean的區別 - ok
-
- BIO/NIO/AIO各自特點及對應場景
- NIO的在netty中的封裝的模型及底層操作系統epoll的實現; select實現對比?
- 粘包 拆包
-
- DDD的理解? 解決什么問題? 遇到什么問題? 如何建模? 做個 用例分析沒? 怎么確定領域邊界?問題域的划分?
- 單點登錄,cookie,session理解
設計模式
有哪些設計模式?在哪些源碼中看到過使用場景?如何設計? 如何實現?
線上問題經驗
有沒有遇到線上問題?怎么解決的? 有沒有其他方案?解決效果如何? 有沒有被復用?
- 什么情況會出現 Full GC,什么情況會出現yong GC
- 調優經驗? 為什么調整?分析過程是怎樣的?調整了哪些參數?效果如何?(老系統 4g 堆空間 768M 當時 Young區比較頻繁,dump日志 結合 zprofile 做分析,大量for循環創建對象,后面結合代碼優化以及 堆空間升級 )
- 常見的cpu load過高 一般是什么問題。引申出是否用過top,jstat,jstack等 使用過top,jmap、jstack、jstat沒有使用過。
- 查看任何進程下線程運行狀態?jps
- 如何診斷java線程死鎖?jstack;
- while(true){new thread().start();},內存和cpu飆高;
- 診斷死鎖?1)看堆棧;2)select;3)java線程狀態,死鎖blocked;4)cpu占用率很高;
-
數據庫
- 數據庫引擎及其區別, 主鍵索引實現方式對比 ? 對於為何B+樹比B樹更適合做索引?優劣勢對比?索引類型 ?
- 隔離級別、幻讀理解和解決方案 間隙鎖 mvvc的理解-
-
- 讀寫分離&分庫分表 做過沒?數據量有多大?分多少可庫?基於什么做分庫分表-用戶id OR 時間 為什么?主鍵唯一主鍵id生成方案是?選型對比- shardding tddl mycat? 優劣勢是什么?有沒有什么限制? 各自核心原理是? -
- 分庫分表的主鍵唯一主鍵id生成方案?
- 分表之后會遇到哪些問題 ?跨庫分頁如何解決? 如何實現數據的整體排序?
-
- 常見sql優化方式? 如何做分析?explain的使用和理解 每一列的含義是? 慢sql經驗?
-
中間件&分布式:
-
分布式事務哪些實現方式?二階段&三階段等的區別和理解
-
-
跟memcache相比 Redis有哪些優缺點?Redis如何實現擴容?如何解決redis熱點數據問題?
-
redis集群模式&對比 汰換&失效策略
-
redis的持久化方式?aof和rdb的區別?
-
緩存擊穿 雪崩及其解決方案
-
其他 緩存 數據庫? 對比? -
-
一致性hash 解決什么問題 、原理 -
-
-
分布式鎖實現方式有哪些? 有沒有什么可優化的空間?如何減少遠程服務調用?
-
分布式系統如何做冪等設計?
-
-
netty的reactor線程模型 select? zero copy , TCP粘包/拆包?
-
-
es和solr & rpc 序列化 & netty mina & mq(kafka rocketmq metaq redis) & orm & 分庫分表 & 緩存數據庫(redis memcached) &
-
狀態機 & 工作流 等中間件 實現有哪些?對比選型?優缺點是?為什么選擇這種方式 跟其他的對比是? 背后的原理?遇到什么問題 怎么解決?取舍是什么?業務特點是怎么樣的? 有遇到什么什么問題? 怎么解決?各自核心原理是?
-
-
mq底層實現? 亂序&丟失&延時 如何解決?kafka的數據如何存儲的? 查詢索引如何設計的? 日志索引。
-
rocketMQ的如何保證不丟以及消息是否能夠一定被消費
-
-
sentinel 本身的開銷、集群限流 、 滑動窗口和令牌桶等實現對比(開銷更大 但精准度更高)
-
-
dubbo實現?有哪些模塊?各個模塊負責什么?選型和對比? 軟負載是怎么實現的? -
- RPC的原理是?服務是怎么注冊的
- rpc監控、運行容器,底層通信等細節;
- 服務注冊技術選型,負載均衡機制、網絡傳輸重失敗試機制、網絡傳輸框、客戶端代理、服務端服務查找映射調用如何設計計與實現
- 怎么做全鏈路的追蹤?
-
-
zookeeper 節點類型? 集群部署節點角色和各自負責什么? 一致性協議理解?
-
zk的讀寫過程和作用
-
zk什么時候要選主及選主的邏輯;
-
源碼
看過那些源碼? 背后的原理? 設計的如何巧妙? 涉及到什么設計模式? 同類框架是如何做的?
著名開源項目的源碼。 dubbo zookeeper redis mybatis spring tomcat netty等 相關源碼如果看過最好
項目管理
為什么做這個項目?價值是?痛點是? 帶領過多大的 項目 ?涉及多少團隊 多少人力 過程中遇到什么阻礙 如何解決?風險應對?成長是?怎么做好項目管理?
團隊管理
團隊管理 上 有什么經驗?如何發揮每個人的潛力? 如何保證成員成長? 如何能做好沉淀?
個人成長&影響力
- 負責統一調度系統等多個產品,有主導中大型系統經驗
-
- 公司考核機制?目前級別? 工資情況?績效情況 是否top? 在OYO2年都是A 優秀員工,在陸金所 第一年是C(后面還有E) 后面幾年都是A? 有沒有參加過晉升?晉升結果?
- 最近有沒有面試過其他公司?進展如何?給到的薪資層級如何?上家公司薪資多少?期望薪資多少
-
- 在團隊內會做個分享沒?分享什么內容?
- 團隊里有什么特殊貢獻沒?分享?分享什么?內推 內推幾人? 專利?價值是?影響力如何
-
- 自己有很棒的開源項目
- 個人博客 有沒有?
- 一周的工作任務是什么? 項目架構設計?一天寫代碼的時長有多少
- 業余時間在干什么(抽時間學一些課程、領域知識/)
- 成長經歷是怎么樣的? 每一年 半年 自己有哪些成長? 經歷了什么?
-
- STAR模型,T和A,你做了什么樣的Task,用了什么Action,取得什么結果,就是TAR。特別關注S,Situation,你在什么條件下做什么事情 (你這個部門多少人,跟你合作的上下游,上下左右都要看,你跟誰合作,匯報給誰,你下一個是誰,哪些活是你獨立干的,獨立干的時候起點是什)
學習習慣
-
學習方式?學習來源?github 技術群 公眾號(具體哪些)
-
-
最近學習那些技術?接觸了哪些新技術? 新技術 jdk9 10 新特性 ;雲原生;servless理解;
-
每天花多少時間學習?
-
是否參與 過開源項目?影響如何?
-
-
最近看的一些書? 技術上的書籍- 阿里高可用架構、paper、github ? 項目管理? 軟技能? 創新? 產品?
-
-
寫技術文檔,公眾號,jdk源碼、高並發、spring;我的IT技術路
-
分享 舉行多次code review , 怎么閱讀源碼
-
-
infoq參加過一次;
個人規划:
在線筆試
評估面后的1到2天左右,注意代碼規范 和 答題思路 , 寫點注釋 ,代碼整潔, 主要是 並發基礎+設計模式+基本的數據結構和算法題(、排序算法、二叉樹、紅黑樹、平衡樹 等) [常見筆試題-自己也多在網上找找資料]
給定一個字符串,輸出不含有重復字符的最長子串的長度。
輸出楊輝三角,10行即可
例如:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
兩個線程A,B按序輸出 0-100之間的元素,線程A只負責輸出質數,線程B負責輸出其他元素。
a線程質數 1
a線程質數 2
a線程質數 3
b線程元素 4
a線程質數 5
單例的實現(懶漢 和 餓漢) 工廠模式 策略模式 模板模式等的實現
共計9個蘋果,有2只猴子,一個猴子每次拿2個蘋果,一個猴子每次拿3個蘋果,如果剩余的蘋果不夠猴子每次拿的數量,則2只猴子停止拿蘋果,請用java多線程模擬上面的描述並打印出過程
個人特質&潛力&穩定性面試:
面試崗位的理解?
可以了解了解我們做什么,自己也可以在網上找找相關資料。
面向的用戶是誰?給用戶帶來了什么價值?商業模式是什么?是否看好?為什么?競對是?優劣勢?
本科-大學在哪里讀的?
大學期間:參加SAP公司的舉辦的比賽:項目使用機器學習算法,預估二手車價格。前后端開發。獲得一等獎(一等5個,還有1個特等將)。
大學2次獲得人民獎學金,成績前20%。
當了三年的班長,比較看重學習,倡導學習氛圍,整個班三十幾人,考研考了二十幾個211 985。
獲獎的情況
大學和公司期間 參加過什么比賽?是否獲獎?
雖然是剛畢業三個月自己爭取帶項目,年度協作獎評選獲得這個獎項。
為什么來杭州&離職原因
各個公司離職的原因?怎么積極回答好
家是上饒的,小孩剛出生。全家都過來,老婆目前全職帶娃,支持來杭州。
加入阿里的訴求是?
其他考核點
- 過往歷史的環境中有哪些東西是自己主動變的,有哪些東西是被動變的。主動變,怎么抓住主動變革的機會以及變革的成功的概率,結果怎么樣?
- 當你跟你上司意見不一致你怎么處理?
- 哪些事情是別人都不贊成你做成了的
- 這個事情你在做的過程中,你最失望最灰心的是什么時候
- 你自己覺得最驕傲和自豪的事情是什么? 為什么?
其他
面試流程:
簡歷評估面 1面+筆試 2面 3面(包括HR面) 如果想快點面試,可以主動和面試官反饋 可加速流程
面試要心得體會
- 簡歷上的技術點 : 所有寫上去的都可能被問到 一定要准備好 如果不熟悉 盡量不要寫進去
- 可以投一些小公司面試面試 鍛煉下自己, 准備好了之后在面試阿里,如果面試掛了會被記錄在檔,半年后才有機會在下一次面試
- 回答問題前先聽清楚問題 如果沒聽清楚可以跟面試官確認 然后結構化 簡要回答 要有重心 別太扯一些無關的
-
- 阿里面試的關鍵不只是技術基礎,還有 個人潛力、思考等,不能只看技術
面試的一些經驗分享
可主動在網上搜索下其他人的面試經驗
- 干貨 | 和Java程序員談一談阿里的面試心得 https://mp.weixin.qq.com/s/0DHCEFEzOlVvAV7U0OCpLg
- 2019年阿里技術面試題集錦(28道含答案) https://mp.weixin.qq.com/s/cZLpwNINT0GjSYKNC2grjA
- 一位阿里P7的面試題經驗分享,希望能幫助到你 https://www.lmlphp.com/user/10804/article/item/424127/
- 阿里 P8 大牛的建議,工作 1-5 年的 Java 工程師如何讓自己變得更值錢 https://xie.infoq.cn/article/ef604e55de0cd55bf3e970ca0
- 手握美團offer,結果背調紅燈,哭了,網友:別小瞧背調公司 https://maimai.cn/article/detail?fid=1487089506&efid=F-S446BZaNjJFPqEeYLhGA&use_rn=1
最后
如果 有職業困惑、職業挑戰不知如何解決、遇到瓶頸想換個工作的同學 加我個人微信:yaogao000, 備注:招聘_姓名
可掃碼加微信,如果有好的朋友 也麻煩幫忙推薦推薦
內推紅包
部門急招(崗位介紹: https://www.nowcoder.com/discuss/552709),求幫忙內推,終面通過可以免費把阿里內推獎金還給大家,阿里p6 6000元,p7 10000元