一、Java基礎(chǔ)
實(shí)例方法和靜態(tài)方法有什么不一樣?
Java中的異常有哪幾類(lèi)?分別怎么使用?
常用的集合類(lèi)有哪些?比如List如何排序?
ArrayList和LinkedList內(nèi)部的實(shí)現(xiàn)大致是怎樣的?他們之間的區(qū)別和各自適應(yīng)的場(chǎng)景是什么?
內(nèi)存溢出是怎么回事?
ClassLoader有什么用?
==和equals的區(qū)別?
hashCode方法的作用?
Object類(lèi)中有哪些方法?列舉3個(gè)以上。
NIO是什么?適用于何種場(chǎng)景?
HashMap數(shù)據(jù)結(jié)構(gòu)、擴(kuò)展策略,Hash沖突攻擊如何防范,如何實(shí)現(xiàn)線(xiàn)程安全的HashMap?
JVM內(nèi)存結(jié)構(gòu),GC算法,CMS、G1的原理
NIO模型,select/epoll的區(qū)別,多路復(fù)用的原理
Java中一個(gè)字符占多少個(gè)字節(jié),擴(kuò)展再問(wèn)int, long, double占多少字節(jié)
創(chuàng)建一個(gè)類(lèi)的實(shí)例都有哪些辦法?
final/finally/finalize的區(qū)別?
LinkingBlockingQueue與ArrayBlockingQueue的區(qū)別,他們的適用場(chǎng)景?
Session/Cookie的區(qū)別?
String/StringBuffer/StringBuilder的區(qū)別,擴(kuò)展再問(wèn)他們的實(shí)現(xiàn)?
Servlet的生命周期?
如何用Java分配一段連續(xù)的1G的內(nèi)存空間?需要注意些什么?
Java有自己的內(nèi)存回收機(jī)制,但為什么還存在內(nèi)存泄露的問(wèn)題呢?
Java里面用對(duì)象作為Key需要注意些什么? 如何實(shí)現(xiàn)hashcode?
二、JVM
JVM堆的基本結(jié)構(gòu)。
JVM的垃圾算法有哪幾種?CMS收集算法的流程?
JVM有哪些常用啟動(dòng)參數(shù)可以調(diào)整?
如何查看JVM的內(nèi)存使用情況?
Java程序是否會(huì)內(nèi)存溢出?
你常用的JVM配置和調(diào)優(yōu)參數(shù)都有哪些?分別什么作用?
Java內(nèi)存分代模型,GC算法,JVM常見(jiàn)的啟動(dòng)參數(shù);
CMS算法的過(guò)程,CMS回收過(guò)程中JVM是否需要暫停(這塊回答較好,也可以只是看畢玄的Java分布式開(kāi)發(fā)或網(wǎng)上文章的學(xué)習(xí), 可以結(jié)合JVM啟動(dòng)參數(shù)常見(jiàn)配置,jstat等命令,看下動(dòng)手能力,意愿;以及實(shí)際線(xiàn)上問(wèn)題排查)
什么情況下會(huì)出現(xiàn)OOM(堆內(nèi)存,永久區(qū),堆外區(qū),方法棧)
Java內(nèi)存結(jié)構(gòu)(堆結(jié)構(gòu),新生代[S0/S1/Elden],年老代,持久代)
常用的GC策略,什么時(shí)候會(huì)觸發(fā)YGC,什么時(shí)候觸發(fā)FGC
三、數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)
說(shuō)一下幾種常見(jiàn)的排序算法和分別的復(fù)雜度。
什么是跳表?
如何確認(rèn)一個(gè)鏈表有環(huán)?進(jìn)一步,確認(rèn)環(huán)的位置。
如何遍歷一棵二叉樹(shù)?
倒排一個(gè)LinkedList。
HashSet的實(shí)現(xiàn)方式
四、多線(xiàn)程/并發(fā)
Java中常見(jiàn)的鎖,互斥鎖,讀寫(xiě)鎖,信號(hào)量
原子Atomic類(lèi),如何保證原子性,CAS硬件指令
volatile,可見(jiàn)性問(wèn)題的原因,硬件架構(gòu),L3 Cache,QPI,樂(lè)觀(guān)鎖
如何實(shí)現(xiàn)一個(gè)線(xiàn)程安全的數(shù)據(jù)結(jié)構(gòu)
如何避免死鎖
如何解決ABA問(wèn)題
Synchronized關(guān)鍵字的作用?
Volatile關(guān)鍵字的作用?
Java內(nèi)存模型是怎樣的?
HashMap在多線(xiàn)程環(huán)境下使用需要注意什么?為什么?
Java程序中啟動(dòng)一個(gè)線(xiàn)程是用run()還是start()?
什么是守護(hù)線(xiàn)程?有什么用?
什么是死鎖?如何避免
線(xiàn)程和進(jìn)程的差別是什么?
Java里面的Threadlocal是怎樣實(shí)現(xiàn)的?
ConcurrentHashMap的實(shí)現(xiàn)原理是?
sleep和wait區(qū)別
notify和notifyAll區(qū)別
volatile關(guān)鍵字的作用
ThreadLocal的作用與實(shí)現(xiàn)
兩個(gè)線(xiàn)程如何串行執(zhí)行
上下文切換是什么含義
可以運(yùn)行時(shí)kill掉一個(gè)線(xiàn)程嗎?
什么是條件鎖、讀寫(xiě)鎖、自旋鎖、可重入鎖?
什么是協(xié)程(用戶(hù)態(tài)線(xiàn)程,減少數(shù)據(jù)拷貝,降低CPU開(kāi)銷(xiāo),無(wú)callback函數(shù))?
線(xiàn)程池ThreadPoolExecutor的實(shí)現(xiàn)原理?
J.U.C下的常見(jiàn)類(lèi)的使用。lock, synchronized, ThreadPool的深入考察; BlockingQueue的使用。(take,poll的區(qū)別,put,offer的區(qū)別);原子類(lèi)的實(shí)現(xiàn)。
各種常見(jiàn)鎖使用如果上面這些掌握很好,還可以看看更深一點(diǎn)的 False Sharing,Cache Line,可見(jiàn)性與原子性等;
五、Linux使用與問(wèn)題分析排查
硬鏈接和軟鏈接的區(qū)別?
inode是什么?
Linux常用命令有哪些?
怎么看一個(gè)Java線(xiàn)程的資源耗用?
Load過(guò)高的可能性有哪些?
/etc/hosts文件什么做用?
/etc/resolv.conf文件什么作用?
如何快速的將一個(gè)文本中所有“abc”替換為“xyz”?
你常用的Linux下用來(lái)進(jìn)行網(wǎng)絡(luò)和磁盤(pán)IO分析的工具有哪些?
你常用的Linux下用來(lái)進(jìn)行內(nèi)存和CPU分析的工具有哪些?
發(fā)現(xiàn)磁盤(pán)空間不夠,如何快速找出占用空間最大的文件?
Java服務(wù)端問(wèn)題排查(OOM,CPU高,Load高,類(lèi)沖突)
Java常用問(wèn)題排查工具及用法(top, iostat, vmstat, sar, tcpdump, jvisualvm, jmap, jconsole)
Thread dump文件如何分析(Runnable,鎖,代碼棧,操作系統(tǒng)線(xiàn)程ID關(guān)聯(lián))
grep,awk,sed; 是否自己寫(xiě)過(guò)shell腳本;
常見(jiàn)的cpu load過(guò)高,us過(guò)高,一般是什么問(wèn)題。引申出是否用過(guò)top,jstat,jstack等。
常見(jiàn)的內(nèi)存問(wèn)題一般有哪些。 引申出是否用過(guò)free,top, jmap等。
六、框架使用
Spring中Bean的生命周期。
SpringMVC或Struts處理請(qǐng)求的流程。
Spring AOP解決了什么問(wèn)題?怎么實(shí)現(xiàn)的?aop與cglib,與asm的關(guān)系。
Spring事務(wù)的傳播屬性是怎么回事?它會(huì)影響什么?
Spring中BeanFactory和FactoryBean有什么區(qū)別?
Spring框架中IOC的原理是什么?
spring的依賴(lài)注入有哪幾種方式
struts工作流程
用Spring如何實(shí)現(xiàn)一個(gè)切面?
Spring 如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)事務(wù)?
Hibernate和Ibatis這類(lèi)ORM框架的區(qū)別?什么是ORM,解決的痛點(diǎn)是什么?
spriong ioc的生命周期,(init-method,intilizingbean接口方法afterPropertiesSet的先后順序)等。
Hibernate對(duì)一二級(jí)緩存的使用,Lazy-Load的理解;
Spring IoC AOP自己用代碼如何實(shí)現(xiàn)
RPC的負(fù)載均衡、服務(wù)發(fā)現(xiàn)怎么做的
幾種推送模型的區(qū)別,long polling,websocket
七、數(shù)據(jù)庫(kù)相關(guān)
MySQL InnoDB的特點(diǎn)?
樂(lè)觀(guān)鎖和悲觀(guān)鎖的區(qū)別?
數(shù)據(jù)庫(kù)隔離級(jí)別是什么?有什么作用?
MySQL主備同步的基本原理。
如何從一張表中查出name字段包含“XYZ”的所有行?
索引數(shù)據(jù)結(jié)構(gòu)(字典+BitTree)
如何優(yōu)化數(shù)據(jù)庫(kù)性能(索引、分庫(kù)分表、批量操作、分頁(yè)算法、升級(jí)硬盤(pán)SSD、業(yè)務(wù)優(yōu)化、主從部署)
SQL什么情況下不會(huì)使用索引(不包含,不等于,函數(shù))
一般在什么字段上建索引(過(guò)濾數(shù)據(jù)最多的字段)
如何從一張表中查出name字段不包含“XYZ”的所有行?
MySQL,B+索引實(shí)現(xiàn),行鎖實(shí)現(xiàn),SQL優(yōu)化
Redis,RDB和AOF,如何做高可用、集群
如何解決高并發(fā)減庫(kù)存問(wèn)題
mysql存儲(chǔ)引擎中索引的實(shí)現(xiàn)機(jī)制;
數(shù)據(jù)庫(kù)事務(wù)的幾種粒度;
行鎖,表鎖;樂(lè)觀(guān)鎖,悲觀(guān)鎖
八、網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)編程
TCP建立連接的過(guò)程。
TCP斷開(kāi)連接的過(guò)程。
瀏覽器發(fā)生302跳轉(zhuǎn)背后的邏輯?
HTTP協(xié)議的交互流程。HTTP和HTTPS的差異,SSL的交互流程?
Rest和Http什么關(guān)系? 大家都說(shuō)Rest很輕量,你對(duì)Rest風(fēng)格如何理解?
TCP的滑動(dòng)窗口協(xié)議有什么用?講講原理。
HTTP協(xié)議都有哪些方法?
交換機(jī)和路由器的區(qū)別?
什么是VLAN,有什么作用?
什么是VXLAN,有什么作用?
http協(xié)議(報(bào)文結(jié)構(gòu),斷點(diǎn)續(xù)傳,多線(xiàn)程下載,什么是長(zhǎng)連接)
tcp協(xié)議(建連過(guò)程,慢啟動(dòng),滑動(dòng)窗口,七層模型)
webservice協(xié)議(wsdl/soap格式,與rest協(xié)議的區(qū)別)
spdy/http2.0協(xié)議是否有了解
NIO的好處,Netty線(xiàn)程模型,什么是零拷貝
九、Redis等緩存系統(tǒng)/中間件/NoSQL/一致性Hash等
列舉一個(gè)常用的Redis客戶(hù)端的并發(fā)模型。
HBase如何實(shí)現(xiàn)模糊查詢(xún)?
列舉一個(gè)常用的消息中間件,如果消息要保序如何實(shí)現(xiàn)?
如何實(shí)現(xiàn)一個(gè)Hashtable?你的設(shè)計(jì)如何考慮Hash沖突?如何優(yōu)化?
分布式緩存,一致性hash
LRU算法,slab分配,如何減少內(nèi)存碎片
如何解決緩存單機(jī)熱點(diǎn)問(wèn)題
什么是布隆過(guò)濾器,其實(shí)現(xiàn)原理是? False positive指的是?
memcache與redis的區(qū)別
zookeeper有什么功能,選舉算法如何進(jìn)行
map/reduce過(guò)程,如何用map/reduce實(shí)現(xiàn)兩個(gè)數(shù)據(jù)源的聯(lián)合統(tǒng)計(jì)
十、設(shè)計(jì)模式與重構(gòu)
你在設(shè)計(jì)一個(gè)工廠(chǎng)的包的時(shí)候會(huì)遵循哪些原則?
你能列舉一個(gè)使用了Visitor/Decorator模式的開(kāi)源項(xiàng)目/庫(kù)嗎?
你在編碼時(shí)最常用的設(shè)計(jì)模式有哪些?在什么場(chǎng)景下用?
如何實(shí)現(xiàn)一個(gè)單例?
代理模式(動(dòng)態(tài)代理)
單例模式(懶漢模式,惡漢模式,并發(fā)初始化如何解決,volatile與lock的使用)
JDK源碼里面都有些什么讓你印象深刻的設(shè)計(jì)模式使用,舉例看看?
Reactor模式
十一、學(xué)習(xí)與進(jìn)取心
平時(shí)會(huì)關(guān)注哪些技術(shù)?
會(huì)看那些技術(shù)博客和網(wǎng)站?
技術(shù)上有沒(méi)有偶像?
看過(guò)哪些技術(shù)書(shū)籍?
你平常都看些什么書(shū)?你去年和今年看的書(shū)中印象最深的基本技術(shù)書(shū)籍和非技術(shù)書(shū)籍是?
(如果不看書(shū))你平常都上哪些技術(shù)論壇?最喜歡哪個(gè)?為什么?
項(xiàng)目或產(chǎn)品中用到了什么新技術(shù)或框架
最近研究過(guò)什么業(yè)界流行的技術(shù)或框架
對(duì)現(xiàn)在所做的項(xiàng)目或產(chǎn)品的缺陷是否了解,有何規(guī)劃
是否有帶過(guò)項(xiàng)目,如何管理項(xiàng)目
是否有帶過(guò)團(tuán)隊(duì),團(tuán)隊(duì)管理最大的挑戰(zhàn)點(diǎn)是什么
十二、抗壓能力及抗壓意愿
剛才你說(shuō)的XXX實(shí)現(xiàn)跟那個(gè)開(kāi)源的YYY很像,是不是抄來(lái)的?
對(duì)加班怎么看?
平臺(tái)是否有加班,是主動(dòng)還是被動(dòng),是否非常抗拒
是否有負(fù)責(zé)多件事情,多件事情如何并行處理
你對(duì)你最近負(fù)責(zé)項(xiàng)目中最自豪的點(diǎn)是什么?
十三、開(kāi)放性問(wèn)題
一個(gè)大文件4G,里面一行行的數(shù)字,這時(shí)內(nèi)存只有256M,如果做排序?
如果你部署的應(yīng)用所在機(jī)器硬盤(pán)壞了,會(huì)發(fā)生什么?你的程序要如何處理這種異常?(分布式系統(tǒng)中故障是一種常態(tài),設(shè)計(jì)要避免單點(diǎn)故障,能容錯(cuò),保證系統(tǒng)高可用)
實(shí)現(xiàn)一個(gè)消息隊(duì)列系統(tǒng)
如何設(shè)計(jì)一個(gè)高可用的架構(gòu)
多次Hash來(lái)解決URL重復(fù)訪(fǎng)問(wèn)問(wèn)題。
全局唯一ID問(wèn)題。
秒殺如何設(shè)計(jì)。
如何進(jìn)行性能優(yōu)化。
發(fā)現(xiàn)CPU 100%,如何排查?
實(shí)現(xiàn)一個(gè)分布式打點(diǎn)系統(tǒng)。
taobao.com和tmall.com的互相登錄的問(wèn)題。
如何快速對(duì)一個(gè)2億數(shù)據(jù)的List進(jìn)行排序?