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