java面試筆記 持續(xù)更新

記錄一下最近面試遇到的問題稠通,持續(xù)更新ing

電話面試:
1 nio不是很熟

http://ifeve.com/java-nio-all/

2 kafka中間件的好處有什么? -> 可靠性 -> 它是如何保障它的可靠性

http://www.importnew.com/24973.html

3 redis集群用過嘛

4 hello world 做了什么?

編譯,即把我們寫好的java文件啊鸭,通過javac命令編譯成字節(jié)碼纲酗,也就是我們常說的.class文件窝趣。

運行,則是把編譯聲稱的.class文件交給Java虛擬機(JVM)執(zhí)行推正。

5 常用gc算法 ->

1)引用計數(shù)法 -> 存在循環(huán)引用的缺陷 -> 針對其缺陷 -> 根搜索算法、

2)標記清除算法 -> 效率低 空間碎片 -> 復制算法 -> 較多的復制效率很低 -> 標記整理算法

3)分代回收法 這種算法并沒有什么新的思路宝惰,只是根據(jù)對象的存活周期的不同植榕,將內(nèi)存劃分為幾塊。一般是把java堆分成新生代和老年代尼夺,這樣就可以根絕各個年代的特點采取最適當?shù)氖占惴ㄗ鸩小T谛律校看卫厥諘r都發(fā)現(xiàn)大批對象的死去淤堵,只有少量存活寝衫,那就選用復制算法,只需要付出少量存活對象的復制成本就可以完成收集拐邪。而老年代中因為對象存活率高慰毅,沒有額外空間對它進行分配擔保,就必須使用”標記-清理”或者“標記-整理”算法來進行回收扎阶。

6 一個請求中間都做了什么
7 SpringBoot用了哪些設計模式 xml和注解的bean統(tǒng)一管理是什么設計模式
8 你平時都用了哪些設計模式汹胃,為什么要用它
9 10億個數(shù)據(jù)的業(yè)務要如何處理
10 mysql的版本是什么?
11 常用的數(shù)據(jù)結構是什么东臀?-> ArrayList HashMap

-> hashMap底層是什么统台?

-> 數(shù)組鏈表紅黑樹

-> 為什么要用紅黑樹

-> 性能好相對于鏈表每個節(jié)點減少一半的可能
12 常用的orm模型框架是什么 -> mybatis -> 原理?
13 你平時用過哪些異步框架啡邑?
14 內(nèi)存溢出如何排查?
15 一個發(fā)生概率為1%的問題要如何調(diào)查井赌?
16 你平時如何做性能優(yōu)化的谤逼?
17 平時遇到過慢sql嘛? 如何優(yōu)化的仇穗?
18 用jdk幾流部? -> 8 -> 有哪些新特性?
19 redis為什么比數(shù)據(jù)庫快纹坐?
20 redis如何持久化枝冀?
21 一個增強for循環(huán)運行期間刪掉一個元素會怎樣?
22 threadLocal

當使用ThreadLocal維護變量時,ThreadLocal為每個使用該變量的線程提供獨立的變量副本,每個線程都可以獨立地改變自己的副本,而不會影響其它線程所對應的副本,是線程隔離的耘子。線程隔離的秘密在于ThreadLocalMap類(ThreadLocal的靜態(tài)內(nèi)部類)

線程局部變量是局限于線程內(nèi)部的變量果漾,屬于線程自身所有,不在多個線程間共享谷誓。Java 提供 ThreadLocal

類來支持線程局部變量绒障,是一種實現(xiàn)線程安全的方式。但是在管理環(huán)境下(如 web

服務器)使用線程局部變量的時候要特別小心捍歪,在這種情況下户辱,工作線程的生命周期比任何應用變量的生命周期都要長鸵钝。任何線程局部變量一旦在工作完成后沒有釋放,Java

應用就存在內(nèi)存泄露的風險庐镐。

ThreadLocal的方法:void set(T value)恩商、T get()以及T initialValue()。

ThreadLocal是如何為每個線程創(chuàng)建變量的副本的:

首先必逆,在每個線程Thread內(nèi)部有一個ThreadLocal.ThreadLocalMap類型的成員變量threadLocals怠堪,這個threadLocals就是用來存儲實際的變量副本的,鍵值為當前ThreadLocal變量末患,value為變量副本(即T類型的變量)研叫。初始時,在Thread里面璧针,threadLocals為空嚷炉,當通過ThreadLocal變量調(diào)用get()方法或者set()方法,就會對Thread類中的threadLocals進行初始化探橱,并且以當前ThreadLocal變量為鍵值申屹,以ThreadLocal要保存的副本變量為value,存到threadLocals隧膏。然后在當前線程里面哗讥,如果要使用副本變量,就可以通過get方法在threadLocals里面查找胞枕。

