高德 面经

一面

Java 基础 & 核心

  1. 你觉得用的比较熟练的技术栈/基础中间件有哪些?(除了 Java 和 Spring/Spring Cloud Alibaba)还用到了其他的中间件吗?消息队列是 Kafka 吗?
  2. Java 的多态是怎么实现的?(底层原理方面)
  3. Java 里面的泛型是什么?
  4. 类型擦除是个什么样的机制?怎么理解这个东西?
  5. (泛型擦除后)声明一个 List<Integer>,编译完之后可以往里面放 String 类型吗?为什么不能放?是谁控制的?
  6. 用过 Java 里面的反射没?
  7. 反射有几个基本的类是什么?(面试官提示“三驾马车”,但候选人不清楚这个说法,后续追问具体类)
  8. 我们可以怎么获得那个 Class 实例?(class.forName之外还有吗?)
  9. 类名.class 是啥意思?
  10. 你了解过哪些场景比较适合用反射吗?
  11. AOP 的两种实现方式(JDK 和 CGLib)了解吗?它们有什么区别?
  12. (提到 Byte Body)它基于是怎么实现的?那 CGLib 不也是基于字节码吗?为什么重新写一个 Byte Body?它在哪方面优化会变得更好?

Java 并发 & 线程池

  1. Java 里面线程池创建的时候有几个基本的参数?都有哪些?
  2. 什么时候拒绝策略会生效?
  3. (针对候选人实践)为什么你们要把核心线程数和最大线程数设置成相等?是怕影响什么?(不让扩容的原因)
  4. (针对候选人实践)你们(核心=最大)不销毁线程是吗?最大的(线程数)会有多大?
  5. (针对候选人实践)你们是 CPU 密集型?没有 IO 密集型?(查 RDB 也算 IO)
  6. (针对候选人实践)你们没有一点复杂点的场景吗?(暗示业务简单)
  7. 假设(需要)处理业务(IO密集型),你还会这么配(核心=最大)吗?
  8. 如果有 IO 密集型,核心和最大不一样,那你的拒绝策略什么时候生效呢?
  9. (举例:核心4,最大9)来第五个任务的时候会怎么办?
  10. 我想去实时的监控这个线程池里面有多少处于活动的线程,可以怎么做?
  11. (如果让你实现动态线程池/监控)你有什么思路吗?
  12. 线程池里面他怎么记录有多少个线程的,你知道吗?(Worker 类相关)

JVM

  1. JVM 的运行时数据区域有哪些?
  2. 堆里面存什么东西?
  3. 那个虚拟机栈(虚拟基站)里面会存什么?
  4. (栈执行流程)当执行完 C 方法的时候,我怎么能找到 B 呢?
  5. 你们项目在发布运行过程中用的都是什么垃圾回收算法?(G1 还是 CMS)
  6. (如果用 CMS)为什么不统一用 G1?(追问 CMS 的问题,如参数调优复杂、STW)
  7. G1 和 CMS 相比有什么优势?(可控的停顿时长)
  8. G1 能保证那个(最大回收)时长固定吗?

Spring & Spring Boot

  1. Spring Boot 解决了什么问题?(区别于 Spring Framework)
  2. Spring 的 Bean 的生命周期有什么?(从产生到销毁有哪些阶段)

数据库 (MySQL)

  1. MySQL 支持事务吗?
  2. 事务的 4 大特性(ACID)是什么?
  3. 事务隔离级别有哪些?
  4. 幻读是个什么现象?
  5. 刚才提到的那几种隔离级别里面哪些会有幻读,哪些没有幻读?
  6. SQL 里面的主从复制那个机制是什么样子的?
  7. 为什么(主从复制)要让从库去向主库请求(拉模式),而不是主库向从库去做广播(推模式)?你觉得哪种会比较好一点?
  8. (如果用 MQ 类中间件转发 binlog)这种方式有什么问题?(如顺序性、数据丢失、实时性、主库无法感知同步状态等)

