思維的惰性
我30的時候,連跳兩輪,直接翻了一倍,年齡沒你想的那麼可怕。可怕的是沒有信心以及支持信心的底氣。// @風一樣的愛好者: 本人就是工資倒掛的程序猿,不是不想跳槽,人過30歲,編碼崗位並不是那麼好找
堅持。長期地堅持去做一件事情,真的很難。不過,當你下定決心持續地去做一件事情的時候,你的堅持就會變成一種習慣。習慣一旦養成,你不去做那件事情的時候,反而會覺得心裏不舒服,好像少了什麼似的。因爲平時要上班,所以一天下來,其實也沒多少時間去研究Android系統。這時候我就告訴自己,更加要堅持,並且給自己算了一筆數:工作日每天看20頁書,週末每天看50頁書,大概兩週就可以看一本400~500頁的書;一天看300行左右代碼,一週就能看2000~3000行代碼;一天寫1個段落的博客,一週也能搗鼓出1篇來。另外,當堅持了一段時間之後,就會發現學習的速度比以前更快了,就好像有一種加速度一樣,這時候就會發現事情越做越快。
自信。自信是很重要的,尤其是在你做一件很有挑戰性的事情的時候。如果沒有自信,在碰到難以解決的困難時,或許就會放棄了。其實在很多時候,機遇都是偏愛那些有自信並且一直堅持着夢想的人。記得在研究Android系統的UI渲染服務SurfaceFlinger的時候,被一個20多行代碼的函數難住了,百思不得其解。後來盯了兩三天,聯繫了各種上下文,最後總算是把它弄明白了。我一直都相信潛意識這種東西:只要你相信你能解決一個問題,並且堅持住不放棄,潛意識就會幫助你去加工和組織各種原始信息。因此,自信很重要,它是一種軟實力:有自信不一定能成功,但是沒有自信要成功就難上加難。
淡定。淡定是一種人生態度,它能使你不功利,不浮躁,從容地面對得與失,找到一條更合適自己長遠發展的路。往往夢想都是一個比較長期的東西,不是短期內就能看到效益的。在堅持夢想的過程中,又可能要付出很多代價,例如,你沒有時間找(陪)老婆或者女朋友,你賺的錢沒有一起畢業的同學多,諸如此類的等等事情。這時候,你就更需要淡定:只要你判斷你正在做的事情是值得的,你就淡定地面對別人的眼光和周圍的環境。我發現寫博客以來,自己變得越來越宅了,下班後和週末都更願意呆在房間裏,當漸漸地發現同學都在忙着曬結婚照或者小孩照的時候,自己還在單身着:(。這可能就是宅的代價吧,不過現在對這件事情還是比較淡定:)。
總結來說就是:心懷夢想,帶着自信和淡定,持之以恆,學習、學習,再學習!很諷刺的是,如果是五六年以前的自己看到上面的這些文字,我會覺得很扯,很空洞,沒意義。人可能就是要非得親自去經歷一些事情,才能深刻地領會一些道理。
基本功
面向對象的特徵
final, finally, finalize 的區別
int 和 Integer 有什麼區別
重載和重寫的區別
抽象類和接口有什麼區別
說說反射的用途及實現
說說自定義註解的場景及實現
HTTP 請求的 GET 與 POST 方式的區別
session 與 cookie 區別
http://uule.iteye.com/admin/blogs/2211575
session 分佈式處理
http://uule.iteye.com/admin/blogs/2236466
JDBC 流程
MVC 設計思想
equals 與 == 的區別
接口與抽象類的區別?
Java中的異常有哪幾類?分別怎麼使用?
常用的集合類有哪些?比如List如何排序?
ArrayList和LinkedList內部的實現大致是怎樣的?他們之間的區別和優缺點?
內存溢出是怎麼回事?請舉一個例子?
==和equals的區別?
hashCode方法的作用?
Java中一個字符佔多少個字節,擴展再問int, long, double佔多少字節
創建一個類的實例都有哪些辦法?
String/StringBuffer/StringBuilder的區別,擴展再問他們的實現?
Servlet的生命週期?
如何用Java分配一段連續的1G的內存空間?需要注意些什麼?
Java有自己的內存回收機制,但爲什麼還存在內存泄露的問題呢?
什麼是java序列化,如何實現java序列化?(寫一個實例)?
String s = new String("abc");創建了幾個 String Object?
Java中實現多態的機制是什麼
什麼是線程池,如何使用?
數據一致性如何保證;Synchronized關鍵字,類鎖,方法鎖,重入鎖
進程和線程的區別
說說你對Java反射的理解
java反射獲取私有屬性,改變值
反射用途
Java如何調用c、c++語言
你所知道的設計模式有哪些
【搜】死鎖的四個必要條件
常見編碼方式;utf-8編碼中的中文佔幾個字節;int型幾個字節
心跳包是怎麼設計的
Java什麼時候會發生內存泄漏?
Array與ArrayList的區別
如何解決變量可見性?
重載與重寫的區別
索引是怎麼實現的?
object對象的常用方法
項目技術架構圖
websocket長連接
秒殺業務場景設計(事務,邏輯調整,行級鎖,數據庫併發度、mybatis調用存儲過程)
你使用了哪些數據庫調優方法?
爲什麼使用消息隊列?應用場景,優點?
我剛阿里一面完:數據庫連接池原理、AOP代理機制、無序屬於所有三個數和爲0的所有情況…
=========================================================================
項目
項目中遇到的困難(提前想好,並且把實現或者優化方法說清楚)
系統的量級、pv、uv等
在項目中主要負責了哪些工作。
nginx的負載均衡
項目難點,問題
如何解決項目中遇到的問題
項目中遇到最自豪的地方
會什麼算法
========================================================================
數據結構與算法基礎
排序:
說一下幾種常見的排序算法和分別的複雜度。
用Java寫一個冒泡排序算法
最快的排序算法是哪個?給阿里2萬多名員工按年齡排序應該選擇哪個算法?堆和樹的區別;寫出快排代碼;鏈表逆序代碼
排序(八大排序,各自的時間複雜度、排序算法的穩定性。快排幾乎每次都問)
樹:
如何遍歷一棵二叉樹?
比如二分查找樹,自平衡樹(紅黑樹,AVL樹)。在問完這些數據結構的一些基本思想後,就讓我手寫實現一棵紅黑樹
B+樹和二叉樹查找時間複雜度
二叉樹相關(層次遍歷、求深度、求兩個節點距離、翻轉二叉樹、前中後序遍歷)
紅黑樹性質
二叉樹和哈希表查找的時間複雜度
圖(深度廣度優先遍歷、單源最短路徑、最小生成樹)
廣度優先遍歷二叉樹
各類排序算法、紅黑樹
【既然有哈希,爲什麼要用樹】
https://blog.csdn.net/maybe3is3u5/article/details/52426401
https://blog.csdn.net/wei_wenbo/article/details/50820300
鏈表:
複雜鏈表的深度複製
如何判斷一個單鏈表是否有環?
鏈表相關(插入節點、鏈表逆置、使用鏈表進行大數字的加減,雙向鏈表實現隊列、尋找鏈表中的環)
描述一下鏈式存儲結構。
3分鐘之內寫出來鏈表逆序的遞歸算法
http://uule.iteye.com/admin/blogs/2141656
棧和鏈表是面試算法的時候經常用到的工具,多考慮怎麼用數據結構的性質解決,因爲面試不像筆試,對基礎數據結構關注的比較多一些,一般問題也比較簡單。然後取模也是常用的工具(比如有一次問怎麼讓100個進程按規定的權重被調用,就可以用取模的方式)。
數組:
給你一個數組,如何裏面找到和爲K的兩個數?
跳躍數組問題
用數組實現一個阻塞隊列
http://uule.iteye.com/admin/blogs/2419419
二分查找(一般會深入,如尋找數組總和爲K的兩個數字)
應用:
10億個數去重,我說用hash分片做,他說可能不均勻,然後我說了bitmap,他說那數字量更多怎麼辦,我說那就兩個bitmap把。他說下一題吧。
十億個數找前10個最大的,小頂堆過一遍即可。他說如果要提高效率呢,我說可以分片做堆排序再進行歸併即可。他說OK。
劍指OFFER的各個題目是最常見的,即使不是原題也是題目的變體,因爲面試不像筆試,一般不會出特別困難的題目,所以劍指OFFER上小而精的題目就非常適合。建議手刷一遍。
倒排一個LinkedList。
用Java寫一個遞歸遍歷目錄下面的所有文件。
問如何找到k個最小的數。
編程題:設有N個人依次圍成一圈,從第1個人開始報數,第M個人出列,然後從出列的下一個人開始報數,數到第M個人又出列,...,如此反覆到所有的人全部出列爲止,設N個人的編號分別爲1,2,...,N,打印出出列的順序,要求用java實現。
如何在有限內存下對10GB文本數據排序?
然後問了一個算法問題,熟人問題,說一下你的思路?你要怎麼構造數據集?。。
用javascript寫出斐波那契函數。。。
請設計一個排隊系統,能夠讓每個進入隊伍的用戶都能看到自己在隊列中所處的位置和變化,隊伍可能隨時有人加入和退出;當有人退出影響到用戶的位置排名時需要及時反饋到用戶
一個不規則INT數組,找出連續的最大增序子數組
答海量(大於內存)的字符串讀入,怎樣得到頻率最高的那組字符串
求1000以內的水仙花數以及40億以內的水仙花數
萬億級別的兩個URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分組->多文件讀寫效率->磁盤尋址以及應用層面對尋址的優化)
給你一萬個數,如何找出裏面所有重複的數?用所有你能想到的方法,時間複雜度和空間複雜度分別是多少?
100000個數找出最小或最大的10個?
一堆數字裏面繼續去重,要怎麼處理?
子串包含問題(KMP 算法)寫代碼實現
堆和棧在內存中的區別是什麼(數據結構方面以及實際實現方面)
查找算法
KMP算法、hash算法
常用的hash算法有哪些
堆(大量數據中尋找最大N個數字幾乎每次都會問,還有堆在插入時進行的調整)
兩個棧實現隊列。
動態規劃問題。
分治法和動態規劃的區別
計算時間複雜度
面試官一般會先出簡單的問題,然後深入地問下去,最好是根據他的思路走,因爲能聽懂他的提示也是需要考察的能力。
Tomcat瞭解麼。說一下類加載器結構吧
負載均衡的算法
哈弗曼編碼,如何解決譯碼問題
========================================================================
集合
List 和 Set 區別
List 和 Map 區別
Arraylist 與 LinkedList 區別
ArrayList 與 Vector 區別
HashMap 和 Hashtable 的區別
HashSet 和 HashMap 區別
HashMap 和 ConcurrentHashMap 的區別
ConcurrentHashMap 的工作原理及代碼實現
HashMap在多線程環境下使用需要注意什麼?爲什麼?
HashMap與ConcurrentHashMap的區別及底層實現原理;2.多線程的實現方式以及比較優劣;3.樂觀鎖與悲觀鎖的區別以及使用場景
集合類以及集合框架;HashMap與HashTable實現原理,線程安全性,hash衝突及處理算法;
CopyOnWriteArrayList
hashset是如何通過hashmap來實現的?
HashSet 內部使用 HashMap 。HashSet 把存儲的值作爲 key, new Object()作爲Value)
http://www.importnew.com/19208.html
HashMap實現原理,如何保證HashMap的線程安全?
HashMap 的工作原理及代碼實現
HashMap默認加載因子爲什麼選擇0.75?
HashMap什麼情況下發生死鏈?
HashMap的不當使用是否會導致cpu100%?爲什麼?
http://uule.iteye.com/admin/blogs/1122340
========================================================================
JVM
JVM內存結構
http://uule.iteye.com/admin/blogs/2419969
JVM堆的基本結構。
http://uule.iteye.com/admin/blogs/1894724
JVM如何給對象分配內存?
http://uule.iteye.com/admin/blogs/2421863
JVM的垃圾算法有哪幾種?CMS垃圾回收的基本流程?
http://uule.iteye.com/admin/blogs/2422000
JVM有哪些常用啓動參數可以調整,描述幾個?
https://blog.csdn.net/mrzhoug/article/details/51148302
-Xms512m/-Xmx512m/NewSize/newRatio/SurvivorRatio/MaxPermSize/UseSerialGC/UseConcMarkSweepGC....
如何查看JVM的內存使用情況?
Java程序是否會內存溢出,內存泄露情況發生?舉幾個例子。
你常用的JVM配置和調優參數都有哪些?分別什麼作用?
常用的GC策略,爲什麼需要GC?什麼時候會觸發YGC,什麼時候觸發FGC?
如何死循環跟蹤揭祕jvm
jvm相關問題,運行時內存分佈、gc策略、gc算法、類加載的過程
哪些情況下會出現CPU100%?如果出現了你怎麼去定位(常用的工具和步驟以及如何分析)?
CMS和G1瞭解麼,CMS解決什麼問題,說一下回收的過程。
CMS回收停頓了幾次,爲什麼要停頓兩次。
Java棧什麼時候會發生內存溢出,Java堆呢,說一種場景,我說集合類持有對象。
那集合類如何解決這個問題呢,我說用軟引用和弱引用,那你講一下這兩個引用的區別吧。
========================================================================
多線程
創建線程的方式及實現
sleep() 、join()、yield()有什麼區別
說說 CountDownLatch 原理
說說 CyclicBarrier 原理
說說 Semaphore 原理
說說 Exchanger 原理
說說 CountDownLatch 與 CyclicBarrier 區別
ThreadLocal 原理分析
講講線程池的實現原理
線程池的幾種方式
newCachedThreadPool / newFixedThreadPool / newScheduledThreadPool/ newSingleThreadExecutor
線程的生命週期
如何創建線程?如何保證線程安全?
如何實現一個線程安全的數據結構
如何避免死鎖
Volatile關鍵字的作用?
什麼是死鎖?如何避免
什麼是守護線程?有什麼用?
Java程序中啓動一個線程是用run()還是start()?
線程和進程的差別是什麼?
Java裏面的Threadlocal是怎樣實現的?
sleep和wait區別
notify和notifyAll區別
volatile關鍵字的作
ThreadLocal的作用與實現
兩個線程如何串行執行
線程池ThreadPoolExecutor的實現原理?
多線程如何在多個CPU上分佈?線程調度算法有哪些?.線程調度和進程調度的區別?
如何構建一個高併發的服務器。我提到可以用epoll以及多線程。面試官接着問爲什麼要用多線程,而不是單線程。
多線程和多進程的區別。
答線程是可執行代碼的可分派單元。這個名稱來源於“執行的線索”的概念。在基於線程的多任務的環境中,所有進程有至少一個線程,但是它們可以具有多個任務。這意味着單個程序可以併發執行兩個或者多個任務。多線程開銷較小。
簡單實現一個線程池?擴展:帶定時任務的線程池如何實現?
可以運行時kill掉一個線程嗎?
上下文切換是什麼含義
========================================================================
鎖機制
說說線程安全問題
volatile 實現原理
http://uule.iteye.com/blog/1521180
http://uule.iteye.com/admin/blogs/2419969
synchronize 實現原理
synchronized 與 lock 的區別
CAS 樂觀鎖
ABA 問題
樂觀鎖的業務場景及實現方式
分段鎖的機制
什麼是條件鎖、讀寫鎖、自旋鎖、可重入鎖?
synchronized鎖升級的過程,說了偏向鎖到輕量級鎖再到重量級鎖,然後問我它們分別是怎麼實現的,解決的是哪些問題,什麼時候會發生鎖升級。
========================================================================
框架使用
Spring
BeanFactory 和 ApplicationContext 有什麼區別
beanfactory和applicationcontext是什麼關係,使用有什麼區別。
Spring中BeanFactory和FactoryBean有什麼區別?
Spring的核心點及其實現方式;
你知道的spring組件有哪些?在你的工作中哪些地方用到了這些組件?爲什麼要用這個組件?需要注意哪些點?"針對具體的組件問具體的問題. 因爲你能說出來的組件纔是你確實用過的,既然是你用過的組件,那我問你在哪些地方用,你就必須知道,並且用這個組件需要注意的點你也應該知道.否則要麼就是你沒真正用過, 要麼就是你確實用了,但是你沒有真正理解這個組件,而只是會機械的用而已.
Bean:
Spring的bean的默認範圍
Spring中Bean的生命週期。
Spring中如何讓A和B兩個bean按順序加載,我說依賴關係,他問怎麼實現,然後說要用dependon註解,我說不了解
AOP+IOC:
Spring IOC 如何實現
說說 Spring AOP
Spring AOP 實現原理
動態代理(cglib 與 JDK)
Spring AOP解決了什麼問題?怎麼實現的?
Spring框架中IOC的原理是什麼?
spring的依賴注入有哪幾種方式
用Spring如何實現一個切面?
事務:
Spring 事務實現方式
Spring 事務底層原理
Spring事務的傳播屬性是怎麼回事?它會影響什麼?
Spring 如何實現數據庫事務?
mybatis如何實現批量提交?
springMVC:
Spring MVC 運行流程
Spring MVC 啓動流程
SpringMVC或Struts處理請求的流程。
如何自定義註解實現功能
Spring 的單例實現原理
Spring 框架中用到了哪些設計模式
Spring 其他產品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)
struts工作流程
描述一下Hibernate的三個狀態?
Hibernate的一級緩存與二級緩存
Hibernate對一二級緩存的使用,Lazy-Load的理解;
========================================================================
數據庫相關
MySQL InnoDB、Mysaim的特點?
http://uule.iteye.com/admin/blogs/2420424
樂觀鎖和悲觀鎖的區別?行鎖,表鎖;樂觀鎖,悲觀鎖
http://uule.iteye.com/admin/blogs/2420176
數據庫隔離級別是什麼?有什麼作用?數據庫事務的幾種粒度;
數據庫的隔離級別和解決的問題
數據庫默認隔離級別,一定會產生幻讀嗎,怎麼解決
http://uule.iteye.com/admin/blogs/1445678
主從複製:
MySQL主備同步的基本原理。
數據庫的主從複製
數據庫的備份和恢復怎麼實現的,主從複製怎麼做的,什麼時候會出現數據不一致,如何解決
MySQL集羣的主從複製怎麼做的,具體有哪些線程做哪些事情,使用了哪些日誌。
http://uule.iteye.com/admin/blogs/2429252
索引:
數據庫索引爲啥要用樹結構做存儲?
樹的查詢效率高,還可以做有序。
B+樹的實現細節是什麼?B-樹和B+樹有什麼區別?聯合索引在B+樹中如何存儲?
mysql存儲引擎中索引的實現機制;
mysql索引類型
數據庫索引的優缺點以及什麼時候數據庫索引失效
數據庫索引的實現、mysql索引是怎麼實現的、數據庫索引的原理(B+樹介紹、和B樹、R樹區別)
SQL什麼情況下不會使用索引(不包含,不等於,函數)
一般在什麼字段上建索引(過濾數據最多的字段)
B+索引實現
索引有B+索引和hash索引,各自的區別
B+索引數據結構,和B樹的區別
索引的分類(主鍵索引、唯一索引),最左前綴原則,哪些情況索引會失效
MySQL,B+索引實現,行鎖實現,SQL優化
聚集索引與非聚集索引的區別
倒排索引
MySQL 索引使用的注意事項
爲什麼要用 B-tree
紅黑樹比BST優點
MySQL爲什麼使用B+樹
多個索引會有多份數據嗎
MySQL使用的索引結構,查找效率
分庫分表:
說說分庫與分表設計
分庫與分錶帶來的分佈式困境與應對之策
mysql大表數據查詢,怎麼優化,分表,分庫?
優化:
如何優化數據庫性能(索引、分庫分表、批量操作、分頁算法、升級硬盤SSD、業務優化、主從部署)
數據庫的優化(從sql語句優化和索引兩個部分回答)
MySQL的sql優化了解麼,答瞭解索引優化。
他問我如何做一條sql的優化,說了慢日誌和explain。
使用explain優化sql和索引
說說 SQL 優化之道
MySQL查詢優化
MySQL慢查詢開啓,語句分析
注入:
如何防止 SQL注入?如何防止用戶刪除其他用戶的信息?表單提交可以跨域麼?自己寫的接口如何防止被其他人惡意調用?
SQL注入的原理,如何預防
如何解決高併發減庫存問題
說說反模式設計
數據庫連接池的原理
如何實現不同數據庫的數據查詢分頁
事務四大特性(ACID)
數據庫隔離級別,每個級別會引發什麼問題,mysql默認是哪個級別
MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景
有哪些鎖(樂觀鎖悲觀鎖),select時怎麼加排它鎖
關係型數據庫和非關係型數據庫區別
瞭解nosql
數據庫三範式,根據某個場景設計數據表(可以通過手繪ER圖)
三大範式
選擇合適的數據存儲方案
ObjectId 規則
聊聊 MongoDB 使用場景
聊聊 ElasticSearch 使用場景
數據庫樂觀鎖使用
MySQL極限
long_query怎麼解決
內連接、外連接、交叉連接、笛卡兒積等
MySQL的union all和union有什麼區別,我瞎掰了一下,應該不對。
MySQL有哪幾種join方式,底層原理是什麼,答不會,只知道表現形式。
limit 20000 加載很慢怎麼解決
http://uule.iteye.com/admin/blogs/2422189
select * from table t where size > 10 group by size order by size的sql語句執行順序?
如何從一張表中查出name字段不包含“XYZ”的所有行?
MySQL 遇到的死鎖問題
http://uule.iteye.com/admin/blogs/2422193
深入
MVCC機制
http://uule.iteye.com/admin/blogs/2428962
根據具體場景,說明版本控制機制
死鎖怎麼解決
varchar和char的使用場景。
http://uule.iteye.com/admin/blogs/2428963
mysql併發情況下怎麼解決(通過事務、隔離級別、鎖)
========================================================================
緩存使用
Redis 有哪些類型 內部結構
http://uule.iteye.com/admin/blogs/2420503
聊聊 Redis 使用場景
Redis 持久化機制
Redis 如何實現持久化
http://uule.iteye.com/admin/blogs/2144221
問我Redis怎麼做集羣,答了主從哨兵和cluster。
Redis使用哨兵部署會有什麼問題,我說需要擴容的話還是得集羣部署。
Redis,RDB和AOF,如何做高可用、集羣
Redis 集羣方案與實現
Redis 爲什麼是單線程的
redis主從複製,sentinel,集羣分片原理
緩存“二八定律”、什麼是“熱數據和冷數據”,複雜一點的會問到緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級等問題
緩存奔潰
緩存降級
使用緩存的合理性問題
Redis等緩存系統/中間件SQL/一致性Hash等
列舉一個常用的Redis客戶端的併發模型。
HBase如何實現模糊查詢?
列舉一個常用的消息中間件,如果消息要保序如何實現?
如何實現一個Hashtable?你的設計如何考慮Hash衝突?如何優化?
分佈式緩存,一致性hash
LRU算法,slab分配,如何減少內存碎片
如何解決緩存單機熱點問題
什麼是布隆過濾器,其實現原理是? False positive指的是?
memcache與redis的區別
zookeeper有什麼功能,選舉算法如何進行
map/reduce過程,如何用map/reduce實現兩個數據源的聯合統計
redis的配置文件(AOF&&Snapshot&&主從複製)
redis隊列應用場景
redis和Memcached(支持數據持久化)
分佈式使用場景(儲存session等)
發佈/訂閱使用場景
========================================================================
分佈式
談談業務 中使用分佈式的場景
session 分佈式處理
http://uule.iteye.com/admin/blogs/2236466
分佈式鎖的場景
分佈是鎖的實現方案
http://uule.iteye.com/admin/blogs/2420444
分佈式事務
選擇合適的分佈式主鍵方案
http://uule.iteye.com/admin/blogs/2420466
集羣與負載均衡的算法與實現
說說分庫與分表設計
分庫與分錶帶來的分佈式困境與應對之策
CAP定理說一下,爲什麼三者只能選二,爲什麼分區容忍性必須保證。
工作中CAP的A和P是怎麼選擇的,我說選P吧,他的意思是選A。
平時瞭解哪些技術是犧牲了一致性來保證可用性的,我說消息隊列,他問我MySQL是不是,我說MySQL主從複製應該是。
分佈式系統瞭解麼,說一下Hadoop瞭解啥。。
MapReduce的combiner幹啥的,我說是合併結果的,問我啥時候會用到,答不知道。
Hadoop分發任務時,有個job失敗了,hadoop會怎麼處理
應對高併發的解決辦法(分佈式)
分佈式緩存的一致性,服務器如何擴容(哈希環)
========================================================================
設計模式與重構
你能舉例幾個常見的設計模式
MVVM,MVC,MVT
你在設計一個工廠的包的時候會遵循哪些原則?
你能列舉一個使用了Visitor/Decorator模式的開源項目/庫嗎?
你在編碼時最常用的設計模式有哪些?在什麼場景下用?
如何實現一個單例?
代理模式(動態代理)
單例模式(懶漢模式,惡漢模式,併發初始化如何解決,volatile與lock的使用)
MVC MVP MVVM; 常見的設計模式;寫出觀察者模式的代碼
JDK源碼裏面都有些什麼讓你印象深刻的設計模式使用
========================================================================
Linux使用與問題分析排查
使用兩種命令創建一個文件?
硬鏈接和軟鏈接的區別?
Linux常用命令有哪些?
在LINUX裏,如何查看一個監聽端口爲8060的進程?
怎麼看一個Java線程的資源耗用?
Load過高的可能性有哪些?
/etc/hosts文件什麼做用?
如何快速的將一個文本中所有“abc”替換爲“xyz”?
如何在log文件中搜索找出error的日誌?
發現磁盤空間不夠,如何快速找出佔用空間最大的文件?
Java服務端問題排查(OOM,CPU高,Load高,類衝突)
Java常用問題排查工具及用法(top, iostat, vmstat, sar, tcpdump, jvisualvm, jmap, jconsole)
Thread dump文件如何分析(Runnable,鎖,代碼棧,操作系統線程ID關聯)
如何查看Java應用的線程信息?
硬鏈接和軟連接區別
kill用法,某個進程殺不掉的原因(進入內核態,忽略kill信號)
linux用過的命令
系統管理命令(如查看內存使用、網絡情況)
管道的使用 |
grep的使用,一定要掌握,每次都會問在文件中查找
shell腳本
find命令
awk使用
========================================================================
消息隊列
消息隊列的使用場 景
消息的重發補償解決思路
消息的冪等性解決思路
消息的堆積解決思路
自己如何實現消息隊列
如何保證消息的有序性
消息隊列具體怎麼實現,請求太多怎麼辦。後者我回答了個負載均衡,這個回答其實沒有抓到面試官的點,不過面試官就順着這個問題問了負載均衡的實現,請求怎麼調度,有無狀態問題。到最後面試官簡單總結了一下,負載均衡的調度的話可以通過將數據存儲抽象實現無狀態。
面試官還對之前問的消息隊列請求過多的問題總結了一下,說是通過在請求中記錄超時時間戳。另外,前邊的syn防禦也是通過縮短半鏈接的超時來解決。感覺面試官給的這些答案都非常的偏實際工程應用。
========================================================================
網絡協議和網絡編程
TCP建立連接的過程。
TCP斷開連接的過程。
tcp的三次鏈接,順着三次連接又問到了syn攻擊,以及防禦方法
TCP三次握手、四次揮手(這個問題真的要回答吐了,不過真的是面試官最喜歡問的,建議每天手擼一遍,而且不只是每次請求的過程,各種FIN_WAIT、TIME_WAIT狀態也要掌握)。
http://uule.iteye.com/admin/blogs/2213562
TCP協議怎麼保證可靠傳輸?原理TCP和UDP的區別數組和鏈...
什麼是TCP 粘包/拆包
TCP粘包/拆包的解決辦法
http://uule.iteye.com/admin/blogs/2429206
TCP如何保證數據的可靠傳輸的(這個問題可以引申出很多子問題,擁塞控制慢開始、擁塞避免、快重傳、滑動窗口協議、停止等待協議、超時重傳機制,最好都能掌握)
tcp協議(建連過程,慢啓動,滑動窗口,七層模型)
TCP的滑動窗口協議有什麼用?講講原理。
TCP time_wait狀態系列問題? 窗口滑動機制。
http://uule.iteye.com/admin/blogs/2429131
HTTP協議;HTTP1.0與2.0的區別;HTTP報文結構
http://uule.iteye.com/admin/blogs/2428978
NIO的好處,Netty線程模型,什麼是零拷貝
http://uule.iteye.com/admin/blogs/2429099
http和https區別,https在請求時額外的過程,https是如何保證數據安全的
http://uule.iteye.com/admin/blogs/2427494
TCP報頭格式、UDP報頭格式
TCP/UDP區別(不僅是宏觀上的,最好能根據各自的機制講解清楚)
http://uule.iteye.com/admin/blogs/2114323
HTTP協議都有哪些內容?程序如何parse的?
HTTP協議(一些報頭字段的作用,如cace-control、keep-alive)
http協議(報文結構,斷點續傳,多線程下載,什麼是長連接)
http://uule.iteye.com/admin/blogs/2429222
Socket交互的基本流程?
http://uule.iteye.com/admin/blogs/2429228
NIO是什麼?適用於何種場景?
NIO模型,select/epoll的區別,多路複用的原理
瀏覽器發生302跳轉背後的邏輯?
HTTP協議的交互流程。SSL的交互流程?
Rest和Http什麼關係? 大家都說Rest很輕量,你對Rest風格如何理解?
HTTP協議都有哪些方法?
交換機和路由器的區別?
webservice協議(wsdl/soap格式,與rest協議的區別)
HTTP狀態碼(最好結合使用場景,比如在緩存命中時使用哪個)
OSI協議、TCP/IP協議以及每層對應的協議。
SESSION機制、cookie機制
打開網頁到頁面顯示之間的過程(涵蓋了各個方面,DNS解析過程,Nginx請求轉發、連接建立和保持過程、瀏覽器內容渲染過程,考慮的越詳細越好)。
IP地址子網劃分
POST和GET區別
DNS解析過程
地址解析協議ARP
========================================================================
操作系統
內存的頁面置換算法
進程調度算法
進程間通信方式
進程線程區別
進程之間的通信
父子進程、孤兒進程
fork進程時的操作,
========================================================================
Netty
爲什麼選擇 Netty
說說業務中,Netty 的使用場景
原生的 NIO 在 JDK 1.7 版本存在 epoll bug
Netty 線程模型
說說 Netty 的零拷貝
Netty 內部執行流程
Netty 重連實現