廣州三本找Java實習經歷

Java3y發表於2018-06-21

前言

只有光頭才能變強

這陣子跑去面試Java實習生啦~~~我來簡單介紹一下背景吧。

廣州三本大三在讀,在廣州找實習。大學開始接觸程式設計,一個非常平庸的人。

在學習程式設計時,跟我類似的人應該會有一個疑問:究竟學到什麼程度才能找到一份實習/工作呢

  • 針對的是中小公司..

我是在6月1號開始投的簡歷找Java實習:

實習憎投了17份:

廣州三本找Java實習經歷

在前程無憂投了69份(沒有算今天剛投的):

廣州三本找Java實習經歷

在boss直聘溝通51個,可以傳送8份簡歷出去:

廣州三本找Java實習經歷

下面是我的簡歷(我不會寫簡歷,需要修改的地方還請大家不吝在評論區留言)

廣州三本找Java實習經歷

可能投遞的公司是有重複的,可能我投遞的意向更多偏向於離家裡比較近的,並不是全部投應屆/實習(其中1-3年的也投了)。

  • 就上面所投和簡歷的情況,我拿到了5份面試機會。

這篇文章其實主要是記錄一下自己的面試經歷,希望大家看完之後能有所瞭解:進入中小公司究竟需要什麼水平

  • 看面試題實際面試時被問到的感覺是完完全全不一樣的(可能會沒聽明白麵試官所想問的,也很有可能大腦就短路啦,就忘記啦)

一、公司A

1.1面試

  1. 簡單介紹一下你的專案,說一下專案有什麼模組
  2. 剛才我進去註冊了一下你寫的網站,發現註冊失敗了。你的網站是做了郵箱校驗嗎?ps:後來查了一下,是我的郵箱驗證碼失效了,在後臺丟擲異常,所以註冊失敗了
  3. 專案中的線上聊天功能是怎麼實現的?有沒有去測試瀏覽器的相容性問題?
  4. 我看你有用過ssm/Springboot,你的專案部署在哪裡?ssm的專案打的什麼包?springBoot打的什麼包(指的是jar和war)
  5. Java集合簡單說一下,HashMap是怎麼實現key是唯一的
  6. 簡單說說nio是什麼,是哪個版本開始有的?
  7. aio是什麼?瞭解過嗎?是哪個版本開始有的?與nio的區別知道嗎?
  8. 有了解過netty嗎?
  9. 我看你用過RESTful,你能簡單說說RESTful有什麼特點嗎?使用RESTful的好處是什麼?RESTful有什麼缺點嗎?
  10. 電子移動商城和納稅服務系統是你做的嗎?
  11. 簡單說一下你是怎麼理解AOP,方法攔截和AOP有什麼區別?xxxx功能是否能用AOP實現

1.2公司A總結

公司A是我第一家面試的,面了20多分鐘就完事了...沒有hr,自我介紹都沒說就直接開始了。當然了,面試官還是很nice的。

  • 面試官都是針對簡歷寫的東西來提問,問的東西並沒有超出簡歷的範圍

經過這家面試,我知道我自己得多引導引導面試官。因為面試的時間太短了,基本都是一問一答,應該主動說出一些自己知道的東西,答得太少了

最後拿到了offer

二、公司B

2.1筆試單選題

關注Java3y公眾號的概率是5%,收藏Java3y的文章概率是20%,收藏Java3y的文章後會關注Java3y的公眾號的概率是20%,已知某開發者看到Java3y公眾號之後關注了。那麼該開發者收藏過Java3y的文章概率是多少?

通俗解析:

  • 1、關注概率=5%。
  • 2、關注有兩種情況,收藏關注,不收藏關注 。
  • 3、收藏關注概率=0.2*0.2=0.04,那麼不收藏關注的概論是0.01
  • 4、在已知使用者購買的情況下:收藏的概率是0.04/(0.01+0.04)=80%

公式解析:

  • 設A為關注,B為收藏。 已知P(A)=5%, P(B)=20%, P(A|B) = 20%。,所以P(B|A)=P(AB)/P(A) = P(A|B)P(B)/P(A) = 80%.

假設基準值為陣列首元素的快速排序,要使得陣列滿足非降序排列,下列資料分佈導致快排演算法效率最低的是____。

  • 2-6-3-7-5-1-4
  • 6-2-3-5-4-1-7
  • 7-5-3-2-4-1-6
  • 1-5-7-2-4-6-3
  • 1-2-3-4-5-6-7
  • 4-1-3-7-5-6-2

