1. 程式人生 > 實用技巧 >我!94年!準備了三個月,終獲螞蟻金服Offer!

我!94年!準備了三個月,終獲螞蟻金服Offer!

因為疫情的關係,上半年一直在家裡遠端辦公,可是明明也是每天工作八小時,卻只發三分之二的工資,一氣之下我直接向領導提出了離職。

於是乎我六月份到現在這幾個月的時間一直在找工作,但卻遭遇到了諸多不順,因為在傳統行業呆久了,現在想去網際網路大廠真的太艱難了,每次面試時的面試題對於我來說都超綱了很多,很多新鮮技術我都沒怎麼了解。每次面試官看著我的眼神都像下圖所示。

前前後後,斷斷續續的面試真的讓我身心俱疲,也深刻的認識的自己的技術棧的不足。於是每次結束面試我都會認真總結。不斷的在網上找資料提升自己。面試的越多,你就會發現,其實面試整體上就那些技術棧,當我們有方向,有規劃的提升自己,我們會成長的很快。

下面我將總結大大小小二十幾次的面試的相關內容。希望能給大家帶來些許幫助。

設計模式

說一下設計模式?你都知道哪些?

實現一個單列模式。

什麼是簡單工廠模式?

什麼是抽象工廠模式?

什麼是觀察者模式?

什麼是裝飾器模式?

什麼是模板方法模式?

等等23種常用設計模式都可能問道.....

Spring原始碼解析

Spring框架的設計目標,設計理念,和核心是什麼
Spring的優缺點是什麼?
Spring有哪些應用場景
Spring由哪些模組組成?
Spring 框架中都用到了哪些設計模式?
詳細講解一下核心容器(spring context應用上下文) 模組
Spring框架中有哪些不同型別的事件

Spring 應用程式有哪些不同元件?
使用 Spring 有哪些方式?
什麼是Spring IOC 容器?
控制反轉(IoC)有什麼作用
IOC的優點是什麼?
Spring IoC 的實現機制
Spring 的 IoC支援哪些功能
BeanFactory 和 ApplicationContext有什麼區別?
Spring 如何設計容器的,BeanFactory和ApplicationContext的關係詳解
ApplicationContext通常的實現是什麼?
什麼是Spring的依賴注入?

等等,還有幾家面試官問我是否閱讀過Spring的原始碼......

Mybatis原始碼解析

MyBatis框架的缺點:

MyBatis框架適用場合

MyBatis與Hibernate有哪些不同?

#{}和${}的區別是什麼

當實體類中的屬性名和表中的欄位名不一樣 ,怎麼辦 ?

Mybatis是否支援延遲載入?如果支援,它的實現原理是什麼?

Mybatis的一級快取和二級快取原理

什麼是MyBatis的介面繫結?有哪些實現方式

使用MyBatis的mapper介面呼叫時有哪些要求

等等......

SpringBoot

什麼是 Spring Boot?

Spring Boot 有哪些優點?

Spring Boot 的核心註解是哪個?它主要由哪幾個註解組成的?

Spring Boot 自動配置原理是什麼?

你如何理解 Spring Boot 配置載入順序?

什麼是 YAML?

YAML 配置的優勢在哪裡 ?

Spring Boot 是否可以使用 XML 配置 ?

spring boot 核心配置檔案是什麼?bootstrap.properties 和 application.properties 有何區別 ?

等等......

效能優化之Mysql

MySQL的複製原理以及流程

MySQL中myisam與innodb的區別

MySQL中varchar與char的區別以及varchar(50)中的50代表的涵義

innodb的事務與日誌的實現方式

MySQL binlog的幾種日誌錄入格式以及區別

你們資料庫是否支援emoji表情,如果不支援,如何操作?

你是如何監控你們的資料庫的?你們的慢日誌都是怎麼查詢的?

InooDB和MyISAM的select count(*)哪個更快,為什麼

mysql為什麼用自增列作為主鍵

B+樹索引和雜湊索引的區別

Mysql優化

效能優化之JVM

什麼情況下會發生棧記憶體溢位

詳解JVM記憶體模型

