公司內(nèi)部的面試鼠哥,把一些問題記錄下來驻售,雖然比較簡單露久,但是通過準備,面試的過程也算是一種成長欺栗。
問題1. 遞歸算法了解嗎毫痕?一般什么場景下使用征峦,寫一個階乘的算法
答案1. 我自己說的比較一般,大概意思就是遞歸是自己調(diào)用自己消请,一般用于推演數(shù)列栏笆,減小問題規(guī)模
階乘算法代碼如下:
public class Factorial {
public static void main(String[] args){
int n = 5;
System.out.println(factorial(5));
}
public static int factorial(int factor){
if (factor == 1){
return 1;
}
return factor * factorial(factor - 1);
}
}
拓展1. 問題很簡單,如果想深入了解可以參考這篇帖子臊泰,說的很詳盡蛉加,很細致
https://blog.csdn.net/justloveyou_/article/details/71787149
遞歸算法之斐波那契數(shù)列代碼如下:
public class Fribonacci {
public static void main(String[] args) {
for (int i = 1; i <= 30; i++){
System.out.print(fabonacci(i) + "\t");
}
System.out.println();
}
public static int fabonacci(int n){
if (n <= 2){
return 1;
} else{
return fabonacci(n-1) + fabonacci(n-2);
}
}
}
問題2:集合類框架了解嗎?其中HashMap查詢速度很快缸逃,你能說一下它的實現(xiàn)原理嗎针饥?
答案2:集合類框架主要是Collection,和Map兩個頂層接口需频,其中丁眼,List和Set接口繼承了Collection接口,他們都是單列值集合昭殉,Map是鍵值對雙列集合苞七。
主要說一下HashMap的實現(xiàn)原理,HashMap是散列值集合挪丢,通過數(shù)組+單向鏈表實現(xiàn)的蹂风,網(wǎng)上有很多類似的科普貼,下面粘一個過來吃靠,我覺得說的比較明白硫眨。
https://crossoverjie.top/2018/07/23/java-senior/ConcurrentHashMap/
HashMap的的存取過程貼個圖,有助于理解
問題3:NIO巢块, 異步礁阁, 多線程都了解哪些,給說一說
答案3:
問題4:異步除了使用mq族奢,java也支持姥闭,java用哪種實現(xiàn)的(JMS)
答案4:
問題5:jvm調(diào)優(yōu)過嗎?一些工具越走, 優(yōu)化的參數(shù)棚品,查看垃圾回收的參數(shù),查看應用內(nèi)cpu哪個線程占用過高的命令廊敌?這個沒答上來铜跑。說了jmap, jstack骡澈, jvisualvm, 又問有沒有調(diào)過jvm的參數(shù)锅纺,比例?我說沒調(diào)過肋殴,都是用的默認的8:1:1
答案5:
問題6:設計模式(橋接模式囤锉,建造者模式?策略模式坦弟?忘了)
答案6:沒答上來,說了知道的官地,單例酿傍,適配器,代理模式
問題7:代理模式是怎么實現(xiàn)的驱入,都包含哪些元素(答: 被代理對象或接口赤炒,代理類,調(diào)用者亏较,實現(xiàn)方式balabala)
答案7:
問題8:什么情況用代理模式可霎?可以在代理類修改原有的邏輯嗎?
答案8:
問題9:如何動態(tài)獲取類的方法宴杀,屬性?
答案9:反射
問題10:那通過反射可以改變類型嗎癣朗?
答案10:不可以,反射能改變屬性的值旺罢,但是應該不可以改變類型旷余,如果通過反射把private 改成public就破壞了類的封裝性,說的不太好扁达,反射的存在本來就破壞了封裝
問題11:為什么java不可以改變類型正卧,Python可以改變?
答案11:我說對Python不太熟跪解,但是java的反射是不可以的炉旷,因為它不是一種動態(tài)語言,Python是腳本語言叉讥,沒抓住考點= =b
問題12:項目中出現(xiàn)產(chǎn)品頻繁交底窘行,或者強壓業(yè)務提的不現(xiàn)實的需求,你如何處理這種情況图仓。
答案12:如果業(yè)務提出的需求不合理罐盔,那我會把不合理的地方以及帶來的風險跟產(chǎn)品說清楚,如果業(yè)務仍然堅持救崔,那我會盡最大努力去實現(xiàn)惶看,如果實現(xiàn)不了,超出了我技術能力范圍六孵,就需要跟領導匯報這種情況纬黎,不能自己扛著
問題13:又問了一下有沒有想過使用最小的代價去實現(xiàn)需求
答案13:理想情況是需要根據(jù)某一項需求提出多種解決方案,通過經(jīng)驗劫窒,與人協(xié)商本今,選取最優(yōu)的解決方案,不能因循守舊的只埋頭干,要多動腦诈泼,可能現(xiàn)在還達不到,但是應該是以后工作的目標
問題14:現(xiàn)有一個大的系統(tǒng)煤禽,沒有前后端分離的單體應用铐达,要拆成微服務的,怎么設計檬果,從技術上描述一下你的思路
答案14: