前言:
今天小編和大家分享一位以前面試的一位應聘者,工作4年26歲,統招本科。
以下就是他的簡歷和麵試情況。
基本情況:
專業技能:
1、 熟悉Sping瞭解SpringMVC、SpringBoot、Mybatis等框架、瞭解SpringCloud微服務
2、 熟悉常用項目管理工具:SVN、GIT、MAVEN、Jenkins
3、 熟悉Nginx、tomcat等的調優
4、 熟悉多線程、併發
5、 熟悉分佈式協同框架Zookeeper、RPC服務框架Dubbo
6、 瞭解分佈式消息框架Kafka、RocketMQ
7、 熟悉分佈式緩存Redis、memcache
8、 熟悉分佈式數據中間件sharding-jdbc做分庫分表、讀寫分離
熟悉分佈式搜索引擎ELK
教育經歷:
面試過程:
面試題一:HashMap底層實現
面試題二:Spring AOP底層實現
面試題三:分佈式Session、Dubbo、Zookeeper問題
總結:
面試過程中,大概聊了20分鐘左右,自我介紹和項目聊了大概,8分鐘,另外12分鐘主要是聊了一些技術問題。這次問的相對來說不會太難,因為工作4年要16k薪資不是很高,最後還是沒有給第二面的機會,主要還是覺得對技術深度不夠,廣度是OK的,今天的面試分享就到這裡。
如果大家需要更多的Java面試題,在這裡小編整理了一些java面試題並整理成了文檔,希望可以幫助到大家,想要獲取一下面試文檔的小夥伴,可以關注支持一下小編 ,私信小編“面試”獲取哦
數據庫
- 事務四大特性(ACID)?
- 數據庫隔離級別,每個級別會引發什麼問題,mysql默認是哪個級別?
- innodb和myisam存儲引擎的區別?
- MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景?
- 查詢語句不同元素(where、jion、limit, group by、having等等)執行先後順序?
- 數據庫的優化(sql語句優化和索引)?
- 索引有B+索引和hash索引,各自的區別?
- B+索引數據結構,和B樹的區別?
- 索引的分類(主鍵索引、唯一索引),最左前綴原則,哪些情況索引會失效?
- 聚集索引和非聚集索引區別
- 有哪些鎖(樂觀鎖悲觀鎖),select時怎麼加排它鎖?
- 關係型數據庫和非關係型數據庫區別?
- 數據庫三範式,根據某個場費設計數據表?
- 數據庫的讀寫分離、主從複製?
- 使用explain優化sql和索引?
- long_query怎麼解決?
- 死鎖判定原理和具體場景,死鎖怎麼解決?
- varchar和char的使用場景?
- mysql併發情況下怎麼解決(通過事務、隔離級別、鎖)?
- 數據庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌) ?
併發編程
- 跟 Synchronized 相比,可重入鎖 ReentrantLock 其實現原理有什麼不同?
- 那麼請談談 AQS 框架是怎麼回事兒?
- 請儘可能詳盡地對比下 Synchronized 和 ReentrantLock 的異同。
- ReentrantLock 是如何實現可重入性的?
- 除了 ReetrantLock,你還接觸過 JUC 中的哪些併發工具?
- 請談談 ReadWriteLock 和 StampedLock。
- 如何讓 Java 的線程彼此同步?你瞭解過哪些同步器?請分別介紹下。
- CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢?
- Synchronized 用過嗎,其原理是什麼?
- 你剛才提到獲取對象的鎖,這個“鎖”到底是什麼?如何確定對象的鎖?
- 什麼是可重入性,為什麼說 Synchronized 是可重入鎖?
- JVM 對 Java 的原生鎖做了哪些優化?
- 為什麼說 Synchronized 是非公平鎖?
- 什麼是鎖消除和鎖粗化?
- 為什麼說 Synchronized 是一個悲觀鎖?樂觀鎖的實現原理又是什麼?什麼是
- 樂觀鎖一定就是好的嗎?
- 什麼是 Java 的內存模型,Java 中各個線程是怎麼彼此看到對方的變量的?
- 請談談 volatile 有什麼特點,為什麼它能保證變量對所有線程的可見性?
- 請對比下 volatile 對比 Synchronized 的異同。
- 請談談 ThreadLocal 是怎麼解決併發安全的?
- 很多人都說要慎用 ThreadLocal,談談你的理解,使用 ThreadLocal 需要注意些什麼?
- Java 中的線程池是如何實現的?
- 創建線程池的幾個核心構造參數?
- 線程池中的線程是怎麼創建的?
- 如何在 Java 線程池中提交線程?
Spring
- 為什麼需要代理模式?
- 講講靜態代理模式的優點及其瓶頸?
- 對Java 接口代理模式的實現原理的理解?
- 如何使用 Java 反射實現動態代理?
- Java 接口代理模式的指定增強?
- 談談對Cglib 類增強動態代理的實現?
- point cut,advice,Join point是什麼?
- join point 和 point cut 的區別?
- 怎麼理解面向切面編程的切面?
- 談談對SpringAOP Weaving(織入)的理解?
- 談談SpringAOP Introduction(引入)的理解?
- 講解OOP與AOP的簡單對比?
- 講解JDK 動態代理和 CGLIB 代理原理以及區別?
- 講解Spring 框架中基於 Schema 的 AOP 實現原理?
- 講解Spring 框架中如何基於 AOP 實現的事務管理?
- 談談對控制反轉的設計思想的理解?
- 怎麼理解 Spring IOC 容器?
MyBatis 面試題
- 什麼是Mybatis?
- Mybatis的優點:
- Mybatis框架的缺點:
- Mybatis框架適用場合:
- MyBatis與Hibernate有哪些不同?
- #{}和${}的區別是什麼?
- 當實體類中的屬性名和表中的字段名不一樣 ,怎麼辦 ?
- 模糊查詢like語句該怎麼寫?
- 通常一個Xml映射文件,都會寫一個Dao接口與之對應,請問,這個Dao接口的工作原理
- 是什麼?Dao接口裡的方法,參數不同時,方法能重載嗎?
- Mybatis是如何進行分頁的?分頁插件的原理是什麼?
- Mybatis是如何將sql執行結果封裝為目標對象並返回的?都有哪些映射形式?
- 如何執行批量插入?
- 如何獲取自動生成的(主)鍵值?
- Mybatis動態sql有什麼用?執行原理?有哪些動態sql?
- Xml映射文件中,除了常見的select|insert|updae|delete標籤之外,還有哪些標籤?
- Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重複?
- 為什麼說Mybatis是半自動ORM映射工具?它與全自動的區別在哪裡?
- MyBatis實現一對一有幾種方式?具體怎麼操作的?
- MyBatis實現一對多有幾種方式,怎麼操作的?
- Mybatis是否支持延遲加載?如果支持,它的實現原理是什麼?
- Mybatis的一級、二級緩存:
- 什麼是MyBatis的接口綁定?有哪些實現方式?
- 使用MyBatis的mapper接口調用時有哪些要求?
- 簡述Mybatis的插件運行原理,以及如何編寫一個插件。
Redis面試題
隨著應用研發技術的不斷成熟,Redis 緩存技術已經成為後臺研發同學必備的能力之一。在很多公司面試的過程中,都必不可少地考察 Redis 知識點的掌握。
- 使用 Redis 有哪些好處?
- Redis 是單進程單線程的?
- Redis 的持久化機制是什麼?各自的優缺點?
- Redis 常見異常問題和解決方案(雪崩,穿透...)
- redis 過期鍵的刪除策略?
- 為什麼 redis 需要把所有數據放到內存中?
- Redis 集群的主從複製模型是怎樣的?
- Redis key 的過期時間和永久有效分別怎麼設置?
MongoDB
- 什麼是MongoDB ?
- MongoDB是由哪種語言寫的?
- MongoDB的優勢有哪些?
- 什麼是數據庫?
- 什麼是集合?
- 什麼是文檔?
- MongoDB和關係型數據庫術語對比圖
- 什麼是"mongod" ?
- "mongod"參數有什麼?
- 什麼是"mongo”?
- MongoDB哪個命令可以切換數據庫?
- 什麼是非關係型數據庫?
- 非關係型數據庫有哪些類型?
- 為什麼用MOngoDB ?
- 在哪些場景使用MongoDB ?
- MongoDB中的命名空間是什麼意思?
- 哪些語言支持MongoDB?
- 在MongoDB中如何創建一個新的數據庫 ?
- 在MongoDB中如何查看數據庫列表?
- MongoDB中的分片是什麼意思?
- 如何查看使用MongoDB的連接?
- 什麼是複製?
- 在MongoDB中如何在集合中插入-一個文檔?
- 在MongoDB中如何除去-一個數據庫?
- 在MongoDB中如何創建一個集合 ?
- 在MongoDB中如何查看一個已經創建的集合 ?
- 在MongoDB中如何刪除一-個集合?
- 為什麼要在MongoDB中使用分析器?
- MongoDB支持主鍵外鍵關係嗎?
- MongoDB支持哪些數據類型?
- 為什麼要在MongoDB中用"Code”數據類型?
- 為什麼要在MongoDB中用" Regular Expression"數據類型?
- 為什麼在MongoDB中使用"Object ID"數據類型?
- 如何在集合中插入一個文檔?
- "ObjectID"有哪些部分組成?
- 在MongoDb中什麼是索引?
- 如何添加索引?
- MongoDB有哪些可替代產品?
- 如何查詢集合中的文檔?
- 用什麼方法可以格式化輸出結果?
- 如何使用" AND"或"OR"條件循環查詢集合中的文檔?
- 在MongoDB中如何更新數據?
- 如何刪除文檔?
- 在MongoDB中如何排序?
- 什麼是聚合?
- 在MongoDB中什麼是副本集?
- Mongodb存儲特性與內部原理?
MySQL 面試題
如今互聯網行業用的最多就是 MySQL,然而對於高級 Web 面試者,尤其對於尋找 30k 下工作的求職者,很多 MySQL 相關知識點基本都會涉及,如果面試中,你的相關知識答的模糊和不切要點,基本大多稍好公司的面試官,基本也不會對你有興趣,畢竟稍微量大的項目,最終都會讓你去深入數據庫,而且最終的大多瓶頸首先也會出現在數據庫。
- L 相關存儲引擎。
- MySQL 索引實現原理。
- MySQL 數據庫鎖。
- MySQL 的 SQL 調優。
- MySQL 分表分庫全局 ID。
- Mysql的技術特點是什麼?
- Heap表是什麼?
- Mysql服務器默認端口是什麼?
- 如何區分FLOAT和DOUBLE?
- 區分CHAR_LENGTH和LENGTH?
- 請簡潔描述Mysql中InnoDB支持的四種事務隔離級別名稱,以及逐級之間的區別?
- 在Mysql中ENUM的用法是什麼?
- 如何定義REGEXP?
- CHAR和VARCHAR的區別?
- Mysql查詢是否區分大小寫?
- Mysql中有哪些不同的表格?
- 什麼樣的對象可以使用CREATE語句創建?
- 什麼是通用SQL函數?
- MYSQL支持事務嗎?
- mysql裡記錄貨幣用什麼字段類型好
- Mysql中有哪幾種鎖?
- MYSQL數據庫服務器性能分析的方法命令有哪些?
由於資料內容太多,平臺篇幅限制,小編就展現了以上部分面試專題與資料,如需獲取以下全部面試資料的同學,獲取方式:轉發+關注後臺私信“面試資料”可免費領取全部專題面試文檔,感謝配合與信任!福利再附贈:Spring源碼100集學習視頻 快快領取吧!
如果大家需要更多的Java面試題,在這裡小編整理了一些java面試題並整理成了文檔,希望可以幫助到大家,想要獲取一下面試文檔的小夥伴,可以關注支持一下小編 ,私信小編“面試”獲取哦
獲取方式:關注小編並私信小編“面試”獲取呦
Spring源碼100集學習視頻
閱讀更多 java架構 的文章