Java面試題---基礎(chǔ)題目

Java線程的狀態(tài):

  • New 剛被new出來,沒有調(diào)用start方法
  • Runnable 調(diào)用了start方法舶治,可以運(yùn)行的狀態(tài)
  • Blocked 線程嘗試獲取的鎖被其他對(duì)象持有
  • Waiting 當(dāng)調(diào)用Thread.join和Object.wait方法時(shí)
  • Timed_waitiong
  • Terminated
  • 阻塞的解決方法:1.重新啟動(dòng);2.撤銷進(jìn)程
  • 長(zhǎng)期阻塞是死鎖

進(jìn)程與線程的區(qū)別钢属,進(jìn)程和線程如何通訊徘熔?

  • 進(jìn)程是CPU所能處理的單個(gè)任務(wù),任意時(shí)刻淆党,一個(gè)cpu只能運(yùn)行一個(gè)進(jìn)程酷师。一個(gè)進(jìn)程的多個(gè)線程可以共享進(jìn)程的空間讶凉。

  • 進(jìn)程間通訊依靠IPC資源,例如管道(pipes)窒升,套接字(sockets)缀遍;線程間通訊依靠JVM提供的API慕匠,例如wait()/notify()/norifyAll().

HashTable和ConcurrentHashMap的區(qū)別饱须。

  • HashTable每次操作都會(huì)鎖住整個(gè)表結(jié)構(gòu)---導(dǎo)致一次只能有一個(gè)線程訪問HashTable對(duì)象。
  • 后者只會(huì)鎖住一個(gè)節(jié)點(diǎn)台谊,只有size會(huì)鎖住整個(gè)表結(jié)構(gòu)

Cookie和Session的區(qū)別

  • HTTP是無狀態(tài)協(xié)議蓉媳,跟蹤客戶端狀態(tài)。
  • 客戶端锅铅;服務(wù)端
  • 后者安全
  • Session存放重要信息
  • Session依賴Cookie傳遞SID的值酪呻,被禁止采用URL重寫技術(shù)

索引有什么用?如何建索引盐须?

  • 索引用于加快mysql獲取數(shù)據(jù)的速度玩荠。提供了一種有序,而在有序的條件下進(jìn)行檢索贼邓,二分法效率最高阶冈。
  • 設(shè)計(jì)成B+樹,兼顧查詢與更新塑径。InnoDB默認(rèn)使用B-樹女坑。
  • 外鍵默認(rèn)索引
  • 一條sql使用一個(gè)索引,一個(gè)索引可以使用多個(gè)字段统舀,為復(fù)合索引匆骗。相當(dāng)于電話薄和姓名之間的關(guān)系。電話薄先根據(jù)姓排序誉简,再根據(jù)名排序碉就。給姓建索引挺好,姓和名索引更好闷串,光給名建索引沒用瓮钥。select * from user where area='$area' order by create_time desc limit 30;

ArrayList是如何實(shí)現(xiàn)的,ArrayList和LinkedList的區(qū)別窿克?ArrayList如何實(shí)現(xiàn)擴(kuò)容骏庸?

  • 可變數(shù)組實(shí)現(xiàn)了List接口
  • 區(qū)別:LinkedList實(shí)現(xiàn)了List和Deque(雙向隊(duì)列),LinkedList在插入和刪除效率高年叮,因?yàn)椴挥靡苿?dòng)其他數(shù)據(jù)具被。ArrayList查找某個(gè)index的效率高,因?yàn)橛兴饕凰稹inkedList需要的內(nèi)存比ArrayList大
  • jdk1.8中擴(kuò)容1.5倍一姿。如果newCapacity比minCapacity小,將minCapacity賦給newCapacity七咧。如果比MAX_ARRAY_SIZE,則根據(jù)minCapacity的值定奪叮叹。
  • 如果預(yù)先知道要存放大量值艾栋,可以自行調(diào)用ensureCapacity,避免多次遞增的重新分配

equals、hashcode等Object類中一些方法的討論蛉顽?

  • 覆蓋equals方法時(shí)蝗砾,必須重新hashcode方法
  • 重寫equals方法時(shí),要滿足對(duì)稱性携冤,傳遞性悼粮,一致性、自反性曾棕、和非空性
  • equals不同時(shí)扣猫,hashCode可能相同

面向?qū)ο?/h2>
  • 三大特性
    • 封裝
    • 繼承
    • 多態(tài)

JVM如何加載字節(jié)碼文件?

  • Classloader 裝載
  • 文件驗(yàn)證器 驗(yàn)證
  • 被加載到方法區(qū)中一個(gè)格子間
  • 在CPU車間的線程每次運(yùn)行Java虛擬機(jī)棧最上面的工作臺(tái)(棧幀)翘地,里面有柜子(局部變量區(qū))申尤,桶(操作數(shù)棧)
  • 操作柜子的抽屜中的數(shù),入桶衙耕,出桶昧穿,替換
    • 虛擬機(jī)的所有指令都是對(duì)棧進(jìn)行操作

GC算法

  • 常見回收算法
    • 標(biāo)記-清除:產(chǎn)生碎片
    • 復(fù)制
    • 標(biāo)記-整理
    • 分代收集算法

什么情況下回出現(xiàn)Full GC,什么情況下會(huì)出現(xiàn)Young GC

  • 對(duì)象新建在新生代的Eden區(qū)臭杰,當(dāng)Eden區(qū)沒有足夠內(nèi)存時(shí)粤咪,觸發(fā)Young GC
  • 在Young GC前,進(jìn)行空間分配擔(dān)保---如果老年代連續(xù)空間小于新生代對(duì)象的總大锌矢恕(或歷屆晉升的平均大辛戎Α)觸發(fā)一次Full GC。
  • 顯示調(diào)用System.gc()
  • 大對(duì)象從新生代晉升到老年代時(shí)磁奖,分配內(nèi)存不夠