**解析:**基本有序的情況下:快排最慢。所以選擇的是1-2-3-4-5-6-7

下列程式執行結果:

廣州三本找Java實習經歷

  • false
  • true
  • 0
  • 1

解析:false,因為==預設比較的是地址,引用a和引用b所引用的地址是不一樣的。

  • String a = "hello";在常量池中建立了物件
  • String b = "he" + new String("llo");在常量池中建立了he,在堆中建立了llo"

關注執行緒和進行,描述正確的是(多選):

  • A:同一個程式的執行緒之間共享記憶體,包括堆和棧
  • B:執行緒在資源消耗上通常要比程式輕量
  • C:程式的隔離性要好於執行緒
  • D:程式間有途徑共享大量記憶體中的資料

解析:選擇BCD

  • A選項:棧資料是執行緒自有的
  • B選項:引出執行緒就是因為(管理/切換/建立/銷燬程式)程式消耗資源太多了
  • C選項:程式之間的資源是獨立的,子程式使用copy_on_write技術複製父程式的資源;而同一個程式中的執行緒共享資源,每個執行緒擁有自己的棧和相應的暫存器;
  • D選項:用於程式間通訊(IPC)的四種不同技術:
    • 一、 訊息傳遞(管道,FIFO,posix和system v訊息佇列)
    • 二、 同步(互斥鎖,條件變數,讀寫鎖,檔案和記錄鎖,Posix和System V訊號燈)
    • 三、共享記憶體區(匿名共享記憶體區,有名Posix共享記憶體區,有名System V共享記憶體區)
    • 四、 過程呼叫(Solaris門,Sun RPC)

在一個的程式中有A,B,C三個執行緒同時對一個檔案進行讀寫操作,其中的A,B是寫程式只負責往裡面寫資料,C是讀執行緒,同時把讀取的資料從檔案中刪除,A執行緒單獨寫滿檔案需要10小時,B執行緒單獨寫程式需要6小時,C執行緒需要15小時才能讀取完整個檔案,不考慮三個執行緒之間的相互影響的情況下,現在_____小時才能寫滿檔案。

  • A. 5
  • B. 6
  • C. 5.5
  • D. 4.5
  • E. 4.8
  • F. 5.3

解析:選擇A

  • 不考慮三個執行緒之間的相互影響,突然回到了小學數學題:“兩個水龍頭注水,一個放水,問何時注滿水池”的感覺。這樣問題就簡單了:
    • 總任務是單位1,A的寫工作效率是1/10,B的寫工作效率是1/6,C的讀工作效率是1/15,那麼總工作效率是1/10 + 1/6 - 1/15 結果是1/5。於是,寫滿的總時間是:用單位1除以總工作效率五分之一,就是5小時。

mysql 資料庫有選課表 learn(student_id int,course_id int),欄位分別表示學號和課程編號, 現在想獲取每個學生所選課程的個數資訊,請問如下的 sql 語句正確的是:

  • select student_id,sum(course_id)from learn
  • select student_id,count(course_id)from learn group by student_id
  • select student_id,count(course_id)from learn
  • select student_id,sum(course_id)from learn group by student_id

解析:選擇B

  • 獲取每個學生所選課程就按照學生分組,統計個數就用count

下列結果正確的是:



class Person {

    String name = "do1";

    public Person(String name) {
        this.name = name;
    }
}

class Employee extends Person {

    String empId = "0001";
    public Employee(String name) {
            empId = id;
    }
}

class Test{

    public static void main(String[] args) {

        Employee e = new Employee("test");
        System.out.println(e.empId);
        
    }
}

複製程式碼
  • A. 輸出do1
  • B. 編譯出錯
  • C. 輸出test
  • D. 輸出0001

解析:選擇B

  • 這題主要考察物件建立的過程。如果子類的建構函式中沒有顯式呼叫父類的構造器,那麼預設會呼叫父類無參的建構函式。但是程式碼中沒有給出父類的無參建構函式,所以編譯時不通過的。

IDEA的提示也很準確:

廣州三本找Java實習經歷

如下javascript程式碼y最終輸出的結果是:


var x= 1;
var y = 0;
function add(n){
	n = n+1;
}

