面试指南|面试指南(三):想跳槽,这些问题你会了吗()

前言

  • 面试指南一和二中为大家分享了换工作原因,背后思考,以及我珍藏多年的压箱底的技术体系;
  • 本篇博文继续为大家带来面试过程中哪些灵魂拷问;
  • 郑重声明:这些面试问题并不是为了让大家在面试前进行突击,而是通过这些问题去检验自己面试前的准备,做到查漏补缺。
面试指南系列
  • 面试指南(一):想跳槽,你真的做好准备了吗?
  • 面试指南(二):想跳槽,这些技术点你会了吗?
  • 面试指南(三):想跳槽,这些问题你会了吗?
灵魂拷问
自我介绍(给人第一印象十分重要) 突出重点
  • 业务类型
  • 团队规模
  • 负责项目中部分
个人亮点展示
  • 坚持写blog
  • github开源项目
控制时间
  • 3-5分钟最佳
以我为例
  • 主导业务系统建设:云平台迁移 、自动化打包平台 、通用业务平台 等等
  • 主导技术调研&实施:延时任务、日志收集系统、灰度发布、定时任务、监控平台 等等
  • 亮点 :持续输出博客 专注于开源
技术相关问题 Java基础相关
  • 说说你对内存溢出理解(内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程))
  • 线上jvm用的什么收集器
    • jdk8默认,新生代 老年代 cms
    • cms 垃圾收集器有什么缺点-四个过程
    • cms采用什么算法?新生代 采用复制算法 标记清除(内存碎片) 标记整理 响应优先
  • 常见的IO模型
    • 着重介绍一下BIO,NIO,AIO
    • 介绍非阻塞IO
    • 为什么用Netty不用jdk中自带的NIO
      • Netty做的比较多比较好 Netty提供常用协议 编码器 解编码 零拷贝
      • 拓展protobuf
    • jdk中排他锁,共享锁
      • jdk在并发库中哪些是排它锁,共享锁;AQS
    • guava本地缓存
  • 进程,线程,协程 区别
  • java.util.lang 实现排序,快排,堆排
    • ArrayList,LinkedList,Vector(性能差)
    • 并发版本控制List
    • 可重入锁,java中有没有实现不可重入锁,如何实现不可重入锁
中间件相关
  • nginx,redis,MQ,mysql的一个并发量级
    • nginx 百万级
    • redis 十万级
    • MQ
      • kafka rocketmq 十万级
      • rabbit MQ 万级
    • mysql 千级 3000左右
  • 幂等场景及解决方案
    • 常见的消费端回执丢失导致重复消费-UUID表事务,分布式锁
    • 发送端多次发送,顺便讲了下Kafka的架构以及其中可能消息丢失的点
    • 天然具有幂等情况也说了下(性别由男->女等)
    • 多线程编程
      • 锁,死锁是怎么产生,如何解决
      • 解决死锁常见的手段
        • 上锁的时候把两个资源都占用上,如果占用不上可以用CAS机制 主动释放
        • 强制释放
    • jwt
    • spring security
    • mysql
      • MySQL分库分表依据
        • 横拆 按id求余
        • 竖拆
      • 先介绍一下了解mysql
        • mysql索引底层数据结构选型(参考博文 博文1)
        • innodb和mysiam区别
        • innodb做聚簇索引,主键,非空唯一索引,默认指定
        • 回表优化两个sql区别—mysql回表概念
      • 索引下推,联合索引 最左原则
      • 脏读,不可重复读,幻觉
      • 读未提交,读已提交,可重复读,串行化 底层实现原理
      • 举一个覆盖索引例子,不用回表查
      • 分库分表 mycat做的,分布式id用的什么做
        • mysql 批量生成
        • mongo生成id
        • 雪花算法,两个问题
          • 时钟回拨
          • 机器码回收
    • Redis
      • Redis五种数据类型
      • Redis中 String 底层存储 用的sds 预分配内存
      • Redis的Zset的有两种顺序,一个是id一个是score,说一下两者底层上的存储
        • 跳表 是解决 问题 查找范围内数据快一点?还是排序
    • Redis,MySql,为什么Redis比MySQL快一点
      • Mysql innodb索引 B+树 聚集索引 Mysiam B+树 非聚集索引
      • 索引为什么B+树而不是二叉树 B+树 的树矮 减少IO次数
    • 【面试指南|面试指南(三):想跳槽,这些问题你会了吗()】队列中哪些用的比较多?MQ类型比MySQL的吞吐量大?
      • MySQL的关系型数据ACID保证事务等
      • 顺序读写比随机读写快
      • 集群:主从、哨兵、cluster
      • key的流转流程:动态扩容,动态缩容如何key,正好在迁移的时候如何用
      • cluster用mget,mset有什么问题
      • redis的管道
      • 集群的时候movin,ack错误
      • 基本数据结构:string、list、hash、set、zset、geohash、bitmap
      • redis存储优化:protobuf
      • 内存过期策略,淘汰策略
      • redis4.0之后优化,删除大value内存淘汰优化
    • 说一个你熟悉的地方,我说的是kafka
      • 如何做到消息不丢失
      • offset提交模式
  • 讲讲eureka
  • 调用链监控-大众点评cat底层原理
  • 说一下ES这块儿
  • 分布式事务-最终一致性-幂等
  • 什么地方用到热插拔-日志
其他问题
  • 加解密用的算法,为什么不用非对称加密算法(C++增加性能)
  • post,get请求如何区分,get请求的数据量限制不是http限制而是浏览器限制
  • http请求用到 resttemplate,httpclient
  • 七层网络
  • 爬取百亿级别的url,如何判断是否已经有; 我的思路(参考博文)
    • 生成hash; 问:生成hash具体算法
    • 存到redis中,set; 问:这么大量级都放到一个key中吗?
  • 策略模式,lamda函数式实现策略模式
    • 责任链模式
  • 工作流
  • js闭包,js阻塞代码
  • css,span加style变成div同样效果
  • html 事件冒泡,触发父子元素
  • 单元测试
    • junit 单元测试时如何不依赖数据库,通过mock对象
    • sonar
    • 分布式情况下单元测试如何做
  • 系统设计和系统开发区别
    • 系统设计好了有助于开发
    • 开发过程中去完善设计的不足
项目相关问题
  • 开发的人数
  • 负责项目中功能(技术经历)
  • 项目人数
  • 印象深刻的问题
  • 流程不同如何实现-工作流(框架)
  • 用户量,日活
  • 比较熟悉的业务
  • 数据量大小
  • 每秒访问量 QPS
  • 在公司职位
  • 公司主要做什么,系统主要做什么
  • 公司规模
  • 平台架构
  • 服务模块
  • 项目技术架构需要提升点
职业相关
  • 毕业情况(初入职场考察占比会大一些)
  • 离职原因
    • 跳出舒适区
    • 公司业务类型和个人发展规划不符
  • 期望薪资
    • 按照现在的薪资自己目标的涨幅
  • 未来规划
    • 短期,中期,长期
    • 技术,管理
  • 擅长哪方面
  • 有什么缺点
  • 最失败一件事
  • 带新人注意事项
  • 舒适区理解
  • 有什么需要问公司
    • 团队规模
    • 业务类型
总结
  • 强烈建议可以找个做技术的朋友去模拟对自己进行面试,进去全程录音,听自己哪里说的需要继续完善,以此往复
  • 大家可以在评论区中发出自己遇到的一些灵魂拷问
  • 预祝正在准备面试的朋友们可以找到一个符合自己成长预期的好职位,快速成长

    推荐阅读