zoukankan      html  css  js  c++  java
  • 面试内容

    1、项目

    项目对于一个定位中、高级的开发来说是非常重要的,面试官也非常看重这一块。这个经验的开发基本是各大公司的编码主力,因此面试这个年限的候选人,通常项目是很重要的一块。面试官通常会让你先自己介绍下自己参与度最高(或者最牛逼)的项目,然后从中进行提问。常见的如以下:

    • 介绍下你参与度最高的项目
    • 画下项目的架构图
    • 如果核心流程处理到一半,服务器崩溃了,会怎么处理
    • 项目中遇到过哪些挑战或问题,怎么解决的
    • 项目的稳定性和可用性怎么保障
    • 数据安全这块怎么设计
    • 项目的技术选型,为什么选这些

    2、场景题

    越到后面的面试官,越喜欢问场景题,场景题比较考验候选人平时的积累和解决问题能力。这个环节很容易挂掉一批人,特别是容易紧张的同学,很容易脑子会一片空白。场景题的核心一般是处理大数据量的问题、解决性能方面的问题。

    场景题本质上是比较开放的,没有什么标准答案,只要自己的方案能够解决问题,能够“自圆其说”就行。

    这个环节面试官可能会将线上真实的场景拿出来提问,我自己就遇到过。

    3、专业技能

    集合

    • 经常用到哪些 Map
    • 这几种 Map 的区别
    • CocurrentHashMap 怎么保证线程安全
    • CocurrentHashMap 在 JDK 1.8 前后的锁有什么区别
    • 聊下 HashMap 的原理
    • HashMap 在 Put 时,新链表节点是放在头部还是尾部
    • HashMap 扩容时的流程
    • HashMap 在 JDK 1.8 有什么改变
    • CocurrentHashMap 在 JDK 1.8 有什么改变
    • TreeMap 的原理
    • Map、List、Set 分别说下你知道的线程安全类和线程不安全的类

    多线程、锁

    • 线程池使用的是哪种
    • 线程池参数怎么配置
    • 线程池各个参数的作用
    • 线程池的参数配置要注意什么
    • 线程池的工作流程
    • JDK 中的并发类知道哪些
    • AQS 的底层原理
    • 介绍下悲观锁和乐观锁
    • 使用过哪些锁
    • synchronized 和 Lock 的区别、使用场景
    • synchronized 原理
    • synchronized 作用于静态方法、普通方法、this、Lock.class 的区别
    • 为什么引入偏向锁、轻量级锁,介绍下升级流程
    • 死锁的必要条件,如何预防死锁
    • 介绍下 CountDownLatch 和 CyclicBarrier
    • 介绍下 CAS,存在什么问题
    • 介绍下 ThreadLocal,存在什么问题

    网络

    • HTTPS 是怎么加密的
    • 普通 Hash 和一致性 Hash 原理
    • 一致性 Hash 的缺点
    • TCP 三次握手过程,为什么需要三次握手
    • 为什么 TIME_WAIT 状态需要经过 2MSL 才能返回到 CLOSE 状态
    • TCP 的拥塞控制
    • TCP 如何解决流控、乱序、丢包问题
    • 为什么会出现粘包和拆包,如何解决

    spring、Mybatis

    • Mybatis 中 # 和 $ 的区别
    • 怎么防止 SQL 注入
    • 使用 Mybatis 时,调用 DAO(Mapper)接口时是怎么调用到 SQL 的
    • 介绍下 Spring IoC 的流程
    • BeanFactory 和 FactoryBean 的区别
    • Spring 的 AOP 是怎么实现的
    • Spring 的事务传播行为有哪些,讲下嵌套事务
    • 什么情况下对象不能被代理
    • Spring 怎么解决循环依赖的问题
    • 要在 Spring IoC 容器构建完毕之后执行一些逻辑,怎么实现
    • @Resource 和 @Autowire 的区别
    • @Autowire 怎么使用名称来注入
    • bean 的 init-method 属性指定的方法里用到了其他 bean 实例,会有问题吗
    • @PostConstruct 修饰的方法里用到了其他 bean 实例,会有问题吗
    • Spring 中,有两个 id 相同的 bean,会报错吗,如果会报错,在哪个阶段报错
    • Spring 中,bean 的 class 属性指定了一个不存在的 class,会报错吗,如果会报错,在哪个阶段
    • Spring 中的常见扩展点有哪些

    MySQL

    • MySQL 索引的数据结构
    • 为什么使用 B+ 树,与其他索引相比有什么优点
    • 各种索引之间的区别
    • B+ 树在进行范围查找时怎么处理
    • MySQL 索引叶子节点存放的是什么
    • 联合索引(复合索引)的底层实现
    • MySQL 如何锁住一行数据
    • SELECT 语句能加互斥锁吗
    • 多个事务同时对一行数据进行 SELECT FOR UPDATE 会阻塞还是异常
    • MySQL 使用的版本和执行引擎
    • MySQL 不同执行引擎的区别
    • MySQL 的事务隔离级别
    • MySQL 的可重复读是怎么实现的
    • MySQL 是否会出现幻读
    • MySQL 的 gap 锁
    • MySQL 的主从同步原理
    • 分库分表的实现方案
    • 分布式唯一 ID 方案
    • 如何优化慢查询
    • explain 中每个字段的意思
    • explain 中的 type 字段有哪些常见的值
    • explain 中你通常关注哪些字段,为什么

    JVM

    • 运行时数据区
    • 服务器使用的什么垃圾收集器
    • CMS 垃圾收集的原理
    • G1 垃圾收集的特点,为什么低延迟
    • 有哪些垃圾回收算法,优缺点
    • 哪些对象可以作为 GC Roots
    • 有哪些类加载器
    • 双亲委派模式,哪些场景是打破双亲委派模式
    • 线上服务器出现频繁 Full GC,怎么排查
    • 定位问题常用哪些命令
    • 介绍下 JVM 调优的过程

    Kafka

    • 为什么使用 Kafka
    • 介绍下 Kafka 的各个组件
    • 如何保证写入 Kafka 的数据不丢失
    • 如何保证从 Kafka 消费的数据不丢失
    • Kafka 为什么性能这么高
    • 零拷贝技术使用哪个方法实现
    • Java 中也有类似的零拷贝技术,是哪个方法
    • Kafka 怎么保证消息的顺序消费
    • Kafka 怎么避免重复消费
    • 什么是 HighWatermark 和 LEO
    • 什么是 ISR,为什么需要引入 ISR

    Redis

    • 项目中使用的 Redis 版本
    • Redis 在项目中的使用场景
    • Redis 怎么保证高可用
    • Redis 的选举流程
    • Redis 和 Memcache 的区别
    • Redis 的集群模式
    • Redis 集群要增加分片,槽的迁移怎么保证无损
    • Redis 分布式锁的实现
    • Redis 删除过期键的策略
    • Redis 的内存淘汰策略
    • Redis 的 Hash 对象底层结构
    • Redis 中 Hash 对象的扩容流程
    • Redis 的 Hash 对象的扩容流程在数据量大的时候会有什么问题吗
    • Redis 的持久化机制有哪几种
    • RDB 和 AOF 的实现原理、优缺点
    • AOF 重写的过程
    • 哨兵模式的原理
    • 使用缓存时,先操作数据库还是先操作缓存
    • 为什么是让缓存失效,而不是更新缓存
    • 缓存穿透、缓存击穿、缓存雪崩
    • 更新缓存的几种设计模式

    Zookeeper

    • Zookeeper 的使用场景
    • Zookeeper 怎么实现分布式锁
    • Zookeeper 怎么保证数据的一致性
    • ZAB 协议的原理
    • Zookeeper 遵循 CAP 中的哪些
    • Zookeeper 和 Eureka 的区别
    • Zookeeper 的 Leader 选举
    • Observer 的作用
    • Leader 发送了 commit 消息,但是所有的 follower 都没有收到这条消息,Leader 就挂了,后续会怎么处理

    分布式

    • CAP 理论
    • BASE 理论
    • 分布式事务 2PC 和 TCC 的原理
    • TCC 在 cancel 阶段如果出现失败怎么处理
    • Paxos 算法、Raft 算法

    4、Hr 面

    如果你一路过五关斩六将,最终来到了 Hr 面,那么恭喜你,你已经离 offer 非常非常近了。可以开始畅想自己升职加薪,当上总经理,出任 CEO,迎娶白富美,走上人生巅峰的场景了。

    Hr 面主要是了解候选人的一些通用素质,经常会问的问题如下:

    • 介绍下自己投入最多的项目(当时我就惊了,Hr 也开始问项目了)
    • 离职的原因
    • 当前的薪资、绩效
    • 当前在面试的其他公司的情况
    • 平时有没有学习的习惯,怎么学习的,现在在学习什么
    • 未来的规划
  • 相关阅读:
    自制 os 极简教程1:写一个操作系统有多难
    面试官问我redis数据类型,我回答了8种
    全网最硬核讲解计算机启动流程
    cinder-volume Required RPC API Old
    Docker swarm 容器流量追踪
    postgres schema访问权限设置
    骑士cms < 6.0.48任意文件包含漏洞简记
    Socket学习
    网络编程
    交换机和路由器的区别
  • 原文地址:https://www.cnblogs.com/sfbrzkh/p/13610979.html
Copyright © 2011-2022 走看看