缓存 (Redis)

  1. Redis 有哪些数据类型?
  2. 我想要实现一个可以按照时间范围来查找订单的结构,用 Redis 里面怎么来做?
  3. (用 Sorted Set 实现按时间范围查找)只能用这种吗?List 可以吗?
  4. (如果用 List)一个 Key 会产生大 Key 问题,(如果不用 List)最好还是用 Sorted Set 会好点?
  5. 你用 Sorted Set 的话,它的查询的复杂度是啥?(LogN 还是 NLogN 或 M+LogN)

算法 & 编程题

  1. 做一个支持权重的负载均衡的算法。(提供代码框架,要求实现 getHost 方法)
  2. (针对代码实现)来讲一下你的思路。
  3. (针对代码实现)第 49 行,这里小于等于可以吗?为什么取(随机数时)左闭右开区间?(追问边界条件和小数精度问题)

二面

  1. 关于登录态 token 校验模块:你能大概介绍一下你具体你们是怎么做的吗?怎么保证它的这个高可用?
  2. 既然有了本地可以来做(token)解密校验的话,还需要 Redis 吗?
  3. 多端互踢是为了(什么)?为什么要有一个这样的机制?
  4. 为什么不能让他(用户)多个渠道能同时登录?
  5. 关于二级缓存(本地 Caffeine + Redis):这个具体是怎么做的?(第一层基于 ID,第二层具体实现)
  6. 你们这个活动(查询)的 QPS 大概有多高?
  7. 什么时候会查这个(活动)?它是什么场景触发的查询?
  8. 货拉拉的下单(场景)有 7 万的 QPS 吗?(对候选人提供数据的确认/质疑)
  9. 本地缓存存的是什么东西?
  10. 订单 ID 跟活动 ID 的关联关系也在本地缓存里存了吗?
  11. Redis 里面也是存的同样的结构是吧?
  12. 你们有多少台机器?本地缓存的命中率呢?
  13. (司机看单)每次都会查(活动)吗?你们的上游(调用方)不会做缓存吗?
  14. 一个订单下面有那么多活动 ID,然后每个司机看到命中的活动还(会)不一样吗?
  15. (针对缓存优化)用 get + 本地(缓存)代替 mget:为什么要做这个事情?
  16. 你觉得这个(get 代替 mget)有做优化吗?这个替换本身是合理的吗?
  17. (用 get 查询缺失 key)是串行的还是并行的?
  18. 那(如果 get 是)并行的,跟 mget(相比),那为什么不用 mget 呢?
  19. 你们这个接口 RT 减了 200 毫秒,是收益是从哪里来的?
  20. 你觉得它主要的收益点是(因为)你们的哪个优化动作(降低了 200 毫秒)?

技术方法论 & 问题排查

  1. 当你接到一个新任务,或者接触一个新的模块/系统时,你是怎么来着手做这个工作的?(可以结合活动模块来说)
  2. (针对服务治理任务)你梳理的那个系统,你觉得有啥问题吗?
  3. 你梳理超时时间,有总结出什么经验来?你觉得超时时间应该怎么配合适吗?
  4. (默认超时时间)500 毫秒怎么来的?
  5. 你觉得这个(500 毫秒超时)合理吗?

基础知识 & 对比

  1. 你们内部的交互是用的 RPC 是吧?能大概讲一下 RPC 跟 HTTP 的差别吗?
全部评论
内部是rpc交互吗
点赞 回复 分享
发布于 04-29 18:18 北京

相关推荐