JVM內(nèi)存模型

  • 定義:嘗試屏蔽掉各種硬件和操作系統(tǒng)的訪問差異
  • 目標(biāo):定義變量的訪問規(guī)則囊拜,即虛擬機(jī)將變量存儲(chǔ)到內(nèi)存,和從內(nèi)存取出的細(xì)節(jié)
  • volatile變量:
    • 可見性比搭,不具備原子性:當(dāng)被valatile修飾的變量的值被修改后冠跷,會(huì)被立即刷新到主內(nèi)存中,對(duì)其他線程可見身诺;當(dāng)線程讀取變量時(shí)蜜托,也會(huì)從主內(nèi)存中刷一份到工作內(nèi)存中,但是霉赡,如果多線程操作變量的運(yùn)算橄务,并且后一個(gè)值依賴前一個(gè)值,就還是會(huì)有并發(fā)問題穴亏,說明volatitle不具備原子性蜂挪。
    • 禁止指令重排序優(yōu)化:在單例模式雙重檢驗(yàn)鎖版本中重挑,語句instance = new Singleton()做了三件事:1.給引用instance分配內(nèi)存;2.調(diào)用Singleton構(gòu)造函數(shù)初始化成員變量棠涮;3.將引用instance指向堆中對(duì)象谬哀。將instance聲明成volatile后就能將避免。給賦值操作后加一個(gè)內(nèi)存屏障严肪,讀操作不會(huì)重排序到內(nèi)存屏障之前史煎。
  • synchronized關(guān)鍵字:當(dāng)一個(gè)線程對(duì)變量進(jìn)行加鎖,清空變量在工作內(nèi)存的值诬垂。滿足可見性和原子性劲室。

Java運(yùn)行時(shí)數(shù)據(jù)區(qū)

  • 程序計(jì)數(shù)器:用于指定當(dāng)前線程字節(jié)碼的執(zhí)行順序
  • 堆:
    • 新生代:Eden區(qū)間;From Survivor1结窘,F(xiàn)rom Survior2:用于存放Young GC幸存的對(duì)象
    • 老年代
  • 方法區(qū):存儲(chǔ)虛擬機(jī)加載的類信息、常量充蓝、靜態(tài)變量
    • 運(yùn)行時(shí)常量池:
      • 存放字面量(文本字符串隧枫、final常量)

      • 符號(hào)引用:

        • 全限定名:org.apache.commons.lang3.StringUtils;
        • 字段和方法名稱;描述符:private谓苟、static
      • 有字符串常量池官脓。

事務(wù)的實(shí)現(xiàn)原理

  • 事務(wù)的特性:ACID--原子性(atomicity)、一致性(Consistency)涝焙、隔離性(Isolation)卑笨、持久性(durability)
  • Spring事務(wù):聲明式事務(wù)---常用注解方式;編程式事務(wù)
  • 數(shù)據(jù)庫事務(wù):MySQL/InnoDB四種隔離級(jí)別RU仑撞、RC赤兴、RR、Serializable隧哮⊥傲迹快照讀,不加鎖沮翔;當(dāng)前讀陨帆,加鎖。

參考網(wǎng)址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末采蚀,一起剝皮案震驚了整個(gè)濱河市疲牵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榆鼠,老刑警劉巖纲爸,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異璧眠,居然都是意外死亡缩焦,警方通過查閱死者的電腦和手機(jī)读虏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袁滥,“玉大人盖桥,你說我怎么就攤上這事√夥” “怎么了揩徊?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)嵌赠。 經(jīng)常有香客問我塑荒,道長(zhǎng),這世上最難降的妖魔是什么姜挺? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任齿税,我火速辦了婚禮,結(jié)果婚禮上炊豪,老公的妹妹穿的比我還像新娘凌箕。我一直安慰自己,他們只是感情好词渤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布牵舱。 她就那樣靜靜地躺著,像睡著了一般缺虐。 火紅的嫁衣襯著肌膚如雪芜壁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天高氮,我揣著相機(jī)與錄音慧妄,去河邊找鬼。 笑死纫溃,一個(gè)胖子當(dāng)著我的面吹牛腰涧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播紊浩,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼窖铡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了坊谁?” 一聲冷哼從身側(cè)響起费彼,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎口芍,沒想到半個(gè)月后箍铲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鬓椭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年颠猴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了关划。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翘瓮,死狀恐怖贮折,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情资盅,我是刑警寧澤调榄,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站呵扛,受9級(jí)特大地震影響每庆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜今穿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一缤灵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荣赶,春花似錦凤价、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽富蓄。三九已至剩燥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間立倍,已是汗流浹背灭红。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留口注,地道東北人变擒。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像寝志,于是被迫代替她去往敵國(guó)和親娇斑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • 本文來源于并發(fā)編程網(wǎng)清英的一篇文章:你應(yīng)該知道的JAVA面試題材部,最近自己也在面試一些候選人毫缆,發(fā)現(xiàn)這篇文章中的有些點(diǎn)...
    程序熊大閱讀 10,286評(píng)論 7 126
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法乐导,內(nèi)部類的語法苦丁,繼承相關(guān)的語法,異常的語法物臂,線程的語...
    子非魚_t_閱讀 31,581評(píng)論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在旺拉,面了一些公司产上,掛了不少,但最終還是拿到小米蛾狗、百度晋涣、阿里、京東淘太、新浪姻僧、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,184評(píng)論 11 349
  • (一)Java部分 1蒲牧、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,071評(píng)論 0 62
  • 吳蕙蘭閱讀 157評(píng)論 0 0