JVM記憶體為什麼要分成新生代,老年代,持久代。新生代中為什麼要分為Eden和Survivor。

JVM中一次完整的GC流程是怎樣的,物件如何晉升到老年代

你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms和G1,包括原理,流程,優缺點。

JVM記憶體模型的相關知識瞭解多少,比如重排序,記憶體屏障,happen-before,主記憶體,工作記憶體。

簡單說說你瞭解的類載入器,可以打破雙親委派麼,怎麼打破。

JVM優化

效能優化之tomcat

Tomcat的預設埠是多少,怎麼修改?

tomcat 有哪幾種Connector 執行模式(優化)?

Tomcat有幾種部署方式?

tomcat容器是如何建立servlet類例項?用到了什麼原理?

tomcat 如何優化?

分散式通訊之Netty

Netty 是什麼?是否使用過Netty?

Netty 的特點是什麼?

什麼是 Netty 的零拷貝?

Netty 的優點?

Netty 的應用場景?

Netty 高效能表現在哪些方面?

Netty 中有那種重要元件?

Netty 傳送訊息有幾種方式?

預設情況 Netty 起多少執行緒?何時啟動?

分散式服務治理之Dubbo

Dubbo是什麼?為什麼要用Dubbo?

Dubbo 和 Spring Cloud 有什麼區別?

dubbo都支援什麼協議,推薦用哪種?

Dubbo內建了哪幾種服務容器?

Dubbo裡面有哪幾種節點角色?

Dubbo預設使用什麼註冊中心,還有別的選擇嗎?

Dubbo主要的配置項有哪些,作用是什麼?

Dubbo有幾種容錯機制

dubbo的服務降級

dubbo的優先順序配置

等等......

註冊中心Zookeeper

ZooKeeper 是什麼?

ZooKeeper 提供了什麼?

Zookeeper 檔案系統

ZAB 協議?

四種類型的資料節點 Znode

Zookeeper Watcher 機制 -- 資料變更通知

客戶端註冊 Watcher 實現

服務端處理 Watcher 實現

客戶端回撥 Watcher

zookeeper 是如何保證事務的順序一致性的?

分散式叢集中為什麼會有 Master?

zk 節點宕機如何處理?

zookeeper 負載均衡和 nginx 負載均衡區別

Zookeeper 有哪幾種幾種部署模式?

等等......

MongoDB

NoSQL資料庫有哪些型別?

MySQL與MongoDB之間最基本的差別是什麼?

分析器在MongoDB中的作用是什麼?

MongoDB在A:{B,C}上建立索引,查詢A:{B,C}和A:{C,B}都會使用索引嗎?

MongoDB支援儲存過程嗎?如果支援的話,怎麼用?

如何理解MongoDB中的GridFS機制,MongoDB為何使用GridFS來儲存檔案?

分片(sharding)和複製(replication)是怎樣工作的?

資料在什麼時候才會擴充套件到多個分片(shard)裡?

如果在一個分片(shard)停止或者很慢的時候,我發起一個查詢會怎樣?

等等......

Redis

Redis 持久化機制
快取雪崩、快取穿透、快取預熱、快取更新、快取降級等問題
熱點資料和冷資料是什麼
Memcache與Redis的區別都有哪些?
單執行緒的redis為什麼這麼快
redis的資料型別,以及每種資料型別的使用場景,Redis 內部結構
redis的過期策略以及記憶體淘汰機制
Redis 為什麼是單執行緒的,優點
如何解決redis的併發競爭key問題
Redis 叢集方案應該怎麼做?都有哪些方案?
有沒有嘗試進行多機redis 的部署?如何保證資料一致的?
對於大量的請求怎麼樣處理
Redis 常見效能問題和解決方案?
講解下Redis執行緒模型
為什麼Redis的操作是原子性的,怎麼保證原子性的?
Redis事務
Redis實現分散式鎖

等等......

SpringCloud

什麼是SpringCloud?使用 Spring Cloud 有什麼優勢?

服務註冊和發現是什麼意思?Spring Cloud 如何實現?

負載平衡的意義什麼?什麼是Ribbon?

什麼是 Hystrix?它如何實現容錯?

