更新時(shí)間:2019-08-16 14:57:16 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2450次
互聯(lián)網(wǎng)校招時(shí)間早,崗位多,并且每家的筆面試都不同。一份合適的筆面試資料,絕對(duì)能提高你的校招通過(guò)率!
Java一些知識(shí)點(diǎn)
面試,是大家從學(xué)校走向社會(huì)的第一步。
互聯(lián)網(wǎng)公司的校園招聘,從形式上說(shuō),面試一般分為2-3輪技術(shù)面試+1輪HR面試。
但是一些公司確實(shí)是沒(méi)有HR面試的,直接就是三輪技術(shù)面。
技術(shù)面試中,面試官一般會(huì)先就你所應(yīng)聘的崗位進(jìn)行相關(guān)知識(shí)的考察,也叫基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試。
只要你回答的不是特別差,面試官通常會(huì)說(shuō):“咱們寫個(gè)代碼吧”,這個(gè)時(shí)候就開始了算法面試。
也就是說(shuō),一輪技術(shù)面試=基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。
本文我們主要從技術(shù)面試聊起。技術(shù)面試包括:業(yè)務(wù)邏輯和基礎(chǔ)知識(shí)面試。
首先是業(yè)務(wù)邏輯面試,也就是講項(xiàng)目。
面試官會(huì)對(duì)你簡(jiǎn)歷上寫的若干個(gè)項(xiàng)目其中之一拿出來(lái)和你聊聊。在期間,會(huì)針對(duì)你所做的東西進(jìn)行深度挖掘。
包括:為什么要這么做??jī)?yōu)缺點(diǎn)分析,假如重新讓你做一次,你打算怎么做?等等。這個(gè)環(huán)節(jié)主要考察我們對(duì)自己做過(guò)的項(xiàng)目(實(shí)習(xí)項(xiàng)目或者校內(nèi)項(xiàng)目)是否有一個(gè)清晰的認(rèn)識(shí)。
關(guān)于業(yè)務(wù)邏輯面試的準(zhǔn)備,建議在平時(shí)多多思考總結(jié),對(duì)項(xiàng)目的數(shù)據(jù)來(lái)源、整體運(yùn)行框架都應(yīng)該熟悉掌握。
比如說(shuō)你在某公司實(shí)習(xí)過(guò)程中,就可以進(jìn)行總結(jié),而不必等到快離職的時(shí)候慌慌張張的去總結(jié)該項(xiàng)目。
Java基礎(chǔ)知識(shí)
01.面向?qū)ο?/span>的特性有哪些?
封裝、繼承和多態(tài)。
02.Java中覆蓋和重載是什么意思?
覆蓋(Override)是指子類對(duì)父類方法的一種重寫,只能比父類拋出更少的異常,訪問(wèn)權(quán)限不能比父類的小。
被覆蓋的方法不能是private的,否則只是在子類中重新定義了一個(gè)方法;重載(Overload)表示同一個(gè)類中可以有多個(gè)名稱相同的方法,但這些方法的參數(shù)列表各不相同。
那么構(gòu)成重載的條件有哪些?
參數(shù)類型不同、參數(shù)個(gè)數(shù)不同、參數(shù)順序不同。
函數(shù)的返回值不同可以構(gòu)成重載嗎?為什么?
不可以,因?yàn)镴ava中調(diào)用函數(shù)并不需要強(qiáng)制賦值。舉例如下:
如下兩個(gè)方法:
只要編譯器可以根據(jù)語(yǔ)境明確判斷出語(yǔ)義,比如在intx=f();中,那么的確可以據(jù)此區(qū)分重載方法。
不過(guò),有時(shí)你并不關(guān)心方法的返回值,你想要的是方法調(diào)用的其他效果(這常被稱為“為了副作用而調(diào)用”),這時(shí)你可能會(huì)調(diào)用方法而忽略其返回值,所以如果像下面的調(diào)用:
此時(shí)Java如何才能判斷調(diào)用的是哪一個(gè)f()呢?別人如何理解這種代碼呢?所以,根據(jù)方法返回值來(lái)區(qū)分重載方法是行不通的。
03.抽象類和接口的區(qū)別有哪些?
?抽象類中可以沒(méi)有抽象方法;接口中的方法必須是抽象方法;
?抽象類中可以有普通的成員變量;接口中的變量必須是staticfinal類型的,必須被初始化,接口中只有常量,沒(méi)有變量。
?抽象類只能單繼承,接口可以繼承多個(gè)父接口;
?Java8中接口中會(huì)有default方法,即方法可以被實(shí)現(xiàn)。
04.Java和C++的區(qū)別:
解析:雖然我們不太懂C++,但是就是會(huì)這么問(wèn),尤其是三面(總監(jiān)級(jí)別)面試中。
?都是面向?qū)ο蟮恼Z(yǔ)言,都支持封裝、繼承和多態(tài);
?指針:Java不提供指針來(lái)直接訪問(wèn)內(nèi)存,程序更加安全;
?繼承:Java的類是單繼承的,C++支持多重繼承;Java通過(guò)一個(gè)類實(shí)現(xiàn)多個(gè)接口來(lái)實(shí)現(xiàn)C++中的多重繼承;Java中類不可以多繼承,但是?。。〗涌诳梢远嗬^承;
?內(nèi)存:Java有自動(dòng)內(nèi)存管理機(jī)制,不需要程序員手動(dòng)釋放無(wú)用內(nèi)存。
05.JDK中常用的包有哪些?
java.lang、java.util、java.io、java.net、java.sql。
07.JDK,JRE和JVM的聯(lián)系和區(qū)別:
?JDK是java開發(fā)工具包,是java開發(fā)環(huán)境的核心組件,并提供編譯、調(diào)試和運(yùn)行一個(gè)java程序所需要的所有工具,可執(zhí)行文件和二進(jìn)制文件,是一個(gè)平臺(tái)特定的軟件。
?JRE是java運(yùn)行時(shí)環(huán)境,是JVM的實(shí)施實(shí)現(xiàn),提供了運(yùn)行java程序的平臺(tái)。JRE包含了JVM,但是不包含java編譯器/調(diào)試器之類的開發(fā)工具。
?JVM是java虛擬機(jī),當(dāng)我們運(yùn)行一個(gè)程序時(shí),JVM負(fù)責(zé)將字節(jié)碼轉(zhuǎn)換為特定機(jī)器代碼,JVM提供了內(nèi)存管理/垃圾回收和安全機(jī)制等。
這種獨(dú)立于硬件和操作系統(tǒng),正是java程序可以一次編寫多處執(zhí)行的原因。
區(qū)別:
?JDK用于開發(fā),JRE用于運(yùn)行java程序;
?JDK和JRE中都包含JVM;
?JVM是java編程語(yǔ)言的核心并且具有平臺(tái)獨(dú)立性。
Java中常見集合
1.說(shuō)說(shuō)常見的集合有哪些吧?
2.HashMap和Hashtable的區(qū)別有哪些?(必問(wèn))
3.HashMap的底層實(shí)現(xiàn)你知道嗎?
4.ConcurrentHashMap和Hashtable的區(qū)別?(必問(wèn))
5.HashMap的長(zhǎng)度為什么是2的冪次方?
6.List和Set的區(qū)別是啥?
7.List、Set和Map的初始容量和加載因子
8.Comparable接口和Comparator接口有什么區(qū)別?
9.Java集合的快速失敗機(jī)制“fail-fast”
高并發(fā)編程
在Java5.0提供了java.util.concurrent(簡(jiǎn)稱JUC)包,在此包中增加了在并發(fā)編程中很常用的實(shí)用工具類,用于定義類似于線程的自定義子系統(tǒng),包括線程池、異步IO和輕量級(jí)任務(wù)框架。
1.多線程和單線程的區(qū)別和聯(lián)系:
2.如何指定多個(gè)線程的執(zhí)行順序?
3.線程和進(jìn)程的區(qū)別(必考)
4.多線程產(chǎn)生死鎖的4個(gè)必要條件?
5.sleep()和wait(n)、wait()的區(qū)別:
6.synchronized關(guān)鍵字:
7.volatile關(guān)鍵字
8.ThreadLocal(線程局部變量)關(guān)鍵字:
9.Atomic關(guān)鍵字:
10.線程池有了解嗎?(必考)
JVM內(nèi)存管理
既然是Java開發(fā)面試,那么對(duì)JVM的考察當(dāng)然也是必須的,面試官一般會(huì)問(wèn)你對(duì)JVM有了解嗎?
我通常都會(huì)把我所了解的都說(shuō)一遍,包括:JVM內(nèi)存劃分、JVM垃圾回收的含義,有哪些GC算法,年輕代和老年代各自的特點(diǎn)統(tǒng)統(tǒng)闡述一遍。
1.JVM內(nèi)存劃分:
2.類似-Xms、-Xmn這些參數(shù)的含義:
3.垃圾回收算法有哪些?
4.root搜索算法中,哪些可以作為root?
5.GC什么時(shí)候開始?
6.內(nèi)存泄漏和內(nèi)存溢出
Java8相關(guān)知識(shí)
關(guān)于Java8中新知識(shí)點(diǎn),面試官會(huì)讓你說(shuō)說(shuō)Java8你了解多少,下邊主要闡述我所了解,并且在面試中回答的Java8新增知識(shí)點(diǎn)。
0.1HashMap的底層實(shí)現(xiàn)有變化
2.JVM內(nèi)存管理方面,由元空間代替了永久代。
3.Lambda表達(dá)式
4.函數(shù)式接口
5.引入重復(fù)注解
6.接口中可以實(shí)現(xiàn)方法default方法。
7.注解的使用場(chǎng)景拓寬
8.新的包java.time包
網(wǎng)絡(luò)協(xié)議相關(guān)
網(wǎng)絡(luò)協(xié)議方面,考察最多的包括服務(wù)器和客戶端在三次握手、四次揮手過(guò)程中的狀態(tài)變化;還有網(wǎng)絡(luò)擁塞控制,及其解決辦法等。
1.三次握手、四次揮手示意圖:
2.滑動(dòng)窗口機(jī)制
3.擁塞避免機(jī)制
4.瀏覽器中輸入:“www.xxx.com”之后都發(fā)生了什么?請(qǐng)?jiān)敿?xì)闡述。
5.常見HTTP狀態(tài)碼
6.TCP和UDP的區(qū)別
更多Java相關(guān)面試題,登錄動(dòng)力節(jié)點(diǎn)IT培訓(xùn)官網(wǎng)咨詢?cè)诰€客服老師,回復(fù)“Java面試題”
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743