2019校招Java 開發(fā)崗面試知識(shí)點(diǎn)解析(附最新筆面試題)

前言
6月馬上要到了,很多互聯(lián)網(wǎng)企業(yè)都開始了校招。
互聯(lián)網(wǎng)校招時(shí)間早,崗位多,并且每家的筆面試都不同。一份合適的筆面試資料,絕對(duì)能提高你的校招通過率!
Java 一些知識(shí)點(diǎn)
1.Java 基礎(chǔ)知識(shí)點(diǎn)
2.Java 常見集合
3.高并發(fā)編程(JUC 包)
4.JVM 內(nèi)存管理
5.Java 8 知識(shí)點(diǎn)
6.網(wǎng)絡(luò)協(xié)議相關(guān)
7.數(shù)據(jù)庫(kù)相關(guān)
8.MVC 框架相關(guān)
9.大數(shù)據(jù)相關(guān)
10.Linux 命令相關(guān)
面試,是大家從學(xué)校走向社會(huì)的第一步。
互聯(lián)網(wǎng)公司的校園招聘,從形式上說,面試一般分為 2-3 輪技術(shù)面試 +1 輪 HR 面試。
但是一些公司確實(shí)是沒有 HR 面試的,直接就是三輪技術(shù)面。
技術(shù)面試中,面試官一般會(huì)先就你所應(yīng)聘的崗位進(jìn)行相關(guān)知識(shí)的考察,也叫基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試。
只要你回答的不是特別差,面試官通常會(huì)說:“咱們寫個(gè)代碼吧”,這個(gè)時(shí)候就開始了算法面試。
也就是說,一輪技術(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ì)自己做過的項(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)該熟悉掌握。
比如說你在某公司實(shí)習(xí)過程中,就可以進(jìn)行總結(jié),而不必等到快離職的時(shí)候慌慌張張的去總結(jié)該項(xiàng)目。
Java 基礎(chǔ)知識(shí)
01. 面向?qū)ο蟮奶匦杂心男?/strong>
封裝、繼承和多態(tài)。
02. Java 中覆蓋和重載是什么意思?
覆蓋(Override)是指子類對(duì)父類方法的一種重寫,只能比父類拋出更少的異常,訪問權(quán)限不能比父類的小。
被覆蓋的方法不能是 private 的,否則只是在子類中重新定義了一個(gè)方法;重載(Overload)表示同一個(gè)類中可以有多個(gè)名稱相同的方法,但這些方法的參數(shù)列表各不相同。
那么構(gòu)成重載的條件有哪些?
參數(shù)類型不同、參數(shù)個(gè)數(shù)不同、參數(shù)順序不同。
函數(shù)的返回值不同可以構(gòu)成重載嗎?為什么?
不可以,因?yàn)?Java 中調(diào)用函數(shù)并不需要強(qiáng)制賦值。舉例如下:
如下兩個(gè)方法:
void f(){} int f(){ return 1;}
只要編譯器可以根據(jù)語(yǔ)境明確判斷出語(yǔ)義,比如在 int x = f();中,那么的確可以據(jù)此區(qū)分重載方法。
不過, 有時(shí)你并不關(guān)心方法的返回值,你想要的是方法調(diào)用的其他效果 (這常被稱為 “為了副作用而調(diào)用”),這時(shí)你可能會(huì)調(diào)用方法而忽略其返回值,所以如果像下面的調(diào)用:
fun();
此時(shí) Java 如何才能判斷調(diào)用的是哪一個(gè) f( ) 呢?別人如何理解這種代碼呢?所以,根據(jù)方法返回值來(lái)區(qū)分重載方法是行不通的。
03. 抽象類和接口的區(qū)別有哪些?
- 抽象類中可以沒有抽象方法;接口中的方法必須是抽象方法;
- 抽象類中可以有普通的成員變量;接口中的變量必須是 static final 類型的,必須被初始化 , 接口中只有常量,沒有變量。
- 抽象類只能單繼承,接口可以繼承多個(gè)父接口;
- Java8 中接口中會(huì)有 default 方法,即方法可以被實(shí)現(xiàn)。
04.Java 和 C++ 的區(qū)別:
解析:雖然我們不太懂 C++,但是就是會(huì)這么問,尤其是三面(總監(jiān)級(jí)別)面試中。
- 都是面向?qū)ο蟮恼Z(yǔ)言,都支持封裝、繼承和多態(tài);
- 指針:Java 不提供指針來(lái)直接訪問內(nèi)存,程序更加安全;
- 繼承: Java 的類是單繼承的,C++ 支持多重繼承; Java 通過一個(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ú)立性。
篇幅原因,需要詳細(xì)答案的可以加Java校招資料QQ群:967051845
Java 中常見集合
- 說說常見的集合有哪些吧?
- HashMap 和 Hashtable 的區(qū)別有哪些?(必問)
- HashMap 的底層實(shí)現(xiàn)你知道嗎?
- ConcurrentHashMap 和 Hashtable 的區(qū)別? (必問)
- HashMap 的長(zhǎng)度為什么是 2 的冪次方?
- List 和 Set 的區(qū)別是啥?
- List、Set 和 Map 的初始容量和加載因子
- Comparable 接口和 Comparator 接口有什么區(qū)別?
- Java 集合的快速失敗機(jī)制 “fail-fast”
高并發(fā)編程
在 Java 5.0 提供了 java.util.concurrent(簡(jiǎn)稱 JUC )包,在此包中增加了在并發(fā)編程中很常用的實(shí)用工具類,用于定義類似于線程的自定義子系統(tǒng),包括線程池、異步 IO 和輕量級(jí)任務(wù)框架。
- 多線程和單線程的區(qū)別和聯(lián)系:
- 如何指定多個(gè)線程的執(zhí)行順序?
- 線程和進(jìn)程的區(qū)別(必考)
- 多線程產(chǎn)生死鎖的 4 個(gè)必要條件?
- sleep( ) 和 wait( n)、wait( ) 的區(qū)別:
- synchronized 關(guān)鍵字:
- volatile 關(guān)鍵字
- ThreadLocal(線程局部變量)關(guān)鍵字:
- Atomic 關(guān)鍵字:
- 線程池有了解嗎?(必考)
JVM 內(nèi)存管理
既然是 Java 開發(fā)面試,那么對(duì) JVM 的考察當(dāng)然也是必須的,面試官一般會(huì)問你對(duì) JVM 有了解嗎?
我通常都會(huì)把我所了解的都說一遍,包括:JVM 內(nèi)存劃分、JVM 垃圾回收的含義,有哪些 GC 算法,年輕代和老年代各自的特點(diǎn)統(tǒng)統(tǒng)闡述一遍。
JVM 內(nèi)存劃分:
- 類似-Xms、-Xmn 這些參數(shù)的含義:
- 垃圾回收算法有哪些?
- root 搜索算法中,哪些可以作為 root?
- GC 什么時(shí)候開始?
- 內(nèi)存泄漏和內(nèi)存溢出
Java 8 相關(guān)知識(shí)
關(guān)于 Java8 中新知識(shí)點(diǎn),面試官會(huì)讓你說說 Java8 你了解多少,下邊主要闡述我所了解,并且在面試中回答的 Java8 新增知識(shí)點(diǎn)。
- HashMap 的底層實(shí)現(xiàn)有變化
- JVM 內(nèi)存管理方面,由元空間代替了永久代。
- Lambda 表達(dá)式
- 函數(shù)式接口
- 引入重復(fù)注解
- 接口中可以實(shí)現(xiàn)方法 default 方法。
- 注解的使用場(chǎng)景拓寬
- 新的包 java.time 包
網(wǎng)絡(luò)協(xié)議相關(guān)
網(wǎng)絡(luò)協(xié)議方面,考察最多的包括服務(wù)器和客戶端在三次握手、四次揮手過程中的狀態(tài)變化;還有網(wǎng)絡(luò)擁塞控制,及其解決辦法等。
- 三次握手、四次揮手示意圖:
- 滑動(dòng)窗口機(jī)制
- 擁塞避免機(jī)制
- 瀏覽器中輸入:“www .xxx .com” 之后都發(fā)生了什么?請(qǐng)?jiān)敿?xì)闡述。
- 常見 HTTP 狀態(tài)碼
- TCP 和 UDP 的區(qū)別
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了面試必備之Java 最常見 200+ 面試題全解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-05-13
2019年成功入職阿里:阿里的三套Java研發(fā)崗面試題總結(jié)
之前過了幾個(gè)簡(jiǎn)單的簡(jiǎn)歷面,所以總結(jié)了幾套面試的試題供大家分享。小編覺得挺不錯(cuò)的,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-04-25金九銀十,各大互聯(lián)網(wǎng)公司Java面試題合集
又到了面試求職高峰期,最近有很多網(wǎng)友都在求大廠面試題。這些題目是網(wǎng)友去百度、小米、樂視、美團(tuán)、58、獵豹、360、新浪、搜狐等一線互聯(lián)網(wǎng)公司面試被問到的題目,發(fā)上來(lái)2019-04-24- 面試一直是大家關(guān)注的問題,包括最近有很多人跟我講投了很多簡(jiǎn)歷出去,就像泥牛入海一樣了無(wú)音訊了,今天我就來(lái)分享一個(gè)Java程序員面試拼多多后端開發(fā)崗位的幾輪面試題。2019-04-24
精選11道Java技術(shù)面試題及對(duì)應(yīng)答案【包含部分阿里和華為的面試題】
這篇文章主要為大家介紹了11道Java技術(shù)面試題及對(duì)應(yīng)答案,其中包含部分阿里和華為的面試題,總結(jié)分析了java常見的技術(shù)難點(diǎn)與java常見面試題,需要的朋友可以參考下2019-04-11春招開掛!208個(gè)最常見 Java面試題全解析(面試必備)
最近正值春招, 本文就把收集平時(shí)遇到的 Java 技術(shù)問題或周圍朋友見過的面試題分享給大家,題庫(kù)中所有的問題請(qǐng)看下文,考驗(yàn)?zāi)闼降臅r(shí)候到了。感興趣的可以了解一下2019-04-11- JVM(Java 虛擬機(jī))算是面試必問的問題的了,而但凡問 JVM 一定會(huì)問的第一個(gè)問題就是:講一講 JVM 的組成?那本文就注重講一下 JVM 的組成,感興趣的可以了解一下2019-04-10