阿里飛豬Java后臺-電話面(40min)已涼
自我介紹
本碩就讀院校,參加過的競賽、項目
C語言和Java語言的核心區(qū)別,有什么特點(diǎn)?
C面向過程,Java面向?qū)ο?/span>
C需要自己管理內(nèi)存,Java自動實現(xiàn)(挖了個坑)
C不能跨平臺,Java可以跨平臺
Java資源(內(nèi)存)管理是怎么管理的?
Java的內(nèi)存管理就是對象的分配和釋放問題。(兩部分)
分配 :內(nèi)存的分配是由程序完成的,程序員需要通過關(guān)鍵字new 為每個對象申請內(nèi)存空間 (基本類型除外),所有的對象都在堆 (Heap)中分配空間。
釋放 :對象的釋放是由垃圾回收機(jī)制決定和執(zhí)行的,這樣做確實簡化了程序員的工作。但同時,它也加重了JVM的工作。因為,GC為了能夠正確釋放對象,GC必須監(jiān)控每一個對象的運(yùn)行狀態(tài),包括對象的申請、引用、被引用、賦值等,GC都需要進(jìn)行監(jiān)控。
Java跨平臺的核心是什么?
Java虛擬機(jī)
數(shù)據(jù)結(jié)構(gòu)中的常見排序算法
冒泡、快排、直接插入排序、歸并排序、堆排序、選擇排序(時間復(fù)雜度、穩(wěn)定性)
假如機(jī)器內(nèi)存500M,比較大的文件超過500M,文件中放的整數(shù),對整數(shù)找出N個最小的,怎么做?
將文件分割,用歸并排序
用堆排序,大頂堆和小頂堆,能找到前N個
追問:內(nèi)存有限的話怎么辦?(沒答上來...)
Java里的接口和抽象類的區(qū)別?
抽象類中可以有抽象方法,也可以有非抽象方法共存
接口,jdk1.8之前只能有抽象方法,jdk1.8之后可以存在一個默認(rèn)default方法
抽象類只能單繼承,接口可以實現(xiàn)多個父接口
抽象類可以存在普通成員變量,接口只能存在static final的變量,必須初始化
final關(guān)鍵字定義一個變量或?qū)ο?,不可變是什么不可變?/span>
問懵了,沒答上,答了個地址不可變
C中有指針,指向地址,java定義對象的這個存儲結(jié)構(gòu)是不是這樣?
補(bǔ)充
Java內(nèi)存劃分為5個部分:
1、棧:存的都是方法中的局部變量,方法的運(yùn)行一定要在棧當(dāng)中。
局部變量:方法的參數(shù),或者是方法內(nèi)部的變量
作用域:一旦超出作用域,立刻從棧內(nèi)存消失
2、堆:凡是new出來的東西,都在堆中
堆內(nèi)存里面的東西都有一個地址值:16進(jìn)制
3、方法區(qū):存儲.class相關(guān)信息,包含方法的信息
4、本地方法棧:與操作系統(tǒng)相關(guān)
5、寄存器:與CPU相關(guān)
答了JVM中的方法區(qū)、堆、棧
Java中的集合,哪些線程安全,哪些不安全?
說了Map、Collection(List、Set)
HashMap、Hashtable、HashSet等
HashMap不安全、Hashtable安全、ConcurrentHashMap安全、ArrayList不安全、Vector安全(棄用)
線程安全是底層什么在起作用?
回答了加鎖可以實現(xiàn),在就沒問了
回答了同步
追問:同步是指用鎖還是別的什么?
HashMap和ConcurrentHashMap底層有哪些不一樣的?
HashMap:數(shù)組+鏈表(jdk1.7)+紅黑樹(jdk1.8)
ConcurrentHashMap:Segement+HashEntry(jdk1.7),數(shù)組+鏈表+紅黑樹(jdk1.8)
想追問紅黑樹、B+、B、平衡二叉樹之類的
抽了,說了個沒有太深入了解,以為會問一些東西,結(jié)果直接過了
Java多線程里創(chuàng)建線程池,提供哪些接口?
補(bǔ)充
說了個ThreadPoolExecutor........
newCachedThreadPool 創(chuàng)建一個可緩存的線程池,如果線程池長度超過處理需求,可靈活回收空閑線程,若無可回收,則新建線程
newFixedThreadPool 創(chuàng)建一個定長線程池,可控制線程最大并發(fā)數(shù),超出的線程會在隊列中等待
newScheduledThreadPool 創(chuàng)建一個定長線程池,支持定時及周期性任務(wù)執(zhí)行
newSingleThreadExecutor 創(chuàng)建一個單線程化的線程池,它只會唯一的工作線程來執(zhí)行任務(wù),保證所有任務(wù)按照指定順序(FIFO,LIFO,優(yōu)先級)執(zhí)行
使用線程池的時候,最關(guān)心的是什么,線程池會導(dǎo)致內(nèi)存溢出,怎么防止?
........
答:排隊策略,超過限制,被拒絕。
設(shè)置核心參數(shù),設(shè)置線程數(shù)
代碼上做清除(答了些啥...)
創(chuàng)建一個無限隊列,會出現(xiàn)內(nèi)存溢出么,怎么解決?
最大線程數(shù)100,在重復(fù)的加入任務(wù),造成阻塞,一直加會導(dǎo)致內(nèi)存溢出么,有什么方法防止一直加?
超過線程池大小直接屏蔽么?
項目問題,哪個項目遇到技術(shù)挑戰(zhàn)的,怎么解決的?
最后嘮了15多分鐘
獲取往期更多最新面試題資料,直接轉(zhuǎn)發(fā)一下這篇文章+關(guān)注公眾號【Java爛豬皮】關(guān)注后回復(fù)【666】即可獲取哦~

騰訊、阿里、滴滴后臺面試題匯總總結(jié) — (含答案)
面試:史上最全多線程面試題 !
最新阿里內(nèi)推Java后端面試題
JVM難學(xué)?那是因為你沒認(rèn)真看完這篇文章

關(guān)注作者微信公眾號 —《JAVA爛豬皮》
了解更多java后端架構(gòu)知識以及最新面試寶典


看完本文記得給作者點(diǎn)贊+在看哦~~~大家的支持,是作者源源不斷出文的動力
