本人兩年開發(fā)經(jīng)驗、18年年底開始跑路找工作,在互聯(lián)網(wǎng)寒冬下成功拿到阿里巴巴、今日頭條、滴滴等公司offer,崗位是Java后端開發(fā),最終選擇去了阿里巴巴。
面試了很多家公司,感覺大部分公司考察的點都差不多,所以將自己的心得記下來,希望能給正在找或者準備找工作的朋友提供一點幫助。另外,目前在阿里也做面試官的工作,身份從求職者變?yōu)槊嬖嚬伲磫栴}的很多角度也不一樣,所以下文中既有求職者的視角,也有面試官的視角。
先說下面試流程,一般大公司都有3-4輪技術面,1輪的HR面。就阿里而言,我共經(jīng)歷了4輪技術面,前兩輪主要是問基礎和項目實現(xiàn),第3輪是交叉面,兩個面試官,主要是問項目實現(xiàn)和拓展。第4輪是部門老大面,主要就問一些架構、技術和業(yè)務的理解、個人發(fā)展比較抽象的東西了。
HR面主要就是跟你聊聊天,看看你的個人穩(wěn)定性、價值觀、主動性之類的,一般HR是不會掛人的,但很多人在HR面后掛了,原因其實不是你在HR面的表現(xiàn)不好(少數(shù)情況除外),而是你之前幾面的表現(xiàn)一般,比60分要高一點(所以沒在前面的面試直接掛了你),但是又沒達到80分,這個時候公司基于hc、人才配比、與其他候選人的對比等多個維度考慮,最終決定是否給你offer。
另外要特別說下的是,今日頭條對算法的考察會比較多,我面了4輪技術,每一輪都會問1到2個算法題,大概是leetcode上easy和medium難度。所以想去頭條的同學最好先去leetcode上刷刷題。
簡歷一到兩頁為最佳,將項目經(jīng)歷寫2-3個左右就差不多了,一定要寫最有亮點的項目
工作經(jīng)歷的起始時間要寫清楚,另外大公司都有背調,不要合并或省略一些比較短的工作經(jīng)歷,影響的可能不只是這次面試,而是之后可能都無法進這家公司
博客沒什么好文章,github沒好項目就不要寫在簡歷中了
對于面試官的問題,想清楚再回答,如果覺得需要的時間可能比較長,可以跟面試官說我思考下、我整理下思路之類的
遇到不會的問題直接說不會,不要不懂裝懂
遇到比較確定的問題,要有自信一點,有時候面試官可能會故意用懷疑的語氣來考察你
面試的過程中注意語速和吐字,本人在做面試官后,發(fā)現(xiàn)很多人說話語速很快,或吐字不清,導致原本會的問題也會讓面試官覺得你沒答到點上(尤其是電話面)
面試過程中可以自信但不要與面試官爭執(zhí)
面試完后不要直接問面試結果
面試保持自信而不自大,曾經(jīng)問一位候選人說對hashmap是了如指掌,結果問到hashmap擴容時需不需要重新計算hash就懵逼了。對于很多人來說,面試官總有辦法把你問倒的。
每次面試后都總結有哪些答的不好的地方,有哪些知識點的盲區(qū),解決掉。
被問到為什么想跳槽的時候,因該從自身發(fā)展等角度出發(fā),而不是吐槽前公司。
另外,在求職的過程中也碰到過少數(shù)沒有素質的面試官,比如一上來就一副很不屑的語氣,話沒說兩句開始diss你的項目,給人的體驗很不好。所以也請各位面試官或將來要做面試官的同學,能在面試的過程中保持基本的禮貌和尊重,就像在阿里常說的:你面試別人的時候,別人也在面試著你。
最重要的一點,不要因為幾次的面試失敗就開始懷疑自己,永遠記住,面試的結果=實力+運氣。有時候你擅長的東西可能面試官根本不會,所以他也不可能花很多時間去問他不懂的東西;有時候可能他問你的你都會,但是可能因為對方提問方式、語氣等原因,答的就是不順暢。
接下來說技術相關的考察。
總的來說,技術相關的考察主要分為兩大塊,一是基礎,二是經(jīng)驗。
基礎包括java基礎、數(shù)據(jù)庫、中間件等,來自于日常的積累和面試前的準備。
經(jīng)驗包括以往做過的項目、解決的問題、以及一些場景題(比如你的項目如果流量大了十倍如何保證可用)。
本文主要說基礎,下篇文章將說經(jīng)驗。
以下都是我認為面試中經(jīng)常會被考察到的知識點的整理,不夠完整,但大部分都是常見面試題。
集合分為兩大塊:java.util包下的非線程安全集合和java.util.concurrent下的線程安全集合。
ArrayList與LinkedList的實現(xiàn)和區(qū)別
HashMap:了解其數(shù)據(jù)結構、hash沖突如何解決(鏈表和紅黑樹)、擴容時機、擴容時避免rehash的優(yōu)化
LinkedHashMap:了解基本原理、哪兩種有序、如何用它實現(xiàn)LRU
TreeMap:了解數(shù)據(jù)結構、了解其key對象為什么必須要實現(xiàn)Compare接口、如何用它實現(xiàn)一致性哈希
Set基本上都是由對應的map實現(xiàn),簡單看看就好
hashmap如何解決hash沖突,為什么hashmap中的鏈表需要轉成紅黑樹?
hashmap什么時候會觸發(fā)擴容?
jdk1.8之前并發(fā)操作hashmap時為什么會有死循環(huán)的問題?
hashmap擴容時每個entry需要再計算一次hash嗎?
hashmap的數(shù)組長度為什么要保證是2的冪?
如何用LinkedHashMap實現(xiàn)LRU?
如何用TreeMap實現(xiàn)一致性hash?
了解其實現(xiàn)原理
了解寫時復制機制、了解其適用場景、思考為什么沒有ConcurrentArrayList
了解實現(xiàn)原理、擴容時做的優(yōu)化、與HashTable對比。
了解LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue、SynchronousQueue
ConcurrentHashMap是如何在保證并發(fā)安全的同時提高性能?
ConcurrentHashMap是如何讓多線程同時參與擴容?
LinkedBlockingQueue、DelayQueue是如何實現(xiàn)的?
CopyOnWriteArrayList是如何保證線程安全的?
了解偏向鎖、輕量級鎖、重量級鎖的概念以及升級機制、以及和ReentrantLock的區(qū)別
了解AtomicInteger實現(xiàn)原理、CAS適用場景、如何實現(xiàn)樂觀鎖
了解AQS內部實現(xiàn)、及依靠AQS的同步類比如ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等的實現(xiàn)
了解ThreadLocal使用場景和內部實現(xiàn)
了解線程池的工作原理以及幾個重要參數(shù)的設置
synchronized與ReentrantLock的區(qū)別?
樂觀鎖和悲觀鎖的區(qū)別?
如何實現(xiàn)一個樂觀鎖?
AQS是如何喚醒下一個線程的?
ReentrantLock如何實現(xiàn)公平和非公平鎖是如何實現(xiàn)?
CountDownLatch和CyclicBarrier的區(qū)別?各自適用于什么場景?
適用ThreadLocal時要注意什么?比如說內存泄漏?
說一說往線程池里提交一個任務會發(fā)生什么?
線程池的幾個參數(shù)如何設置?
線程池的非核心線程什么時候會被釋放?
如何排查死鎖?
推薦文章:
死磕Synchronized底層實現(xiàn)--概論(比較深入)
了解Java中的軟引用、弱引用、虛引用的適用場景以及釋放機制
軟引用什么時候會被釋放
弱引用什么時候會被釋放
推薦文章:
Java引用類型原理剖析(比較深入)
了解雙親委派機制
雙親委派機制的作用?
Tomcat的classloader結構
如何自己實現(xiàn)一個classloader打破雙親委派
了解BIO和NIO的區(qū)別、了解多路復用機制
同步阻塞、同步非阻塞、異步的區(qū)別?
select、poll、eopll的區(qū)別?
java NIO與BIO的區(qū)別?
reactor線程模型是什么?
垃圾回收基本原理、幾種常見的垃圾回收器的特性、重點了解CMS(或G1)以及一些重要的參數(shù)
能說清jvm的內存劃分
CMS GC回收分為哪幾個階段?分別做了什么事情?
CMS有哪些重要參數(shù)?
Concurrent Model Failure和ParNew promotion failed什么情況下會發(fā)生?
CMS的優(yōu)缺點?
有做過哪些GC調優(yōu)?
為什么要劃分成年輕代和老年代?
年輕代為什么被劃分成eden、survivor區(qū)域?
年輕代為什么采用的是復制算法?
老年代為什么采用的是標記清除、標記整理算法
什么情況下使用堆外內存?要注意些什么?
堆外內存如何被回收?
jvm內存區(qū)域劃分是怎樣的?
bean的生命周期、循環(huán)依賴問題、spring cloud(如項目中有用過)、AOP的實現(xiàn)、spring事務傳播
java動態(tài)代理和cglib動態(tài)代理的區(qū)別(經(jīng)常結合spring一起問所以就放這里了)
spring中bean的生命周期是怎樣的?
屬性注入和構造器注入哪種會有循環(huán)依賴的問題?
了解一個常用RPC框架如Dubbo的實現(xiàn):服務發(fā)現(xiàn)、路由、異步調用、限流降級、失敗重試
Dubbo如何做負載均衡?
Dubbo如何做限流降級?
Dubbo如何優(yōu)雅的下線服務?
Dubbo如何實現(xiàn)異步調用的?
了解一個常用消息中間件如RocketMq的實現(xiàn):如何保證高可用和高吞吐、消息順序、重復消費、事務消息、延遲消息、死信隊列
RocketMq如何保證高可用的?
RocketMq如何保證高吞吐的?
RocketMq的消息是有序的嗎?
RocketMq的消息局部順序是如何保證的?
RocketMq事務消息的實現(xiàn)機制?
RocketMq會有重復消費的問題嗎?如何解決?
RocketMq支持什么級別的延遲消息?如何實現(xiàn)的?
RocketMq是推模型還是拉模型?
Consumer的負載均衡是怎么樣的?
redis工作模型、redis持久化、redis過期淘汰機制、redis分布式集群的常見形式、分布式鎖、緩存擊穿、緩存雪崩、緩存一致性問題
推薦書籍:《Redis設計與實現(xiàn)》
redis性能為什么高?
單線程的redis如何利用多核cpu機器?
redis的緩存淘汰策略?
redis如何持久化數(shù)據(jù)?
redis有哪幾種數(shù)據(jù)結構?
redis集群有哪幾種形式?
有海量key和value都比較小的數(shù)據(jù),在redis中如何存儲才更省內存?
如何保證redis和DB中的數(shù)據(jù)一致性?
如何解決緩存穿透和緩存雪崩?
如何用redis實現(xiàn)分布式鎖?
事務隔離級別、鎖、索引的數(shù)據(jù)結構、聚簇索引和非聚簇索引、最左匹配原則、查詢優(yōu)化(explain等命令)
Mysql(innondb 下同) 有哪幾種事務隔離級別?
不同事務隔離級別分別會加哪些鎖?
mysql的行鎖、表鎖、間隙鎖、意向鎖分別是做什么的?
說說什么是最左匹配?
如何優(yōu)化慢查詢?
mysql索引為什么用的是b+ tree而不是b tree、紅黑樹
分庫分表如何選擇分表鍵
分庫分表的情況下,查詢時一般是如何做排序的?
zk大致原理(可以了解下原理相近的Raft算法)、zk實現(xiàn)分布式鎖、zk做集群master選舉
如何用zk實現(xiàn)分布式鎖,與redis分布式鎖有和優(yōu)缺點
HBase適用的場景、架構、merge和split、查寫數(shù)據(jù)的流程。
Storm與Map Reduce、Spark、Flink的比較。Storm高可用、消息ack機制
算法的話不是所有公司都會問,但最好還是準備下,主要是靠刷題,在leetcode上刷個100-200道easy和medium的題,然后對應公司的面經(jīng)多看看,問題應該不大。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。
文章題目:我是如何拿下阿里、頭條、滴滴的,最終還是選擇去了阿里巴巴。(上)-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article28/degpjp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、微信小程序、定制網(wǎng)站、網(wǎng)站營銷、網(wǎng)站內鏈、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容