很是很是不錯的一篇面經文章,文中不少的面試題目都值得咱們在面試前刷一遍,強烈推薦閱讀3遍以上。若是以爲不錯,能夠收藏分享一下。(面經沒有具體答案,須要你們一塊兒來探討學習一下。)前端
資料免費分享:幫忙轉發一下,關注後添加助理vx:yunduoa2019或掃描下圖二維碼,跟隨助理指引自行獲取java
美團篇(33道)
- 瞭解SOA,微服務嗎?
- 分佈式系統如何負載均衡?如何肯定訪問的資源在哪一個服務器上?
- 設計一個分佈式負載均衡緩衝系統,如何快速定位到是那個服務器?
- 如何保證緩衝區和數據庫之間的強一致性?
- HashMap高併發狀況下會出現什麼問題?
- 說一說在瀏覽器中輸入一個url後,直到瀏覽器顯示頁面的過程當中發生了什麼?
- 字符串中句子的反轉(好比ABC DEF,輸出DEF ABC)
- 給任意二叉樹的全部結點加next指針
- 用過反向代理嗎?
- 進程間共享內存的方式有哪些?
- linux下如何查看網絡端口狀態,如何查看內存使用狀況?
- ConcurrentHashMap如何擴容?
- 知道java的異常嗎?
- 運行時異常若是不處理會怎麼樣?應該怎麼處理運行時異常?
- 寫代碼:給你5000萬個int,求出前1000個最大的數,有2G內存。
- 給你n個不重複的整數,隨機找出m個不重複的整數,要求時間和空間複雜度都是O(m)。
- 對於SQL慢查詢的優化?
- 用過哪些容器?
- 用過動態代理嗎?
- 說說深刻理解JVM中印象最深入的章節
- 堆和棧中存的是什麼?static修飾的遍歷存在哪裏?
- 說說《Effective Java》中你印象最深的三條和你的理解
- 你以爲你哪一塊只是最熟悉
- 那你說說HashMap的內部實現;
- HashMap是線程安全的嗎?
- 那ConcurrentHashMap內部是如何實現的?每一個segment是個什麼數據結構?
- 你的項目中用到哪些技術?
- 說說你用了它的什麼?
- Spring的優勢?Spring AOP的原理?Spring如何實現解耦合?
- 對鏈表瞭解嗎?說說他們的區別?
- 會作鏈表兩個結點的交換嗎?
- 再寫一個,給你一個鏈表和一個整數k
- 說說mybatis配置了xml事後是如何完成數據庫操做的?
Redis
- redis 和 memcached 什麼區別?
- 爲何高併發下有時單線程的 redis 比多線程的memcached 效率要高?
- redis 主從複製如何實現的?
- redis 的集羣模式如何實現?
- redis 的 key 是如何尋址的?
- 使用 redis 如何設計分佈式鎖?說一下實現思路?使用 zk 能夠嗎?如何實現?這兩種有什麼區別?
- 知道 redis 的持久化嗎?底層如何實現的?有什麼優勢缺點?
- redis 過時策略都有哪些?LRU 算法知道嗎?寫一下 java 代碼實現?
- 緩存穿透、緩存擊穿、緩存雪崩解決方案?
- 在選擇緩存時,何時選擇 redis,何時選擇 memcached
- 緩存與數據庫不一致怎麼辦?
- 主從數據庫不一致如何解決
- Redis 常見的性能問題和解決方案
- Redis 的數據淘汰策略有哪些?
- Redis 當中有哪些數據結構?
- 假如 Redis 裏面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,若是將它們所有找出來?
- ...............
拼多多篇(40道)
- 給一個函數,返回 0 和 1,機率爲 p 和 1-p,請你實現一個函數,使得返回 01 機率同樣。
- 10 億個 url,每一個 url 大小小於 56B,要求去重,內存 4G。
- 把一個 bst 轉化成一個雙向鏈表。
- http 和 https 區別,https 在請求時額外的過程,https 是如何保證數據安全的。
- IP 地址子網劃分。
- POST 和 GET 區別。
- 硬連接和軟鏈接區別。
- DNS 解析過程。
- kill 用法,某個進程殺不掉的緣由(進入內核態,忽略 kill 信號)。
- linux 用過的命令。
- 系統管理命令(如查看內存使用、網絡狀況)。
- 管道的使用。
- grep 的使用,必定要掌握,每次都會問在文件中查找。
- shell 腳本。
- find 命令。
- awk 使用。
- Linux 下的一些指令,(進程id), (進程 id),(進程id),?(上一條命令退出時狀態),怎麼查看進程,按照內存大小,CPU 佔用排序等等。(大寫 M 和大寫 P)。
- http 的 get 和 post 方法。
- 介紹下你所瞭解的 epoll。
- 數據庫 sql 的瞭解程度。
- 項目中遇到的問題,本身咋解決的等等。
- 手寫一個全排列。
- B樹和B+樹。
- 介紹一下 Hash,怎麼解決衝突。
- 進程間的通訊,共享內存方式的優缺點。
- 說下你平時看的一些技術博客,書籍。
- linux 下的一些指令。
- 工做中你以爲最不爽的事情是什麼。
- 說下你的優缺點。
- 有沒有想過去創業公司。
- 寫個 strcpy 函數。
- 說說你本身的性格。
- 給你一個系統(面試官好像是無人車部門的),後臺的邏輯已經實現了,可是前端加載很慢,怎麼檢測。
- 之後可能要學習不少新技術,你怎麼看。
- 項目中遇到的困難(提早想好,而且把實現或者優化方法說清楚)。
- 系統的量級、pv、uv 等。
- 應對高併發的解決辦法(分佈式)。
- 在項目中主要負責了哪些工做。
- nginx 的負載均衡。
- 分佈式緩存的一致性,服務器如何擴容(哈希環)。
多線程
- 如今有 T一、T二、T3 三個線程,你怎樣保證 T2 在 T1 執行完後執行,T3 在 T2 執行完後執行?
- 在 Java 中 Lock 接口比 synchronized 塊的優點是什麼?你須要實現一個高效的緩存,它容許多個用戶讀,但只容許一個用戶寫,以此來保持它的完整性,你會怎樣去實現它?
- 在 java 中 wait 和 sleep 方法的不一樣?
- 用 Java 實現阻塞隊列
- 用 Java 寫代碼來解決生產者——消費者問題
- 用 Java 編程一個會致使死鎖的程序,你將怎麼解決?
- 什麼是原子操做,Java 中的原子操做是什麼?
- Java 中的 volatile 關鍵是什麼做用?怎樣使用它?在 Java 中它跟 synchronized 方法有什麼不一樣?
- 什麼是競爭條件?你怎樣發現和解決競爭?
- 你將如何使用 threaddump?你將如何分析 Thread dump?
- Java 中你怎樣喚醒一個阻塞的線程?
- 爲何咱們調用 start()方法時會執行 run()方法,爲何咱們不能直接調用 run()方法?
- 在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?
- 什麼是不可變對象,它對寫併發應用有什麼幫助?
- 你在多線程環境中遇到的常見的問題是什麼?你是怎麼解決它的?
- 使用synchronized修飾靜態方法和非靜態方法有什麼區別。
- 簡述ConcurrentLinkedQueue和LinkedBlockingQueue的用處和不一樣之處。
- 致使線程死鎖的緣由?
- 怎麼解除線程死鎖。
- 很是多個線程(多是不一樣機器),相互之間須要等待協調,才能完成某種工做,問怎麼設計這種協調方案。
- 用過讀寫鎖嗎,原理是什麼,通常在什麼場景下用。
- 開啓多個線程,若是保證順序執行,有哪幾種實現方式,或者如何保證多個線程都執行完再拿到結果。
- 延遲隊列的實現方式,delayQueue和時間輪算法的異同。
更多面試資料、架構學習文檔須要獲取的朋友們能夠轉發分享此文linux
資料免費分享:幫忙轉發一下,關注後添加助理vx:yunduoa2019或掃描下圖二維碼,跟隨助理指引自行獲取nginx
網易篇(72道)
- HashMap的源碼,實現原理,JDK8中對HashMap作了怎樣的優化。
- HaspMap擴容是怎樣擴容的,爲何都是2的N次冪的大小。
- HashMap,HashTable,ConcurrentHashMap的區別。
- 極高併發下HashTable和ConcurrentHashMap哪一個性能更好,爲何,如何實現的。
- HashMap在高併發下若是沒有處理線程安全會有怎樣的安全隱患,具體表現是什麼。
- java中四種修飾符的限制範圍。
- Object類中的方法。
- 接口和抽象類的區別,注意JDK8的接口能夠有實現。
- 動態代理的兩種方式,以及區別。
- Java序列化的方式。
- 傳值和傳引用的區別,Java是怎麼樣的,有沒有傳值引用。
- 一個ArrayList在循環過程當中刪除,會不會出問題,爲何。
- @transactional註解在什麼狀況下會失效,爲何。
- B+樹
- 快速排序,堆排序,插入排序(其實八大排序算法都應該瞭解
- 一致性Hash算法,一致性Hash算法的應用
- JVM的內存結構。
- JVM方法棧的工做過程,方法棧和本地方法棧有什麼區別。
- JVM的棧中引用如何和堆中的對象產生關聯。
- 能夠了解一下逃逸分析技術。
- GC的常見算法,CMS以及G1的垃圾回收過程,CMS的各個階段哪兩個是Stop the world的,CMS會不會產生碎片,G1的優點。
- 標記清除和標記整理算法的理解以及優缺點。
- eden survivor區的比例,爲何是這個比例,eden survivor的工做過程。
- JVM如何判斷一個對象是否該被GC,能夠視爲root的都有哪幾種類型。
- 強軟弱虛引用的區別以及GC對他們執行怎樣的操做。
- Java是否能夠GC直接內存。
- Java類加載的過程。
- 雙親委派模型的過程以及優點。
- 經常使用的JVM調優參數。
- dump文件的分析。
- Java有沒有主動觸發GC的方式(沒有)。
- Java實現多線程有哪幾種方式。
- Callable和Future的瞭解。
- 線程池的參數有哪些,在線程池建立一個線程的過程。
- volitile關鍵字的做用,原理。
- synchronized關鍵字的用法,優缺點。
- Lock接口有哪些實現類,使用場景是什麼。
- 可重入鎖的用處及實現原理,寫時複製的過程,讀寫鎖,分段鎖(ConcurrentHashMap中的segment)。
- 悲觀鎖,樂觀鎖,優缺點,CAS有什麼缺陷,該如何解決。
- ABC三個線程如何保證順序執行。
- 線程的狀態都有哪些。
- sleep和wait的區別。
- notify和notifyall的區別。
- ThreadLocal的瞭解,實現原理。
- 常見的數據庫優化手段索引的優缺點,什麼字段上創建索引數據庫鏈接池。
- durid的經常使用配置。
- TCP,UDP區別。三次握手,四次揮手,爲何要四次揮手。
- 長鏈接和短鏈接。
- 鏈接池適合長鏈接仍是短鏈接。
- 觀察者模式代理模式單例模式,有五種寫法,能夠參考文章單例模式的五種實現方式能夠考Spring中使用了哪些設計模式
- 分佈式事務的控制。
- 分佈式鎖如何設計。
- 分佈式session如何設計。
- dubbo的組件有哪些,各有什麼做用。
- zookeeper的負載均衡算法有哪些。
- dubbo是如何利用接口就能夠通訊的。
- redis和memcached的區別。
- redis支持哪些數據結構。
- redis是單線程的麼,全部的工做都是單線程麼。
- redis如何存儲一個String的。
- redis的部署方式,主從,集羣。
- redis的哨兵模式,一個key值如何在redis集羣中找到存儲在哪裏。
- redis持久化策略。
- SpringMVC的Controller是如何將參數和前端傳來的數據一一對應的。
- Mybatis如何找到指定的Mapper的,如何完成查詢的。
- Quartz是如何完成定時任務的。
- 自定義註解的實現。
- Spring使用了哪些設計模式。
- Spring的IOC有什麼優點。
- Spring如何維護它擁有的bean。
- 一些較新的東西JDK8的新特性,流的概念及優點,爲何有這種優點。
- 區塊鏈瞭解如何設計雙11交易總額面板,要作到高併發高可用
JVM
- JVM 內存分哪幾個區,每一個區的做用是什麼?
- 如和判斷一個對象是否存活?(或者 GC 對象的斷定方法)
- 簡述 Java 垃圾回收機制?
- Java 中垃圾收集的方法有哪些?
- Java 內存模型
- Java 類加載過程?
- 簡述 Java 類加載機制?
- 類加載器雙親委派模型機制?
- 什麼是類加載器,類加載器有哪些?
- 簡述 Java 內存分配與回收策率以及 Minor GC 和Major GC?
螞蟻金服篇(39道)
- HashMap&ConcurrentHashMap
- 再談談一致hash算法?
- 樂觀鎖&悲觀鎖?
- 可重入鎖&Synchronize?
- 事務四大特性?
- 事務的二段提交機制?
- 聚簇索引&非聚簇索引?
- 用本身的實踐經歷說一下索引的使用場景(說一個就要舉一個例子)?
- 當前讀&快照讀?
- 類加載過程?
- 雙親委派機制及使用緣由?
- 說說GC算法?
- Http&Https的區別
- Https的加密方式
- 線程池的核心參數和基本原理
- 線程池的調優策略
- 說說本身參與的項目,技術難度在哪裏?
- Collections.sort底層排序方式?
- 排序穩定性?
- 具體場景的排序策略?
- Http請求過程,DNS解析過程
- 三次握手四次揮手
- 簡述線程池和併發工具的使用?
- 數據庫索引原理
- 頻繁老年代回收怎麼分析解決
- Spring IOC、AOP?
- 講講SpringBoot/SpringCloud的一些應用?
- 阻塞隊列不用java提供的本身怎麼實現,condition和wait不能用
- 擁塞窗口講一講,爲何要用慢啓動算法
- 負載均衡的原理?
- Redis的數據一致性問題(分佈式多節點環境 & 單機環境)?
- 講講docker容器?
- 如何實現何高併發下的削峯,限流?
- 項目中用的中間件的理解(Dubbo、MQ、Redis、kafka、zk)
- 服務器雪崩是怎麼形成的?以前有這樣的經歷嗎?怎麼防備?
- 高併發架構的設計思路
- 之前項目中遇到的最大問題和解決策略
- 生活中遇到的最大的挫折
- 生活中遇到的最大的令你最有成就感的事情
Spring全家桶(SpringCloud、Docker)
Spring面試
- 不一樣版本的 Spring Framework 有哪些主要功能?
- 什麼是 Spring Framework?
- 列舉 Spring Framework 的優勢。
- Spring Framework 有哪些不一樣的功能?
- Spring Framework 中有多少個模塊,它們分別是什麼?
- 什麼是 Spring 配置文件?
- Spring 應用程序有哪些不一樣組件?
- 使用 Spring 有哪些方式?
- 什麼是 Spring IOC 容器?
- 什麼是依賴注入?
- spring 中有多少種 IOC 容器?
- 什麼是 spring bean?
- spring 提供了哪些配置方式?
- spring 支持集中 bean scope?
- spring bean 容器的生命週期是什麼樣的?
- 什麼是 spring 的內部 bean?
- 什麼是基於註解的容器配置?
- 如何在 spring 中啓動註解裝配?
- spring DAO 有什麼用?
- spring JDBC API 中存在哪些類?
- 列舉 spring 支持的事務管理類型
- 什麼是 AOP?
- 什麼是 Aspect?
- AOP 有哪些實現方式?
- Spring AOP and AspectJ AOP 有什麼區別?
資料免費分享:幫忙轉發一下,關注後添加助理vx:yunduoa2019或掃描下圖二維碼,跟隨助理指引自行獲取redis
Docker算法
- 什麼是Docker?
- 如何使用Docker構建與環境無關的系統?
- Dockerfile中的命令COPY和ADD命令有什麼區別?
- 什麼是Docker鏡像?
- 什麼是Docker容器?
- 什麼是Docker Hub?
- Docker容器在任何給定時間點能夠處於什麼狀態?
- 有沒有辦法識別Docker容器的狀態?
- Dockerfile中最多見的指令是什麼?
- 什麼類型的應用程序 - 無狀態或有狀態更適合Docker容器?
- Docker Image和Layer有什麼區別?
- 什麼是虛擬化?
- 什麼是管理程序?
- 什麼是Docker Swarm?
- 你將如何監控生產中的Docker?
更多面試專題答案、實戰學習文檔spring
資料免費分享:幫忙轉發一下,關注後添加助理vx:yunduoa2019或掃描下圖二維碼,跟隨助理指引自行獲取sql