面試記錄

小強Zzz發表於2020-06-08

前言

經歷了兩次面試,記錄一下

XX銀行

1.自我介紹
說了一下專案經歷,專案主要功能,專案負責部分,專案技術棧
2.處理過的專案中最難的一點是什麼
說了一下問卷系統匯入答卷部
3.你的多執行緒處理在併發情況下會出現什麼問題。
4.jvm熟悉嗎?(不熟悉)
5.專案中除了mysql還用了哪些資料庫。(h2)
6.mysql中左連結,排序,倒序,組合(Group by)關鍵字是什麼
7.在excel表資料處理時除了欄位校驗外還要注意什麼?(不知道想問什麼)
8.資料流怎麼關閉的
9.String StringBuilder StringBuffer區別。

北京某科技公司一面

1.自我介紹
2.筆試演算法題覆盤
3.http與https區別,https的請求過程是怎麼樣的。
4.你後臺介面怎麼實現的
5.如果不使用框架,怎麼實現一個後臺介面?(提示socket)
6.nginx主要解決什麼問題,如何解決的,什麼是同源,如果不用nginx能不能解決,怎麼解決
7.關係型資料庫和非關係型資料庫分別舉例,兩者區別
8.事務有什麼好處,怎麼保持的資料一致性
9.索引在哪用過,索引底層是什麼,索引怎麼通過b+樹查資料的(不是一條資料),b樹與b+數區別,聯合索引怎麼通過b+樹查資料
10.伺服器是如何處理併發請求的,如果讓你設計,怎麼設計,伺服器處理一個請求建立一個執行緒還是程式,執行緒和程式區別,併發與並行區別。
11.學校成績。
這家面試明顯感覺到問題更有深度,更偏向對知識的思考。

save方法的併發問題

@Test
void saveUser() throws InterruptedException {
    List<User> users1 = new ArrayList<>();
    List<User> users2 = new ArrayList<>();

    for (int i = 0; i < 50; i++) {
        User user = UserControllerTest.getOneUser();
        users1.add(user);
        user = UserControllerTest.getOneUser();
        users2.add(user);
    }

    new Thread(() -> {
        for (User user: users1) {
            this.userRepository.save(user);
        }
    }).start();
    new Thread(() -> {
        for (User user: users2) {
            this.userRepository.save(user);
        }
    }).start();

    Thread.sleep(10000);
    Assertions.assertEquals(this.userRepository.findAll().size(), 100);
}

測試了一下,並沒有什麼問題。

相關文章