1. 程式人生 > >4面經---java 內附 計算機基礎知識連結(知識點概括)

4面經---java 內附 計算機基礎知識連結(知識點概括)

1.應該從哪方面準備

就筆試而言,選擇題應該從資料結構,*作系統,基礎演算法,網路這四個方面準備。程式設計題應該側重動態規劃和回溯。

就面試而言,javaweb和Java原始碼、和jvm是基礎的,如果面試非阿里系的,準備這些足夠,但是要是面試阿里或者美團,就要學學中介軟體,中介軟體也要知道原理。

2.什麼時候準備最好

大三上準備最好,當然是先為春招做準備,個人感覺春招是最容易進大公司的,程式設計方面考核的不怎麼難,原理考察的多。這個時候應該紮實基礎,多看書,深入理解JVM一定要看會,多記筆記,個人覺得記筆記是一個好習慣,畢竟複習的時候就會速度的多。還有的話就是一本書看完了,我們可能很煩看第二遍,我們可以找一本相同知識點的書再看一遍做互補,畢竟每個作者對同一個 東西的理解不同。就拿jvm來說吧。我就看了深入理解jvm和jvm故障調優與實戰這兩本書(筆記在部落格中,有興趣的可以看看目錄=_=:

https://github.com/shiker1996/jvm-knowledge/blob/master/README.md),這兩本書都是講jvm的,但是對知識點的概括,還有實*等方面都不同。(下面的筆記都是看書的時候記的。)(下面的筆記都是看書的時候記的。)

個人感覺做什麼東西千萬不要學過就只是學過,還是要留點東西的,這樣以後好撿起來 。然後我春招其實投的少,大公司投了一兩個,小公司也只投了一兩個,其實應該多投幾個。。。希望以後的童鞋吸取我的經驗吧。既然說到這,我就把自己的春招經驗分享以下吧(懶得打字了,直接把當時的備忘錄給大家看一下吧)。

我的部落格也是之前的筆記整理,這個不僅給別人看,關鍵是自己複習方便,隨時都能看。

春招只是走一走流程,看一看自己缺什麼,還有那方面沒有複習到的。而且春招的面試給了我一個很強的預感:面試要是有三個問題答不上來基本涼涼(暴露了自己菜的本質+-+)。

3.備戰秋招

備戰秋招,很多人都會覺得時間不夠用了,其實這很正常,大部分時間都要刷題了==||,但是整理整理之前的筆記還是很快的呀。。。所以我就開始寫部落格整理自己之前的筆記(抱歉到現在都沒整完++)。。這個是很有用的。可以在寫的過程中知道自己哪方面還不足,查漏補缺。不會的我一般都會先看書,再參考他人的部落格,這個看網文的時候一定不要看完就完了,,要做好標籤。(下面是我的,順便舉個例子。。。)

4.筆試準備

選擇還是在牛客就好。我一般都是下面這幾個組一套,這樣更接近真題,然後千萬被刷幾道,這樣沒效果,最好一次來二三十道。集中一兩個小時來刷,效果會更好。

程式設計題的話有兩個網站不錯。一個是賽碼網,一個是leetcode,這個一個是自己寫輸入輸出,一個直接寫方法,兩者要結合起來刷,leetcode呢,就像我之前說的一樣,最好按題型來做,這樣容易培養自己的思路,不容易養成道道看答案的壞習慣。 程式設計題的話,作答也是要講究的,最好輸入輸出與程式處理分開這樣好糾錯,我的程式設計模板如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

while (sc.hasNext()) {

/**

* 輸入塊

*/

int n = sc.nextInt();

int a[] = new int[n];

for (int i = 0; i < a.length; i++) {

a[i] = sc.nextInt();

}

int b[] = new int[n];

for (int i = 0; i < b.length; i++) {

b[i] = sc.nextInt();

}

/**

* 方法處理與結果

*/

int res = different(a,b);

/**

* 輸出結果

*/

System.out.println(res);

}

sc.close();

}

/**

* 具體的處理方法

* @param a

* @param b

*[@return](/profile/547241) */

private static int different(int[] a, int[] b) {

// TODO Auto-generated method stub

return 0;

}

}

5.面試準備

很多人都說,啥時候了,還讓我看書,哪有時間看書,有那時間自行車都造出來啦!

好吧,其實不看書,多看看github上的開源專案也是好的,我在這裡提供一兩個吧:

這裡我在多說一點吧,java一般問基礎都會,要想讓自己脫穎而出,最好是rpc、註冊中心(選舉演算法)、訊息佇列(路由、推拉)等等都要了解,能說會編,這樣被問的時候才不容易涼。

一般面試的時候如果有手寫程式碼的情況大多是劍指offer上的題,所以一定要把牛客網上劍指offer的題刷懂,最好結合書中的思路來做,每道題的思路是什麼,每種思路的優劣大概要了解。

嗯,還有,常見的幾個面試問題,例如大檔案排序、秒殺系統、還有點選連結到顯示頁面的過程,都要去了解一下,回答的深度也反映了自己會的程度,比方說最後一個問題,能從網路層回答屬於基礎水平,能回答出請求到servlet的封裝就高了一層次,你要是給他打出來tomcat原理,那面試官會wa,這個人可以,你要是再給他把伺服器的虛擬ip到目標服務主機的對映說出來,那面試官能不要你嗎?我不信QAQ...所以多上網上看看這些問題別人怎麼答的,然後結合自己的只是總結以下,沒有能給我們一個適合自己的碗筷,還是要自己總結一下的。

其實這樣的專案有很多,大家要自己上網搜一搜,多關注幾個微信公眾號啥的,例如importNew、java程式設計、java3y(這位兄弟請給我打廣告費)。

上面兩個挑自己不會的看就行,抓重點,別的話應該就這些,其它秋招面經我就不說了,大概別人都重複多少遍了。。。就這樣。