Experience

Siona

Experience

大厂技术面试考察点
1. 基础知识
2. 技术广度
3. 技术深度
4. 项目经验
5. 团队管理
6. hr -- 参考技术面试评价,学历,背景,软技能,人品 → 技术评级


技术范围
1. 算法与数据结构(应届生必问)
2. JVMMySQL 优化、JDK 源码、Linux、操作系统
3. 项目
4. 分布式架构:分布式 session、分布式事务、分布式锁、RPC 调用、接口幂等性、分库分表
5. 微服务:
    - Spring Cloud: Gateway, Eureka, OpenFeign, Ribbon
    - Spring Cloud Alibaba: Nacos, Dubbo, Sentinel, Seata 


面试优化及面试指导

一、自我介绍
六年以上大型互联网电商与金融项目研发经验,对大型互联网电商的后端架构和整体业务有
深入的理解,三年以上团队研发管理经验,对分布式,高并发,高可用,微服务架构设计有
深度理解,曾负责过注册用户上亿,日活近500万的电商平台的架构设计与研发。对IT技术
有较浓厚的兴趣,喜欢跟踪与钻研新技术以及底层实现。有深入研究过Zookeeper
DubboNettySpring以及Spring Cloud等开源框架的源码。

二、掌握技术技能(引导面试官发问)
1. Java 基础扎实,掌握 JVM 原理、多线程、网络原理、设计模式、常用数据结构和算法。
2. 深入理解 SpringSpringMVCMyBatis 等开源框架设计原理及底层架构,研究过部分核心功能源码,具备一定的框架定制开发能力。
3. 深入理解 Redis 线程模型,熟练掌握 Redis 的核心数据结构的使用场景,熟悉多级缓存架构,
   熟悉各种缓存高并发的使用场景,比如缓存雪崩、缓存穿透、缓存失效、热点缓存重建等。
4. 熟悉常见消息中间件的使用,解决过各种消息通信场景的疑难问题,比如消息丢失、消息重复消费、消息顺序性、大规模消息积压问题。
5. 对于高性能 IO 通信模型以及相关开源组件 Netty 等源码有过深度研究,熟悉 Netty 线程模型,
   熟悉百万级并发服务器架构设计。
6. 深入理解 JVM 底层原理,熟悉 JVM 各种垃圾收集器的使用以及核心参数的调优,有过一定的 JVM 线上调优经验,
JVM 调优有自己独到见解。
7. 深入理解 SpringBootSpringCloudDubbo 等微服务框架的设计原理及底层架构,研究过核心源码,
   熟悉各种微服务架构场景设计。比如,服务注册与发现,服务限流、降级、熔断,服务网关路由设计,服务安全认证架构。
8. 在项目中解决过各种分布式场景的技术难题,比如分布式锁,分布式事务,分布式 session,分布式任务,海量数据的分库分表 ……


三、项目经验
1. 做过类似电商项目
2. 没做过类似电商项目,银行内部项目,OAERP,内部管理系统。
   想下自己做过的项目如果压力暴增 100 倍,现有系统是否能抗住,如果扛不住应该怎么优化?
   用哪些技术?试着将一些主流技术应用到自己项目中,可以写到自己简历中。例如,JVM 以及 MySQL 的优化。
3. 如果一些技术实在用不上,可以说之前有跟朋友兼职做过 xxx 系统。
   这种系统压力一般不会太大,可以在系统优化上写,
   比如,把 gc 的次数和时间由多少优化到了多少,
QPS 之类的由多少优化到了多少。


项目细节点
1. 项目大题情况
2. 项目软硬件技术架构
3. 项目大体规模,多少人参与,并发量与数据量多大,你在其中的角色

    - gateway: 816 G,抗住每秒 2000+ 请求
               3264 G,抗住每秒上万请求,支撑 1w+ 请求
               5816 G,支撑 10w+ 请求
               103264 G
               
    - web 服务:需要根据业务的复杂度来看,一般就单台几百 ~ 几千的并发
    - 缓存 Redis:单台几万的并发,要么用集群架构可以到几十万并发
    - 数据库:正常 816 G 抗个大几百并发问题不大,
             如果并发提高 10 倍到 4,5k,要么分库分表横向扩容,要么增大机器配置,
             比如 3264 G 高配物理机,抗个 4,5k 并发问题不大 

    - 线上实时 QPS 等性能指标计算
    
4. 项目的分布式,缓存,消息,高可用,调优,性能监控
   以秒杀下单核心链路举例,看下各环节做了哪些事情,为了解决什么问题。
1)缓存
       - 缓存架构
       - 缓存穿透,雪崩,失效
2)消息
       - 消息中间件选型
       - 消息服务高可用
       - 消息重复消费
       - 丢消息
       - 消息积压
3)分布式
       - 为什么要分布式、微服务?
       - 注册中心用的什么?服务注册与发现原理是什么?
       - 注册中心如果出问题或挂了怎么办?服务直接还能继续通信吗?
       - 微服务直接调用负载均衡策略有哪些?
       - 超卖问题的分布式锁实现原理,Redis 与 zk 实现优劣对比。
       - 分布式 session 怎么做的?
       - 核心交易链路分布式事务
       - 分库分表,全局序列 ID 方案
4)高可用
       - 核心服务链路的限流、熔断、降级
       - 服务雪崩,资源隔离
5)调优
       - JVM
       - MySQL
       - Redis
       - 分布式
       - 微服务分布式中间件的参数调优等
6)服务监控
       - 
       
5. 项目中的难点以及优化改进点
    - 分布式锁高并发优化
    - 缓存与数据库双写不一致
    - 消息积压处理
    - 降级操作的数据补偿
    - 服务扩容 
    - 核心服务全链路保证高可用
    - 复杂业务设计(DDD架构)


四、 获奖经历


面试之前充分了解公司,面试完问下公司的技术栈及公司业务。

项目及主要负责的模块 ⭐️⭐️⭐️⭐️⭐️

1. 平时多了解一下目前在做的项目中的核心模块,核心功能的业务与使用到的技术

画出项目架构图,介绍自己所处的模块

聊聊你最有成就感的项目 ⭐️⭐️⭐️⭐️⭐️

1. 项目是做什么的?
2. 用了什么技术?
3. 你在项目中担任的职位
4. 收获了什么?

自己最有挑战的项目、难点 ⭐️⭐️⭐️⭐️⭐️

1. 使用什么技术解决了什么项目难点?
2. 使用什么技术优化了什么项目功能?
3. 使用什么技术节省了多少成本?

遇到过哪些设计模式?

项目中缓存怎么用的?

分布式锁在项目中用过吗?

为什么要进行系统拆分?如何进行系统拆分?

什么是微服务?微服务之间是如何独立通讯的?

如何设计一个高并发的系统?

如何限流?在工作中怎么做的?说一下具体实现?

分库分表(业务侧)

分库分表(数据侧)

C10k 问题。如何解决?

Maven 中 package 和 install 区别

package → 打包,打成 jar / war
install → 将 jar / war 安装到本地仓库中

⭐️代表提及的概率

Last Updated 8/22/2024, 12:02:51 PM