04-22 01:19
复旦大学 Java
3.31一面1.&nbsp;自我介绍&nbsp;2.&nbsp;实习3.&nbsp;项目:redis持久化策略有哪些,你会用哪个,持久化失败怎么办,等不及对账怎么办,怎么实现实时发现数据问题;MQ使用拉模式还是推模式,MQ怎么保证消息不重复消费4.&nbsp;string和stringBuilder5.&nbsp;ArrayList和LinkedList6.&nbsp;Java异常体系7.&nbsp;final和static8.&nbsp;spring的AOP怎么实现?jdk和cglib什么时候用?9.&nbsp;设计模式:策略模式、责任链什么时候用、单例模式有哪些10.Mysql有哪些存储引擎11.&nbsp;Mysql有哪些索引,索引分类,聚簇和非聚簇12.&nbsp;链表判断有无环13.&nbsp;二叉树的遍历方式,用什么数据结构14.&nbsp;大模型:用过什么大模型,你觉得哪个好,优缺点,deepSeek&nbsp;R1和V3的区别,好在哪里,为什么训练成本低,写prompt的经验4.7二面1.&nbsp;自我介绍2.&nbsp;研究方向,要发什么论文,能发大模型的吗(多次强调)3.&nbsp;实习4.&nbsp;设计模式,模板方法好在哪,不好在哪,要是前后要添加新的逻辑怎么办5.&nbsp;分布式锁,死锁怎么解决,实际例子6.&nbsp;垃圾回收讲一下7.&nbsp;hashMap&nbsp;concurrentHashMap&nbsp;为什么要有这些数据结构,为什么jdk1.7和1.8不同8.&nbsp;笔试低,为什么9.&nbsp;大模型相关&nbsp;mcp是什么&nbsp;面完秒挂,面试体感极差,特别是二面,纯纯的老登一定要让我研究大模型?发大模型的文章,“导师不研究这个,你也可以发大模型的文章”,面试中反复强调&nbsp;哦你不是研究大模型的瞧不起我前一段实习的组,“为什么去了这种组呢,没进去前不知道是做这个的是吧”嫌弃我笔试成绩低,一直询问原因(逆天高德,编程题有的不能选Java)
牛客139242382号:***吧,会大模型的还会投他这个岗?
查看22道真题和解析
点赞 评论 收藏
分享
4.23&nbsp;&nbsp;1h1,&nbsp;自我介绍2,&nbsp;项目拷打2.1,&nbsp;简历里写的Mysql查询优化是怎么做的?(答:&nbsp;主要是为部分字段添加了索引)2.2,&nbsp;如果某一个字段的可选值很少,&nbsp;比如性别中的男和女,&nbsp;有没有必要加索引?(答:&nbsp;一般不需要)2.3,&nbsp;你想一下有没有需要的情况?2.4,&nbsp;Mysql怎么优化多表联查?2.5,&nbsp;你对项目里的随机森林模型了解多少?2.6,&nbsp;决策树是不是越深越好?2.7,&nbsp;如何对决策树进行调优?2.8,&nbsp;你觉得随机森林的缺点是什么?2.9,&nbsp;你对项目里的Hadoop架构了解多少?2.10,&nbsp;如果有一个大文件要存储在Hadoop中,&nbsp;会有哪些步骤?八股3,&nbsp;除了Redis,&nbsp;还有哪些实现分布式锁的方式?(答:&nbsp;Zookeeper)4,&nbsp;你对Zookeeper了解多少?5,&nbsp;Redis集群是如何进行主从同步的?6,&nbsp;如果Redis集群发生了火灾等事故,&nbsp;有没有办法恢复其中的数据?7,&nbsp;如果Redis的一个节点挂了,&nbsp;怎么让系统继续运行?8,&nbsp;如果Redis中的数据过期了,&nbsp;怎么恢复数据?9,&nbsp;线程池有哪些核心的参数?10,&nbsp;如果让你确定线程池的参数,&nbsp;你会怎么设计?11,&nbsp;提交一个任务到线程池的流程是什么?12,&nbsp;如果一个任务到线程池之后,&nbsp;核心线程未满,&nbsp;并且有几个核心线程处于空闲状态,&nbsp;任务是直接交给这几个核心线程处理还是新建立核心线程处理?13,&nbsp;你用过哪些线程池?14,&nbsp;你对垃圾回收机制了解吗?15,&nbsp;老年代和新生代的区别是什么?16,&nbsp;创建一个string对象会被存放在哪里?17,&nbsp;如果string对象前面加了关键字static,&nbsp;会被存放在哪里?18,&nbsp;如果用循环创建了很多个string,&nbsp;字符串常量池中会存入几个string?19,&nbsp;怎么理解Spring的IOC?20,&nbsp;Spring用了哪些设计模式?21,&nbsp;Bean加载的顺序可以改变吗?编程题用两个线程交错打印从1到m*n的数字,&nbsp;每个线程每次打印n个数字(寄)总结找实习以来被拷打的最狠的一次,&nbsp;八股问的很有深度,&nbsp;编程题猝不及防。
查看30道真题和解析
点赞 评论 收藏
分享
评论
3
30
分享

创作者周榜

更多
牛客网
牛客企业服务