y = add(x);

複製程式碼
  • A. 1
  • B. 2
  • C. 3
  • D. undefined

**解析:**選擇D

  • 沒有明確的return,返回的是undefined

廣州三本找Java實習經歷

下列哪些是JSON格式結構(多選)

  • A. {id:'1',name:'do1'}
  • B. ['java','javascript']
  • C. {'java','javascript'}
  • D. [id:'1',name:'do1']

**解析:**選擇AB

  • JSON建構於兩種結構:
    • “名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為物件(object),紀錄(record),結構(struct),字典(dictionary),雜湊表(hash table),有鍵列表(keyed list),或者關聯陣列 (associative array)。
    • 值的有序列表(An ordered list of values)。在大部分語言中,它被理解為陣列(array)。
    • 參考資料:www.json.org/json-zh.htm…

廣州三本找Java實習經歷

話說{'java','javascript'}這個在JavaScript算什麼?會的麻煩在評論區告訴我一下哈~~

對類成員訪問許可權的控制,是通過設定成員的訪問控制屬性實現的,下列屬於訪問控制屬性的是:

  • A. public
  • B. private
  • C. protected
  • D. volatile

**解析:**選擇ABC

  • 這題Java基礎題,就很簡單了。volatile是一種輕量級的同步機制。

以下集合物件不是執行緒安全的:

  • A. ArrayList
  • B. Vector
  • C. Hashtable
  • D. Stack

**解析:**選擇A

下面描述正確的是(多選):

  • A. session是代表與用於某個web應用程式相關的物件和屬性
  • B. request代表與Web客戶機發出的多個請求相關的物件和屬性
  • C. page代表與web客戶機的一次請求
  • D. application代表與整個Web應用程式相關的物件和屬性

**解析:**選擇AD

  • request代表與Web客戶機發出的一個請求相關的物件和屬性
  • page代表與一個頁面相關的物件和屬性

下列對正規表示式描述正確的是:

  • A. \D匹配一個數字字元
  • B. \s匹配任何不可見字元,包括空格,製表符,換頁符等等
  • C. \t匹配一個換頁符
  • D. \n匹配回車換行符

**解析:**選擇B

  • \D匹配一個非數字字元
  • \s匹配任何不可見字元,包括空格、製表符、換頁符等等
  • \t匹配一個製表符。
  • \n匹配一個換行符。
    • \r匹配一個回車符

Linux解壓的命令(多選)

  • A. tar zxvf filename.tar
  • B. gzip -d filename.gz
  • C. gzip filename
  • D. tar czxf filename.tar

**解析:**選擇AB

  • 考察Linux的解壓命令

2.2筆試簡答題

已知一個包含10個隨機數字的陣列,數字不重複,給定其中的兩個隨機數,獲取這兩個數在隨機陣列從小到大排序後在資料中的座標值。時間複雜度儘量低一些

