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