總結:

a杆煞、實際的通過ThreadLocal創(chuàng)建的副本是存儲在每個線程自己的threadLocals中的

b、為何threadLocals的類型ThreadLocalMap的鍵值為ThreadLocal對象腐泻,因為每個線程中可有多個threadLocal變量决乎,就像上面代碼中的longLocal和stringLocal;

c派桩、在進行get之前构诚,必須先set,否則會報空指針異常铆惑;如果想在get之前不需要調(diào)用set就能正常訪問的話范嘱,必須重寫initialValue()方法

23 線程池
24 給你四個線程 一個主線程 如果并行的處理任務
25 hashcode 方法 和 equals方法

26 問:對象的比較,怎么判斷兩個對象相等员魏?

答:equals方法

問:Integer里Integer a = new Integer(123), Integer b = 123, a==b?

答:不相等

問:Integer里Integer a = new Integer(123), Integer b = new Integer(123), a==b?

答:不相等

問:Integer里Integer a = new Integer(123), int b = 123, a==b?

答:相等

27 問:常用的List實現(xiàn)有哪些丑蛤?

答:ArrayList 和 LinkedList, CopyOnWriteArrayList

問:ArrayList 和 LinkedList的區(qū)別

答:ArrayList是array實現(xiàn)的,讀更快逆趋;LinkedList是鏈表實現(xiàn)的盏阶,寫更快

問:ArrayList怎么擴容的,擴容到多大闻书?

答:申請空間名斟,copy一份出去脑慧,1.5倍

問:ConcurrentHashMap原理

答:線程同步基于Segment加鎖,效率比對整個HashMap加鎖效率高

問:ConcurrentHashMap怎么實現(xiàn)線程安全

答:分段鎖

問:ConcurrentHashMap默認多少個分段鎖

答:2的n次方

問:與hashtable區(qū)別

答:HashTable用synchronized保證線程安全砰盐,競爭激烈情況下效率低下

問: ?ConcurrentHashMap是如何解決并發(fā)沖突的

答: 使用Segment在每個桶上加鎖

問:volatile的作用

答:可見性闷袒,防止CPU指令重排

問:原子類atomicinteger

答:cas

問:CAS原理

答:campare and swap 樂觀鎖

28 數(shù)據(jù)庫不同的存儲引擎?

https://www.cnblogs.com/shijiaqi1066/p/3857808.html

https://www.cnblogs.com/sunsky303/p/8274586.html

29 redis的數(shù)據(jù)結構 及存儲策略 -> String,Hash,Set,List,SortedSet,pub/sub,Transaction

->

30 設計一個線程池需要關心什么?

31 redis String是如何存儲的岩梳?如何擴容囊骤?

32 常見線程池

①newSingleThreadExecutor

單個線程的線程池,即線程池中每次只有一個線程工作冀值,單線程串行執(zhí)行任務

②newFixedThreadExecutor(n)

固定數(shù)量的線程池也物,沒提交一個任務就是一個線程,直到達到線程池的最大數(shù)量列疗,然后后面進入等待隊列直到前面的任務完成才繼續(xù)執(zhí)行

③newCacheThreadExecutor(推薦使用)

可緩存線程池滑蚯,當線程池大小超過了處理任務所需的線程,那么就會回收部分空閑(一般是60秒無執(zhí)行)的線程抵栈,當有任務來時告材,又智能的添加新線程來執(zhí)行。

④newScheduleThreadExecutor

大小無限制的線程池古劲,支持定時和周期性的執(zhí)行線程

33 你最得意的項目是什么斥赋?你在項目中擔當著什么樣的角色?

最得意的應該屬于繪制海報balabalabala ,現(xiàn)在在團隊應該屬于基層的中級開發(fā)人員

34 數(shù)據(jù)庫不同的存儲引擎

35 redis 支持的數(shù)據(jù)結構有哪些

redis 支持五種數(shù)據(jù)類型

string 字符串

hash 哈希

list 列表

set 集合

sorted set 有序集合

-> String是如何存儲的产艾?

https://www.cnblogs.com/idiotgroup/p/5450157.html

36 類加載的過程

類加載的過程主要分為三個部分:

加載

鏈接

初始化

而鏈接又可以細分為三個小部分:

驗證

準備

解析

https://blog.csdn.net/ln152315/article/details/79223441

37 數(shù)據(jù)庫事務隔離級別

https://blog.csdn.net/ln152315/article/details/79156655

38 線程池設計思路