使用快排的partition,將給出的隨機數做基準值返回的座標就是了。兩個隨機數就呼叫兩次快排的partition。


    // 支點左邊都比支點小,支點右邊都比支點大
    public int partition(Integer[] nums, int target) {

        int lt = -1;//[0,lt]<target
        int gt = nums.length;//[gt,nums.length-1]>target

        int i = 0;
        while (i < gt) {
            if (nums[i] == target)
                i++;
            else if (nums[i] < target) {
                lt++;
                swap(nums, i, lt);
                i++;
            } else {
                gt--;
                swap(nums, gt, i);
            }
        }

        // 返回支點的座標
        return gt - 1;
    }

    private void swap(Integer[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }


複製程式碼

上邊程式碼由HoldGone友情提供!

Error,Exception,RuntimeException區別

這部分的資料就很多了,我這裡就不詳細答了。參考一下吧:

有一億條記錄,每條記錄有id,ip,時間組成。設計一個系統能夠快速查詢以下內容:給定ip和時間段(精確到分鐘)統計ip的訪問次數,請寫出建立SQL的語句

答:首先,1000億條記錄全部放到記憶體肯定不夠,那就是分成小檔案了,然後整合; 公共的時間段,因為精確到分鐘,我們把這每一分鐘建成一個小檔案,每個小檔案肯定會有許多重複的ip,url; 現在統計每個小的檔案中url的訪問量和ip的訪問次數,方法就是建立索引; (建立索引的目的是為了減少查詢次數,但是隨著索引級數增多也會造成花更多的時間在建立索引上); 建立url的索引,假如是www.nowcoder.com/question,可以分別給www.nowcoder.com和question建立索引,那麼來了一條url,先看一級索引是不是匹配,匹配再看二級索引,相同的話就是我們要的url目標; ip的索引也是一樣,ip分成4段建立索引; 所以這裡影響效率的就是在索引建立這塊,索引建立好那就是查詢的事了的,就會變得非常快。 假定給定了某個時間段,找出url的訪問量,那麼先找到給定的時間段,對應著剛開始分割的小的檔案(每一個分鐘)中搜尋,通過索引找到相同的url之後,開始統計,直到搜尋完所有的給定時間段內的所有的小的檔案; 求ip的訪問次數也是一樣,按照給定的時間段,找到對應的小的檔案,通過索引找到相同的ip後統計,直到搜尋完了給定時間段內的所有的小的檔案。

連結:https://www.nowcoder.com/questionTerminal/5b47d462f04c4e43960fd9e52da93ab7?orderByHotValue=1&pos=4&tagId=0 來源:牛客網

2.3初面

  1. 簡單介紹一下你自己
  2. 物件導向有什麼特性?你如何理解物件導向的
  3. 物件導向與程式導向哪個更好寫?
  4. 談談AOP,AOP在實際專案/實際能做什麼?
  5. 如果讓你實現Spring的快取@Cacheable,你會怎麼實現?(面試官想問的是AOP,我把他帶到Map那邊了)後來才說到了AOP。
  6. 索引是怎麼提高查詢的效能的?具體來說說索引。
  7. 既然說String是不可變的,那麼String s = "aaa",為什麼同樣可以執行a = "bbb"
  8. String是怎麼做到不可變的?final修飾的類中的成員變數是否可變?確定嗎?String什麼時候被銷燬?
  9. 看你使用過Nginx,講講Nginx。正向代理與反向代理有什麼區別?
  10. 看你使用過RESTful,講講PUT/GET/POST/DELETE分別的含義,使用RESTful和非RESTful的URL有什麼區別?
  11. 看你用過Elasticsearch,你知道bool是什麼嗎?Elasticsearch能使用root使用者執行嗎(我回答的是可以)?為什麼?用root使用者執行和其他使用者執行有什麼區別?
  12. 你專案是部署到Linux的,你記得Linux修改許可權的命令是什麼嗎?讀寫執行分別代表的是什麼?777,每個7的代表什麼。
  13. 密碼是用md5加密的,那md5是可逆的嗎?那如果現在想實現一個功能:使用者想要找回自己的密碼(不是修改密碼,單純找回密碼),那現在md5是不可逆的,那你怎麼設計呢?
  14. 瞭解過多執行緒嗎?你知道執行緒池預設有哪幾種實現嗎?如果執行緒池滿了,那其餘的執行緒怎麼辦?工作佇列是怎麼實現的?工作佇列是先進先出的嗎?可以優先執行工作佇列的某執行緒嗎?
  15. 你用過Redis嗎?,後面又問了一些Redis安全性的東西。
  16. 你知道什麼是分散式和叢集嗎?
  17. 在叢集的環境下,Session一般怎麼解決?
  18. 在叢集中如果redis down掉了怎麼辦?第二臺redis又down掉了怎麼辦?

2.4複試

  1. 簡單介紹一下你自己
  2. 物件導向有什麼特性?你如何理解物件導向的
  3. 瞭解String常量池嗎?String s = "aaa";String b = "aaa";相比,它倆會相等嗎?
  4. 簡單介紹一下你寫過的專案。
  5. 我看你用到了Shiro,Shiro是什麼東西呢?簡單說說你在專案中是如何使用Shiro的
  6. Elasticsearch又是什麼東西呢?簡單說說你在專案中是如何使用Elasticsearch的
  7. 你一般用的資料庫是什麼?Mysql的索引瞭解過嗎?可以簡單說說嘛?
  8. Mysql有沒有比int型別還要小的整型型別?
  9. 來說說你專案還有什麼功能。(我談了個人備忘錄,使用了Quartz任務排程框架-->cron表示式-->發郵件提醒)
  10. 現在有這麼一個需求:一個使用者可以填寫多張調查問卷。調查問卷的資料是不確定的,可以是性別啊,工作年薪呀,等等等。現在你資料庫怎麼設計呢?

2.5公司B面試總結

經過上一家面試的總結,我帶了一個本子和筆去面試,面試官提問的時候我會在本子上寫寫,畫畫圖來告訴面試官表現我的思路。

公司B是我面的第二家公司:總的來說這次面試遇到了我一大堆不懂的東西,可以說被面試官虐了。面的題目都是相對開放的,問我某個功能如何設計、如何實現、是否可以使用某項技術實現這個功能。

對Redis/資料庫設計/資料庫SQL編寫/Elasticsearch知識點儲備還是不夠啊~~這些知識點得多加把勁了.

2018年6月21日12:52:05,今天早上拿到offer

三、公司C

3.1筆試選擇題

下列關於註釋語句的描述中,正確的一項是。

  • A.以/開始,/結束的是單行註釋語句
  • B.以//開始的是多行註釋語句
  • C.以/**開始,*/結束的是可以用於生成幫助文件的註釋語句
  • D.以/**開始,*/結束的是單行註釋語句

**解析:**選擇C

  • A是多行註釋
  • B的單行註釋
  • D是文件註釋

為了區分重栽多型中同名的不同方法,要求

  • A. 形式引數個數或者型別不同
  • B. 返回值型別不同
  • C. 呼叫時用類名或物件名做字首
  • D. 形式引數名稱不同

**解析:**選擇A

下列哪一個說法是正確的

  • A. Java程式經過編譯後會產生機器碼
  • B. Java程式經過編譯後會產生位元組碼
  • C. Java程式經過編譯後會產生DLL檔案
  • D. 以上都不正確

**解析:**選擇B

在Java中,下列運算子合法的是

  • A. &&
  • B. < >
  • C. if
  • D. :=

**解析:**選擇A

下面定義陣列的格式中不正確的是

  • A. int a[10]
  • B. int a = new int[10]
  • C. int a[]
  • D. int[] a = new int[]{10}

**解析:**選擇B

下列哪一個說法是正確的:

  • A. 例項方法可以直接呼叫超類的例項方法
  • B. 例項方法可以直接呼叫超類的類方法
  • C. 例項方法可以直接呼叫其他類的例項方法
  • D. 例項方法可以直接呼叫本類的類方法

**解析:**選擇A

廣州三本找Java實習經歷

可以用來修飾interface的是

  • A. private
  • B. public
  • C. static
  • D. protected

**解析:**選擇B

以下哪個表示式是不合法的。

  • A.String x="hello";int y=9;x+=y;
  • B.String x="hello";int y=9;if(x=y){}
  • C.String x="hello";int y=9;x=x+y;
  • D.String x=null;int y=(x!=null)&&(x.length()>0)?x.length():0;

**解析:**選擇B

廣州三本找Java實習經歷

線性表採用鏈式儲存時,其地址:

  • A.必須是連續的
  • B.部分地址必須是連續的
  • C.一定是不連續的
  • D.連續與否均可以

**解析:**選擇D

關聯式資料庫中的“關係”是指:

  • A.各條記錄彼此都有一定關係
  • B.各欄位資料被此都有-定關係
  • C.資料模型是一個滿足一定條件的二維表
  • D.表檔案之間存在一定關係

**解析:**選擇C

以下對抽象類的描述正確的是:

  • A.抽象類沒有構造方法
  • B.抽象類必須提供抽象方法
  • C.有抽象方法的類一定是抽象類
  • D.抽象類可以通過new關鍵字直接例項化

**解析:**選擇C

  • A:抽象類是有構造方法的
  • B:抽象類未必需要提供抽象方法
  • D:抽象類既然是抽象的,怎麼可以直接new例項化呢

以下對介面描述錯誤的有:

  • A.介面沒有提供構造方法
  • B.介面中的方法預設使用public、abstract修飾
  • C.介面中的屬性預設使用public、static、final修飾
  • D.介面不允許多繼承

**解析:**選擇D

以下對異常的描述不正確的有

  • A. 異常分為 Error 和 Exceptipn
  • B. Throwable是所有異常類的父類
  • C. Exception是所有異常類父類
  • D. Exception 包括 RuntimeException 和 RuntimeException 之外的異常

**解析:**選擇C

  • Throwable是所有異常類的父類

在try-catch-finally語句塊中,以下可以單獨與finally —起使用的是

  • A. catch
  • B. try
  • C. throws
  • D. throw

**解析:**選擇B

下列關於for迴圈和while迴圈的說法中哪個正確的?

  • A.while迴圈能實現的操作,for迴圈也都能實現
  • B.while迴圈判斷條件一般是程式結果,for迴圈判斷條件一般是非程式結采
  • C.兩種迴圈任何時候都可替換
  • D.兩種迴圈結構中都必須有迴圈體,迴圈體不能為空

**解析:**選擇A

  • B:判斷條件和結果無關係
  • C:for(init;test;;increment) ,while(test) 由此可見,當for語句的初始化及自增部分為空時才能替換
  • D:雖然空迴圈體沒意義,不過都是可用的.

下列關於構造方法的敘述中,錯誤的是:

  • A. Java語言規定構造方法名與類名必須相同
  • B. Java語言規定構造方法沒有返回值,但不用void宣告
  • C. Java語言規定構造方法不可以過載
  • D. Java語言規定構造方法只能通過new自動呼叫

**解析:**選擇C

  • 構造方法當然可以過載了

下列哪些語句關於Java記憶體回收的說明是正確的?

  • A、 程式設計師必須建立一個執行緒來釋放記憶體
  • B、 記憶體回收程式負責釋放無用記憶體
  • C、 記憶體回收程式允許程式設計師直接釋放記憶體
  • D、 記憶體回收程式可以在指定的時間釋放記憶體物件

**解析:**選擇B

結構化程式設計所規定的三種基本控制結構是

  • A. 輸入、處理、輸出
  • B. 樹形、網形、環形
  • C. 順序、選擇、迴圈
  • D. 主程式、子程式、函式

**解析:**選擇C

給出以下程式碼,請問該程式的執行結果是什麼?



class Example{

	public static void main (String args[]){

 		boolean b=true;

		System.out.println(b);
	}
}

複製程式碼
  • A.列印輸出true
  • B.列印輸出1。
  • C.編譯錯誤,因為sout的引數只能為整數 ..
  • D.編譯錯誤,如果把true改變為TRUE,則可使程式碼編譯通過。

**解析:**選擇A

廣州三本找Java實習經歷

3.2筆試題不定選

下列屬於關係型資料庫的是:

  • A. Oracle
  • B. MySqL
  • C. IMS
  • D. MongoDb

**解析:**選擇AB

  • C:是層次資料庫
  • D:是非關聯式資料庫

以下屬於物件導向的特徵的是()。

  • A.過載
  • B.重寫
  • C.封裝
  • D.繼承

**解析:**選擇CD

在使用super和this關鍵字時,以下描述正確的是:

  • A. 在子類構造方法中使用super ()顯示呼叫父類的過早方法,super ()必須寫在子類構造方法的第一行,否則編譯不通過
  • B. super ()和this ()不一定要放在構造方法內第—行
  • C. this ()和super()可以同時出現在—個建構函式中
  • D. this ()和super()可以在static環境中使用,包括static方法和static 語句塊

**解析:**選擇A

  • 1)呼叫super()必須寫在子類構造方法的第一行,否則編譯不通過。每個子類構造方法的第一條語句,都是隱含地呼叫super(),如果父類沒有這種形式的建構函式,那麼在編譯的時候就會報錯。
  • 2)super()和this()類似,區別是,super從子類中呼叫父類的構造方法,this()在同一類內呼叫其它方法。
  • 3)super()和this()均需放在構造方法內第一行。
  • 4)儘管可以用this呼叫一個構造器,但卻不能呼叫兩個。
  • 5)this和super不能同時出現在一個建構函式裡面,因為this必然會呼叫其它的建構函式,其它的建構函式必然也會有super語句的存在,所以在同一個建構函式裡面有相同的語句,就失去了語句的意義,編譯器也不會通過。
  • 6)this()和super()都指的是物件,所以,均不可以在static環境中使用。包括:static變數,static方法,static語句塊。
  • 7)從本質上講,this是一個指向本物件的指標, 然而super是一個Java關鍵字。

