目錄
技術(shù)一面(23問)
技術(shù)二面(3大塊)
JAVA開發(fā)技術(shù)面試中可能問到的問題(17問)
JAVA方向技術(shù)考察點(diǎn)(33快)
項(xiàng)目實(shí)戰(zhàn)(7大塊)
必會(huì)知識(shí)(48點(diǎn))
面試小技巧
注意事項(xiàng)
1. 阿里技術(shù)一面
Java IO流的層次結(jié)構(gòu)?
請(qǐng)說出常用的異常類型?
SKU的全稱是什么棱烂,SKU與SPU的區(qū)別及關(guān)系境输?
FileInputStream在使用完以后仪或,不關(guān)閉流幼东,想二次使用可以怎么操作臂容?
設(shè)計(jì)一個(gè)分步式登錄系統(tǒng)?
Spring加載過程根蟹?
自己有沒有寫過類似Spring這樣的AOP事務(wù)脓杉?
Java中 try..catch關(guān)閉流的語法糖?
如何設(shè)計(jì)一個(gè)秒殺系統(tǒng)?要考慮什么简逮?
有沒有遇到進(jìn)線上GC球散,出現(xiàn)的癥狀是什么樣的,怎么解決的散庶?
spring的加載過程蕉堰?
atomic與 volatile的區(qū)別?
Thread的 notify給notifyAll的區(qū)別?
notifiy是喚醒的那一個(gè)線程?
Thread.sleep喚醒以后是否需要重新競(jìng)爭(zhēng)督赤?
單例有多少種寫法?有什么區(qū)別?你常用哪一種單例,為什么用這種泻蚊?
問一個(gè)Thread.join相關(guān)的問題?
商品相關(guān)模塊系統(tǒng)怎么設(shè)計(jì)數(shù)據(jù)模型躲舌?
寫一個(gè)JAVA死鎖的列子?
如何解決死鎖?
GC回收算法,及實(shí)現(xiàn)原理?
HashMap數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)? key重復(fù)了怎么辦?是如何解決的?
Spring AOP的實(shí)現(xiàn)原理,底層用什么實(shí)現(xiàn)的性雄?
2. 阿里技術(shù)二面
電話面試主要考察3塊內(nèi)容:
Java的相關(guān)基礎(chǔ)知識(shí)没卸,開源框架的原理羹奉,JVM,多線程约计,高并發(fā)诀拭,中間件等;
之前項(xiàng)目經(jīng)歷煤蚌,運(yùn)用的技術(shù)耕挨,遇到的問題,如何解決尉桩,個(gè)人有什么收獲和成長(zhǎng)筒占;
對(duì)于技術(shù)的熱情(平時(shí)是否看些技術(shù)書籍,逛論壇蜘犁,寫博客翰苫,寫源代碼或程序等);
3.JAVA開發(fā)技術(shù)面試可能問到的問題
我們主要考核的是網(wǎng)絡(luò)nio分布式數(shù)據(jù)庫(kù)高并發(fā)大數(shù)據(jù)
自定義表格的實(shí)現(xiàn)?
動(dòng)態(tài)表單設(shè)計(jì)?
in-jvm(必考)以及jmm緩存模型如何調(diào)優(yōu)?
常用的RPC框架
nio和io
并發(fā)編程这橙,設(shè)計(jì)模式
地圖組件?
hashmap有什么漏洞會(huì)導(dǎo)致他變慢奏窑?
如何給hashmap的key對(duì)象設(shè)計(jì)他的hashcode?
泛型通配符?在什么情況下使用屈扎?
后端方面:redis?分布式框架dubbo(阿里巴巴開源框架)?設(shè)計(jì)模式?
場(chǎng)景式的問題:秒殺,能列出常見的排隊(duì)埃唯、驗(yàn)證碼、庫(kù)存扣減方式對(duì)系統(tǒng)高并發(fā)的影響?
能根據(jù)實(shí)際的需要構(gòu)建緩存結(jié)構(gòu)提高提高網(wǎng)站的訪問速度助隧,熟練使用ehcache筑凫、oscache,了解memcache并村。
了解基于dns輪詢的負(fù)載均衡巍实,熟練配置web服務(wù)器實(shí)現(xiàn)負(fù)載均衡,程序級(jí)能綜合使用基于hash或取模等手段實(shí)現(xiàn)軟負(fù)載哩牍。
熟悉分布式數(shù)據(jù)庫(kù)設(shè)計(jì)和優(yōu)化技術(shù)棚潦,熟練使用mysql、oracle膝昆、SqlServer等主流數(shù)據(jù)庫(kù)丸边,熟悉hadoop hbase mangodb redis ehcache、oscache memcache荚孵。對(duì)于大數(shù)據(jù)量的數(shù)據(jù)庫(kù)處理采用分表分庫(kù)妹窖、數(shù)據(jù)庫(kù)讀寫分離、建立緩存等手段優(yōu)化性能收叶。
熟練掌握lucene骄呼,能基于lucene開發(fā)大型的搜索引擎,并能用lucene來改善和優(yōu)化數(shù)據(jù)庫(kù)的like查詢。
4. JAVA方向技術(shù)考察點(diǎn)(補(bǔ)充):
掌握J(rèn)ava編程語言蜓萄,包含io/nio/socket/multi threads/collection/concurrency等功能的使用隅茎;
熟練掌握jvm(sun hotspot和ibm j9)內(nèi)存模型、gc垃圾回收調(diào)優(yōu)等技能嫉沽;
精通JVM,JMM,MVC架構(gòu)辟犀,熟練使用struts2。
熟練使用spring绸硕、struts堂竟、ibatis構(gòu)建應(yīng)用系統(tǒng)。
熟練使用Servlet臣咖,jsp跃捣,freemark等前端技術(shù)。
熟練使用axis搭建基于SOAP協(xié)議的WebService服務(wù)接口夺蛇。
熟練使用MAVEN構(gòu)建項(xiàng)目工程疚漆。
熟練使用tomcat等web服務(wù)。
熟練使用mysql等關(guān)系型數(shù)據(jù)庫(kù)刁赦,熟悉mysql集群搭建娶聘。
熟練使用redis等NOSQL技術(shù)。
熟悉tcp甚脉、http協(xié)議丸升。
熟悉nginx、haproxy等配置牺氨。
熟悉javascript狡耻、ajax等技術(shù)。
熟悉主流分布式文件系統(tǒng)FastDFS等猴凹。
熟悉JMS夷狰,可熟練使用ActiveMQ。
底層計(jì)算機(jī)理解內(nèi)存管理/數(shù)據(jù)挖掘系統(tǒng)
可靠性和可用性如何理解~
jsp和sever lap對(duì)比
數(shù)據(jù)庫(kù)到界面郊霎,字符集轉(zhuǎn)化
基棧
jvm優(yōu)化cup高的時(shí)候如果分析和監(jiān)控
java curb突出細(xì)節(jié)問題
分布式緩存文檔如何分流
遷移數(shù)據(jù)庫(kù)垂直分割
高并發(fā)如何處理前端高并發(fā)應(yīng)用層
LB設(shè)計(jì)load balance
負(fù)載均衡
防網(wǎng)絡(luò)攻擊
數(shù)據(jù)日志事件監(jiān)控后通知
數(shù)據(jù)庫(kù)事務(wù)實(shí)現(xiàn)的底層機(jī)制
字符串空格輸入的網(wǎng)絡(luò)攻擊
Quartz框架的底層原理
數(shù)據(jù)庫(kù)同步中不通過數(shù)據(jù)庫(kù)引擎直接讀日志等方式同步數(shù)據(jù)
5. 項(xiàng)目部分
緩存的使用沼头,如果現(xiàn)在需要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的緩存,供搜索框中的ajax異步請(qǐng)求調(diào)用书劝,使用什么結(jié)構(gòu)进倍?
內(nèi)存中的緩存不能一直存在,用什么算法定期將搜索權(quán)重較低的entry去掉购对?
TCP如何保證安全性
紅黑樹的問題猾昆,B+數(shù)
JDK1.8中對(duì)HashMap的增強(qiáng),如果一個(gè)桶上的節(jié)點(diǎn)數(shù)量過多骡苞,鏈表+數(shù)組的結(jié)構(gòu)就會(huì)轉(zhuǎn)換為紅黑樹垂蜗。
項(xiàng)目中使用的單機(jī)服務(wù)器坑赡,如果將它部署成分布式服務(wù)器?
MySQL的常見優(yōu)化方式么抗、定為慢查詢
手寫一個(gè)線程安全的單例模式
6. 進(jìn)阿里必會(huì)知識(shí):
算法和數(shù)據(jù)結(jié)構(gòu)數(shù)組、鏈表亚铁、二叉樹蝇刀、隊(duì)列、棧的各種操作(性能徘溢,場(chǎng)景)
二分查找和各種變種的二分查找
各類排序算法以及復(fù)雜度分析(快排吞琐、歸并、堆)
各類算法題(手寫)
理解并可以分析時(shí)間和空間復(fù)雜度然爆。
動(dòng)態(tài)規(guī)劃(筆試回回有站粟。。)曾雕、貪心奴烙。
紅黑樹、AVL樹剖张、Hash樹切诀、Tire樹、B樹搔弄、B+樹幅虑。
圖算法(比較少,也就兩個(gè)最短路徑算法理解吧)
計(jì)算機(jī)網(wǎng)絡(luò)OSI7層模型(TCP4層)每層的協(xié)議
url到頁(yè)面的過程
HTTPhttp/https 1.0顾犹、1.1倒庵、2.0
get/post以及冪等性
http協(xié)議頭相關(guān)
網(wǎng)絡(luò)攻擊(CSRF、XSS)
TCP/IP三次握手炫刷、四次揮手
擁塞控制(過程擎宝、閾值)
流量控制與滑動(dòng)窗口
TCP與UDP比較
子網(wǎng)劃分(一般只有筆試有)
DDos攻擊
(B)IO/NIO/AIO三者原理,各個(gè)語言是怎么實(shí)現(xiàn)的
Netty
Linux內(nèi)核select poll epoll
數(shù)據(jù)庫(kù)(最多的還是mysql柬唯,Nosql有redis)索引(包括分類及優(yōu)化方式认臊,失效條件,底層結(jié)構(gòu))
sql語法(join锄奢,union失晴,子查詢,having拘央,group by)
引擎對(duì)比(InnoDB涂屁,MyISAM)
數(shù)據(jù)庫(kù)的鎖(行鎖,表鎖灰伟,頁(yè)級(jí)鎖拆又,意向鎖儒旬,讀鎖,寫鎖帖族,悲觀鎖栈源,樂觀鎖,以及加鎖的select sql方式)
隔離級(jí)別竖般,依次解決的問題(臟讀甚垦、不可重復(fù)讀、幻讀)
事務(wù)的ACID
B樹涣雕、B+樹
優(yōu)化(explain艰亮,慢查詢,show profile)
數(shù)據(jù)庫(kù)的范式挣郭。
分庫(kù)分表迄埃,主從復(fù)制,讀寫分離兑障。
Nosql相關(guān)(redis和memcached區(qū)別之類的侄非,如果你熟悉redis,redis還有一堆要問的)
操作系統(tǒng):進(jìn)程通信IPC(幾種方式)流译,與線程區(qū)別
OS的幾種策略(頁(yè)面置換彩库,進(jìn)程調(diào)度等卵酪,每個(gè)里面有幾種算法)
互斥與死鎖相關(guān)的
linux常用命令(問的時(shí)候都會(huì)給具體某一個(gè)場(chǎng)景)
Linux內(nèi)核相關(guān)(select梗逮、poll、epoll)
編程語言(這里只說Java):把我之后的面經(jīng)過一遍界斜,Java感覺覆蓋的就差不多了竞漾,不過下面還是分個(gè)類眯搭。
Java基礎(chǔ)(面向?qū)ο蟆⑺膫€(gè)特性业岁、重載重寫鳞仙、static和final等等很多東西)
集合(HashMap、ConcurrentHashMap笔时、各種List棍好,最好結(jié)合源碼看)
并發(fā)和多線程(線程池、SYNC和Lock鎖機(jī)制允耿、線程通信借笙、volatile、ThreadLocal较锡、CyclicBarrier业稼、Atom包、CountDownLatch蚂蕴、AQS低散、CAS原理等等)
JVM(內(nèi)存模型俯邓、GC垃圾回收,包括分代熔号,GC算法稽鞭,收集器、類加載和雙親委派引镊、JVM調(diào)優(yōu)川慌,內(nèi)存泄漏和內(nèi)存溢出)
IO/NIO相關(guān)
反射和代理、異常祠乃、Java8相關(guān)、序列化
設(shè)計(jì)模式(常用的兑燥,jdk中有的)
Web相關(guān)(servlet亮瓷、cookie/session、Spring)
7.面試技巧
1降瞳、答非所問:
感覺到答案說出來對(duì)方會(huì)不待見的時(shí)候嘱支,可以這么做:有關(guān)聯(lián)性的答非所問,注意強(qiáng)調(diào)自己的想法挣饥,爭(zhēng)取讓面試官能夠共情除师,比如深圳的房?jī)r(jià)可以引人共情、電商相關(guān)的大平臺(tái)扔枫、穩(wěn)定汛聚、有上升空間等。
2短荐、面試的狀態(tài)很重要:
兩個(gè)例子倚舀,上月一個(gè)成功offer的候選人,非互聯(lián)網(wǎng)背景忍宋,公司也不是一線的痕貌,但是面試時(shí)表現(xiàn)出對(duì)阿里很強(qiáng)烈的興趣,HR事后特地向我們提到糠排,對(duì)這位候選人印象很深刻舵稠;
另一位今天剛掛的候選人,兩輪技術(shù)都是一舉拿下入宦,最后HR面掛了哺徊,HR給我們的反饋是,候選人剛從自己的創(chuàng)業(yè)公司離職乾闰,貌似情緒很低落唉工,對(duì)自己也沒什么想法。
綜上所述汹忠,面試時(shí)既不要唯唯諾諾淋硝,過于被動(dòng)雹熬,也不要過于夸張,而是在于展現(xiàn)自己對(duì)一個(gè)不錯(cuò)機(jī)會(huì)的尊重和爭(zhēng)取谣膳,讓面試官覺得你對(duì)他們竿报,對(duì)這個(gè)崗位有很大的興趣。
8. 注意事項(xiàng)
1继谚、阿里比絕大部分公司更看重情懷和夢(mèng)想
阿里的八字箴言:樂觀烈菌、聰明、皮實(shí)花履、自省
2芽世、阿里里面的HR都是懂業(yè)務(wù)的,會(huì)結(jié)合對(duì)候選人的判斷和業(yè)務(wù)的把控進(jìn)行篩選诡壁,不要忽悠他們.......
相信自己济瓢,沒有做不到的,只有想不到的妹卿。
喜歡這篇文章的話旺矾,請(qǐng)使用你發(fā)財(cái)?shù)男∈譃槲尹c(diǎn)個(gè)關(guān)注吧,每天都會(huì)分享Java相關(guān)技術(shù)知識(shí)夺克,還有互聯(lián)網(wǎng)資訊箕宙,也會(huì)定時(shí)給大家送福利,書籍铺纽,學(xué)習(xí)筆記柬帕,源碼等。