什麼是 Netflix Feign?什麼是Open Feign?

什麼是 Spring Cloud Bus?

什麼是服務熔斷?什麼是服務降級?

Eureka和zookeeper之間的區別

什麼是Spring Cloud Gateway?

什麼是 zuul路由閘道器?

什麼是分散式配置中心?

等等......

kafka

為什麼要使用 kafka,為什麼要使用訊息佇列

Kafka中的ISR、AR又代表什麼?ISR的伸縮又指什麼

kafka中的broker 是幹什麼的

kafka follower如何與leader同步資料

ZooKeeper在Kafka中的作用是什麼?

ZooKeeper在Kafka中的作用是什麼?

Kafka 的 producer 工作流程

Kafka 的 consumer 工作流程

資料丟失和重複消費的場景

Kafka 的資料丟失,高可靠性和一致性是怎麼實現的

consumer 端資料丟失、資料重複消費如何解決

等等......

rabbitMQ

什麼是RabbitMQ?

rabbitmq 的使用場景

RabbitMQ基本概念

RabbitMQ的工作模式

如何保證RabbitMQ訊息的順序性?

訊息如何分發?

訊息怎麼路由?

訊息基於什麼傳輸?

如何保證訊息不被重複消費?或者說,如何保證訊息消費時的冪等性?

如何確保訊息正確地傳送至 RabbitMQ?如何確保訊息接收方消費了訊息?

等等......

rocketMQ

RocketMQ 由哪些角色組成?

RocketMQ執行流程

請說說你對 Producer 的瞭解?

說說你對 Consumer 的瞭解?

消費者消費模式有幾種?

消費者獲取訊息有幾種模式?

什麼是定時訊息?如何實現?

RocketMQ 如何保證高可用的?

如何保證訊息不被重複消費?或者說如何保證訊息消費時的冪等性?

如何保證訊息的可靠性傳輸?要是訊息丟失了怎麼辦?

如何保證訊息的順序性?

如何解決訊息佇列的延時以及過期失效問題?

訊息佇列滿了以後該怎麼處理?有幾百萬訊息持續積壓幾小時,說說怎麼解決?

等等......

分庫分表之Mycat,ShardingSphere

Mycat是什麼?Mycat的原理?

ShardingSphere是什麼?ShardingSphere的原理?

什麼是水平拆分?什麼是垂直拆分?

解釋一下全域性表,ER表,分片表?

進行庫表拆分時,拆分規則怎麼取捨?

說一說Mycat和ShardingSphere的區別,如何選擇?

等等......

併發程式設計

併發程式設計的優缺點

執行緒和程序區別

建立執行緒的四種方式

Java記憶體模型

併發關鍵字synchronized,volatile,final

什麼是CAS,AQS,ReentrantLock,

ReentrantReadWriteLock

併發容器之ConcurrentHashMap,SynchronizedMap,CopyOnWriteArrayList,ThreadLocal,BlockingQueue,ConcurrentLinkedQueue,ArrayBlockingQueue與LinkedBlockingQueue

執行緒池相關問題

併發工具

等等......

併發程式設計相關知識點問了很多,就不一一列舉了,反正問的我很懵逼~

Nginx

什麼是Nginx,作用是什麼?

Nginx自帶支援的負載均衡法則

Nginx怎樣配置動靜分離伺服器

Nginx安全配置方式

fastcgi 與 cgi 的區別?

Nginx 常用命令?

什麼是正向代理和反向代理

Nginx 如何處理 HTTP 請求

Nginx 是如何實現高併發的等等......

Docker&K8s

什麼Docker,和虛擬機器有什麼區別?

什麼是Docker映象

Docker容器有幾種狀態

解釋一下dockerfile的ONBUILD指令

如何在生產中監控Docker

什麼是Kubernetes?與Docker有什麼關係?

Kubernetes如何簡化容器化部署?

你對Kubernetes的叢集瞭解多少?

Docker和K8s相關的知識點問的比較少,就大致瞭解了一下。

相關問題答案

有需要的朋友可以幫忙點贊’+關注,加助理VX:mxx2020666,即可免費領取