以下關於final關鍵字說法錯誤的是:

  • A. final是java中的修飾符,可以修飾類、介面、袖象類、方法和屬性
  • B. final修飾的類肯定不能被繼承
  • C. final修飾的方法不能被過載;
  • D. final修飾的變數不允許被再次賦值

**解析:**選擇AC

  • final修飾類、方法、屬性!不能修飾抽象類,因為抽象類一般都是需要被繼承的,final修飾後就不能繼承了。
  • final修飾的方法不能被重寫而不是過載!
  • final修飾屬性,此屬性就是一個常量,不能被再次賦值!

訪問修飾符作用範圍由大到小是:

  • A. private-default-protected-public
  • B. public-default-protected-private
  • C. private-protected-default-public
  • D. public-protected-default-private

**解析:**選擇D

根據下面的程式碼,String s = null;會丟擲 NullPointerException 異常的有:

  • A. if( (s!=null) & (s. length()>0))
  • B. if( (sl=null) && (s. length()>0))
  • C. if( (s==null) | (s. length()=0))
  • D. if( (s=null) || (s. length()==0))

**解析:**選擇AC

  • 出現異常主要是因為執行了s.length()這句話,所以A、B、C、D選項中只要沒有執行到這句話的都是不會報空指標異常的。然後考查的第二點是短路邏輯運算子和非短路邏輯運算子。&和|為非短路邏輯運算子,無論兩個語句為什麼,一定會執行完畢,所以A、C兩個是會報出異常的。