https://www.cnblogs.com/chinaifae/p/10193774.html

代碼面試:

/** 評測題目 1

* 請用java實現(xiàn)以下shell腳本的功能

* cat /home/admin/logs/webx.log | grep "Login" | uniq -c | sort -nr | head -n 10

* 假設webx.log 內(nèi)容以下:

? ? ? Login2

? ? ? Login1

? ? ? Login1

? ? ? Login3

? ? ? uniq -c 的結果:

? ? ? 1 Login2

? ? ? 2 Login1

? ? ? 1 Login3

**/

import java.nio.charset.Charset;

import java.nio.file.Files;

import java.nio.file.Paths;

import java.util.Comparator;

import java.util.Optional;

import java.util.function.Function;

import java.util.stream.Collectors;

public class Demo {

? ? public static void main(String[] args) throws Exception {

? ? ? ? Optional.of("/home/admin/logs/webx.log")

? ? ? ? ? ? ? ? .map(Paths::get)

? ? ? ? ? ? ? ? .map(e -> {

? ? ? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? ? ? return Files.lines(e, Charset.defaultCharset())

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .filter(s -> s.contains("Login"))

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

? ? ? ? ? ? ? ? ? ? } catch (Exception err) {

? ? ? ? ? ? ? ? ? ? ? ? return null;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? })

? ? ? ? ? ? ? ? .ifPresent(map -> map.keySet()

? ? ? ? ? ? ? ? ? ? ? ? .parallelStream()

? ? ? ? ? ? ? ? ? ? ? ? .sorted(Comparator.comparing(map::get).reversed())

? ? ? ? ? ? ? ? ? ? ? ? .limit(10)

? ? ? ? ? ? ? ? ? ? ? ? .forEach(e -> System.out.println(map.get(e) + " " + e)));

? ? }

}

/**

* 問1 如果內(nèi)存不足怎么辦疤剑?問2 如何提升它的性能?

*/

參照:https://www.cnblogs.com/goody9807/p/6425399.html

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闷堡,一起剝皮案震驚了整個濱河市骚露,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缚窿,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焰扳,死亡現(xiàn)場離奇詭異倦零,居然都是意外死亡,警方通過查閱死者的電腦和手機吨悍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門扫茅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人育瓜,你說我怎么就攤上這事葫隙。” “怎么了躏仇?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵恋脚,是天一觀的道長腺办。 經(jīng)常有香客問我,道長糟描,這世上最難降的妖魔是什么怀喉? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮船响,結果婚禮上躬拢,老公的妹妹穿的比我還像新娘。我一直安慰自己见间,他們只是感情好聊闯,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著米诉,像睡著了一般菱蔬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荒辕,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天汗销,我揣著相機與錄音,去河邊找鬼抵窒。 笑死弛针,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的李皇。 我是一名探鬼主播削茁,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掉房!你這毒婦竟也來了茧跋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤卓囚,失蹤者是張志新(化名)和其女友劉穎瘾杭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哪亿,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡粥烁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝇棉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讨阻。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖篡殷,靈堂內(nèi)的尸體忽然破棺而出钝吮,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布奇瘦,位于F島的核電站棘催,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏链患。R本人自食惡果不足惜巧鸭,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麻捻。 院中可真熱鬧纲仍,春花似錦、人聲如沸贸毕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春迫皱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沸版。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兴蒸,地道東北人视粮。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像橙凳,于是被迫代替她去往敵國和親蕾殴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)http://www.reibang.com/p/5c90d4ae0d85 junit用法岛啸,before,be...
    huangxiongbiao閱讀 531評論 1 7
  • 本文是我自己在秋招復習時的讀書筆記钓觉,整理的知識點,也是為了防止忘記坚踩,尊重勞動成果荡灾,轉(zhuǎn)載注明出處哦!如果你也喜歡瞬铸,那...
    波波波先森閱讀 9,713評論 3 69
  • 使用[Redis有哪些好處卧晓? 速度快,因為數(shù)據(jù)存在內(nèi)存中赴捞,類似于HashMap,HashMap的優(yōu)勢就是查找和操作...
    待汝豪杰只是凡夫閱讀 279評論 0 2
  • 你是不是以為這篇就是空白呢郁稍? 不知不覺已經(jīng)到了第一百篇赦政,在錢核桃沒跟我說我缺了第一百篇時,我是完全不知道的』肿牛可能我...
    核桃板栗讀小學閱讀 347評論 0 1
  • 通過class文件對象桐愉,去使用該文件中的成員變量Field,構造方法Constructor掰派,成員方法Method从诲。...
    Acamy丶閱讀 408評論 0 2