前言
前兩天,我收到了阿里巴巴的實習offer,從學長內推開始面試到拿到最后offer經歷了4面技術、一面交叉面和一面HR面,經過了漫長的等待和幾次幾乎折磨的面試之后,終于拿到了實習offer,
自我介紹
本人來自西南某雙非本科學校,該校學的專業是物聯網工程,我的專業與Java開發關系不大,學校也只教過一些簡單的編程課,其余的編程相關知識都是自己在課余時間在實驗室學習和自學的,技術不是大牛,專案做得多但是大部分都是自己練手的小專案或者一些有意思的小專案,沒有接觸過真正意義上的大專案,平時沒事的時候喜歡逛一逛微信公眾號、簡書、掘金等平臺,看一看技術類文章,自己也偶爾寫過一些文章,在校期間在實驗室的時間偏多,喜歡寫代碼的程序和攻克難題的程序,
面試準備
首先準備校招之前一定是要好好準備的,長期的就是自己的編程基本功以及對各個方面知識點的了解程度,短期的就是突破一下自己不會的知識點,
我是投簡歷之前一個半月就開始做準備了,首先就是刷leetcode,演算法這一關還是比較重要,而且阿里還有筆試成績,面試的時候也會問到一些不是太難的筆試題;
然后就是多找幾篇面經,看看學長學姐當初面試的時候面試官都問了哪些問題,如果遇到會的,自己嘗試回答一遍,如果遇到不會的,那就去學習一下;
不過網上找的面經可能因為大家的學習程序不一樣,找到類似的面經的概率個人感覺不太大,我恰巧在H大的知識星球里面,就找H大做了一下簡歷指導(不是在打廣告,是真心感謝H大);
最后找到了一個很完整的Java面試題及答案的檔案用來做復習資料,(Java面試寶典及核心知識寶典復習)
面試程序
第一次技術面(60min)
- 說一說你使用的是什么樣的執行緒池,自定義執行緒池的幾個引數是什么
- 說一說執行緒池的執行流程
- 你的專案中定義的核心執行緒數、最大執行緒數和佇列大小是如何定義的?為什么這樣定義?(這道題根絕我導師給我說是一個加分項)
- 在專案中如何防止超賣現象
- 你的下訂單的sql陳述句如何撰寫的?(考察MySQL的樂觀鎖)
- 如果有用戶反饋說整個系統的反饋比較慢,你是如何排查和如何解決問題的?
- 影響系統回應慢的原因有哪些?
- 演算法題:給定一個無序陣列和一個目標值,找出陣列中兩個數之和等于目標值的所有組合,并指出其時間復雜度,(很簡單的一個演算法題,leetcode easy難度)
- 了解過JVM記憶體模型么?說說哪些是執行緒獨享、哪些是執行緒共享的?
- 詳細說一下Java堆的磁區,他們的比例,以及如果把比例調大以后會有什么樣的后果?
- 說一下JVM的GC演算法,以及為什么“標記-整理”法更好一些,他能解決什么樣的問題?
- 了解過Java類加載機制么?一共有哪幾種類加載器?
- 如果你想查看線上正在運行的服務的GC日志,你需要輸入什么指令?
- 了解過HashMap么,說一下HashMap的原理,
- 如果兩個物件hashCode相同,則一定是相同物件么,如果是兩個相等的物件,那么他們的hashCode相同么?
- 如何解決hash沖突?
- HashMap是執行緒安全的么,如何把HashMap變成執行緒安全的類?
- 說一說MySQL資料庫有哪些資料庫引擎?
- InnoDB的索引的資料結構是什么,說一說他的原理
- 資料庫事務等級以及他們解決了什么問題,請舉例說明一下
- MySQL默認的事務等級是什么?
- MySQL如何開啟慢查詢?
- 說一下Spring主要包含哪些模塊?
- 說一下你對Spring的IOC容器的理解以及啟動流程
- 有了解過RPC框架或分布式的東西么?(這個后來問面試官,就是考察對新技術的了解以及對互聯網發展的一個關注度)
- 說一下你讀過的有關Java的書籍
第二次技術面(30min)
- 介紹一下你做的專案中你覺得最好的那個;說一下你這個專案中的技術難點和挑戰,
- 如何解決商城專案中出現的超賣、少賣問題?
- 說一下什么是冪等性
- Redis如何保證高可用的
- Redis的哨兵模式知道嗎?
- 你用Redis覺得有什么缺點嗎?
- 你是如何做壓力測驗的?壓力測驗的資料是什么?
- 線城池有哪些引數?
- 核心執行緒數和最大執行緒數有什么區別?
- 常見的拒絕策略有哪些?
- 介紹一下SpringBoot的特性
- 說一下什么是單例模式
- 什么是餓漢模式、懶漢模式
- 使用懶漢模式的注意事項以及如何解決
- 說一下volatile關鍵字的作用和原理
- 說一下自旋鎖和一些常見的自旋鎖的實作
- 說一下資料庫的左外連接
- 資料庫索引優化
- 資料庫索引的資料結構
第三次技術面(25min)
- 如何解決商城專案中出現的超賣、少賣問題?
- 在開發專案中,遇到了哪些問題?
- Redis與資料庫同步時候出現問題是如何解決的
- 說一下Java當中執行緒有哪些狀態
- 執行緒的阻塞和等待有什么區別
- 介紹一些Java的鎖機制
- 你了解過哪些鎖的型別
- 為什么wait、notify這個方法會在Object這個類下面
- 分布式、RPC框架有了解過嗎
- Redis的執行緒模型是什么(考察NIO)
- Redis實作的訊息佇列是如何保證訊息不丟
- 介紹一下堆排序是如何實作的
- 介紹一下TCP/IP協議是如何保證訊息可靠傳輸的
- TCP/IP協議做了什么優化(擁塞控制和流量控制)
第四次技術面(15min)
- 說一下你投稿的文章寫得是什么內容
- 介紹一下訊息佇列
- 超賣是如何解決的?
- 下單程序是如何設計的?
- 介紹一下雪花演算法
- 你怎么理解分布式?
- 分布式之間怎么通信?
- 生產者、消費者模型是怎么作業的?
- Java里面創建執行緒的方式
- 代碼場景:給一個字串,統計每個大寫字母出現的次數,按照次數排序,從小到大輸出字母和其出現的次數
交叉面試(30min)
- 你在學校學習程序中,哪些可能成績更好一些以及為什么這些課程成績更好一些
- 你學習Java多長時間了
- 你是如何學習Java的?
- 你看過哪些開源框架原始碼?
- 你是怎么看開源框架原始碼的?
- 介紹一個你參與較多或者比較有難度的專案
- 你們團隊開發專案的時候有沒有大家一起解決的某些技術問題
- 你們做的這個專案有沒有借鑒過其他已經成熟的專案
- 說一下你們專案的要求和指標大概是多少
- 你們專案中的執行緒池佇列容量是如何確定的
- 專案中的某些解決方案是個人想出來的還是團隊討論的結果
- 如果再讓你做一個商城系統,你會做哪些技術選型
- 專案中做過哪些安全方面的措施
- 你會如何設計一個淘寶會員系統?
- 你未來的發展方向是什么?
面試總結
每一次面試都感覺是煎熬,雖然之前看過很多阿里的面經,都說阿里面試官會抓住某一點一直問下去,直到問到你不會為止,但是當第一次親身體會的時候,還是感覺很煎熬,
不過最終的結果還是好的,至少收到了心儀的offer,能在這個疫情期間,大環境不好的情況下找到實習作業,
對于整個的學習程序和面試程序,最大的感悟有四:
- 基礎知識要扎實,尤其是Java和資料庫的基礎知識,如果基礎知識不扎實,后面什么框架和實戰不會有太好的結果
- 多看一些技術類的博客或者文章,但是要有自己的思考,因為很多技術類文章都是跟緊互聯網發展的,多看一些能夠更加了解互聯網的發展方向;同時自己的思考也能讓自己過濾掉某些文章中的較差的觀點,做到取其精華去其糟粕
- 主動很重要,給我內推的學長是我主動認識的,我的導師是我主動認識的,學技術也是我主動學習的,這世上沒有天上掉餡餅的好事,主動才會有故事
- 一個合適的導師真的很重要,我在遇到我的導師之前,學習方向很迷茫,對于很多東西都不知道如何入手,很多文章也沒有解決我的問題;老師這時候就可以指明方向,讓我的學習之路少了很多崎嶇
分享個人面試刷題復習筆記
對這些面試筆記寶典感興趣的小伙伴可以自取哦!
1、Java后端覆寫1000多道常問面試題及答案詳解
上千道Java、Spring、JVM、集合、JVM、Mybatis、MySQL、DB、GC、Spring全家桶、Dubbo、資料結構、演算法、Kafka、微服務等
這幾份1000道面試寶典、Java核心知識、復盤面試寶典有感興趣的工程師朋友們可以轉發此文關注我私信回復【面試】免費領取


2、阿里P8大牛寫出來的283頁Java核心知識


3、面試寶典
面試復習寶典、面試前刷一遍對你幫助非凡!

2020年350道面試體系

這幾份面試寶典、Java核心知識、復盤面試寶典有感興趣的工程師朋友們可以轉發此文關注我私信回復【面試】免費領取
最后祝您在疫情過后能拿到心儀的offer,面試順順利利!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/140364.html
標籤:其他