Java中,哪個介面以鍵值的方式儲存物件

  • A. Collection
  • B. Map
  • C. List
  • D. Set

**解析:**選擇B

Java介面的修飾符可以為:

  • A. private
  • B. protected
  • C. final
  • D. abstract

**解析:**選擇CD

  • 這裡的題目應該是Java介面可以出現的修飾符有哪些,所以我將C選上了。就看個人的理解吧~

以下哪些程式碼片斷正確:

  • A. private final int theNumber = 017;
  • B. public int theNumber = 017;
  • C. public int theNumber = (octal)17;
  • D. public int THE_NUMBER = 017;

**解析:**選擇ABD

廣州三本找Java實習經歷

以下哪些程式碼片斷正確:

  • A. public transient static final int_FRAMEX =850;
  • B. private transient static final int_FRAMEX2 =850;
  • C. boolean b = 0;
  • D. this("a","b");

**解析:**選擇D

  • AB都沒有給出型別是什麼
  • C明顯就是錯的

廣州三本找Java實習經歷

3.3筆試簡答題

JRE/JDK/JVM分別指什麼?他們的關係是怎麼樣的?

介面和抽象類的區別是什麼?

Java中有幾種方法可以實現一個執行緒?用什麼關鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用了?

簡述Java的介面和C++的虛類的相同和不同處

JSP和Servlet有哪些相同和不通點,他們之間的聯絡是什麼?

什麼是流,流經常按照哪幾種方式分類,每種方式又將流各分為哪幾類?他們之間的區別是什麼?

其實這些簡答題每個人寫出來可能都會不一樣,按自己的理解大膽寫就可以了

3.4面試

這次面試問的技術並不是很多,主要問的日常的東西~~~

  • Shiro你當時是用來幹嘛的?有建立使用者與角色/許可權的表來維護嗎?
  • 你會使用Linux嗎?能搭建環境嗎?
  • 簡單介紹一下你寫過的專案

3.5公司C總結

做的筆試題都是Java基礎,挺合我胃口的(hahaha)

  • 跟hr+技術聊
  • 再跟hr聊
  • 最後跟總經理聊

拿到了offer

四、公司D

4.1筆試題

在拿到試題的時候,前臺告訴我限時40分鐘做完,我以為就她說說。後來40分鐘過去了,我剩下一題選擇題還沒做出來,卷子就收走了。我憑記憶簡單說一下題型吧

選擇題:

  • 給出先序和中序的遍歷結果,問後序的遍歷結果是什麼
  • 連續幾道關於|,||,&,&&的選擇題,寫程式結果是什麼
  • 一道是outer,inner的多迴圈判斷,其中一個地方break掉outer迴圈,問其中的變數值等於多少
  • String s = "a1";String s2 = "a"+1,連續幾道類似的題目,問結果
  • 還有一些流程控制,問程式結果的題。
  • ...其他的忘了...

SQL題:

  • 根據名字模糊查詢,寫出sql
  • 多表查詢(這題現在想起來,我還忘記做了......)

程式題/簡答題:

  • 刪除某個檔案目錄下的所有檔案,包括目錄
  • 現在有一個執行緒A寫N個資料進佇列,有兩個執行緒往佇列取資料。
  • 類的載入過程
    • 類載入的過程包括了載入、驗證、準備、解析、初始化五個階段
  • 現在機子是2G記憶體,現在我有10G資料,現在我想對這些資料排序,如何設計呢?

4.2初面

  1. 簡單介紹一下你自己
  2. 你覺得你在學校學習比較好的課程是什麼?
  3. 你說你自學Java,你覺得自學和老師上課的方式這種有什麼區別?
  4. 你覺得哪些是你自學沒學到,在老師那裡學到的。還有就是哪些是你自學學到的,在老師那裡沒學到的。
  5. 你覺得你擅長什麼?可以簡單說說嘛?(我選了Java集合)
  6. 那你簡單說說ArrayList和LinkedList的東西吧(我就說我看過原始碼,以及說了底層的一些東西)
  7. 為什麼說ArrayList增刪慢呢?為什麼說LinkedList查詢慢呢?
  8. 你說你知道ArrayList在增刪改的時候用的arraycopy()方法,你知道它是怎麼實現的嗎?
  9. 看你用過Cookie,簡單說說Cookie是什麼吧,為什麼需要Cookie
  10. Cookie一定是服務端傳送過去的嗎?是怎麼傳送的?
  11. 使用的時候Cookie有什麼弊端(需要注意些什麼)?
  12. get和post有什麼區別?
  13. 使用post方式的時候,在url上可以拼接引數嗎?
  14. 來說說http的狀態碼有哪些
  15. 分別談談這些狀態碼都代表什麼意思
  16. 上面已經說了get和post了,那你還知道http有其他的原語嗎
  17. 來說說https吧,https是什麼東西
  18. 你知道https的工作流程嗎?
  19. SSL???忘記問什麼了,這個我不會。

4.3公司D總結

筆試題大多都是考Java基礎,也不算難。就是題量有點多,就給40分鐘可能有點緊。

總的來說初面考HTTP的知識比較多,這方面還得深入加強一下。

2018年6月21日12:52:25,今天早上收到郵件,一面不過。

五、公司E

5.1面試

這家也主要圍繞著簡歷來問:

  • 簡單介紹一下你自己
  • 你在學校時間有沒有做過什麼課程設計?簡單說說
  • 我看你做過商城專案,你當時是怎麼做的呢?
  • 你認為這個商城專案最難的地方是在哪?你實現了之後,能執行嗎?
  • 那個商城專案有多少人在使用呢?
  • 簡單講講Hibernate和Mybatis的區別
  • 你學過Struts2啊,簡單說說與SpringMVC的區別
  • 常用的NIO框架有哪些?除了netty你還知道有哪個嗎?
  • 你的技術文章是寫在哪裡的?
  • 簡單介紹一下Java集合吧
  • 簡訊驗證你是怎麼實現的?
  • 說說你是怎麼理解SpringBoot的
  • Redis瞭解過嗎

5.2公司E總結

主要問某項技術是如何理解的,看你是否理解了這項技術。

拿到offer

六、總結

花了半個月時間吧,寫簡歷-->投簡歷-->收到面試邀請-->約面試時間-->面試-->(中公司有二面,大公司可能更多)-->拿到offer(或者拒絕)

最後的成績:面了5家公司,拿到4個offer。

至於在Java實習生廣州的薪酬方面,不同公司給出的薪酬都不一樣。有的公司按天數算(上班天數),也有按月算。呃,就我個人認為在廣州大部分給出的薪酬在2500-3500。

  • 有的工資給得比較低,但中午是有餐補的,有提供住宿的。
  • 有的工資給得比較高,但沒有餐補,沒有住宿。

通過這次面試,還是發現自己薄弱的地方有很多啊,得多補補才行,面試也沒想象中那麼刁難。

下一篇我就整理點我在面試前找到的,或者覺得比較好的資料吧~~

好久沒寫過文章啦~~~實習了以後應該就不會像在學校的時候更新那麼頻繁了,可能一個星期一篇?這我也不確定,反正文章總結我還是會寫的。還有好多好多想學的,想寫的呢。

如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:Java3y。

文章的目錄導航:zhongfucheng.bitcron.com/post/shou-j…

相關文章