高德 面经

一面

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 北京

相关推荐

06-17 20:50
门头沟学院 Java
手撕:最长公共子序列,用dp写了,问还有没有别的方法写,问你这种方式有什么好处,然后又问dp解决什么1.&nbsp;Java语言特性有哪些?讲一下多态2.&nbsp;有没有用到过设计模式?3.&nbsp;策略模式的类的结构图4.&nbsp;nfs服务代理和nginx,xxx(没听清)之间是什么关系5.&nbsp;怎么去设计一个API6.&nbsp;表的设计7.&nbsp;设计表的时候有几种范式?第三范式是什么?8.&nbsp;有时候在真正的项目中也会做一些表的字段的冗余,你知道什么时候要做这个吗?9.&nbsp;Mysql有几种引擎?Innodb和Myisam区别?10.&nbsp;B+树写的时候会有页分裂吗?详细描述一下什么是页分裂11.&nbsp;什么是聚簇索引12.&nbsp;项目中Mysql数据量有多大13.&nbsp;了解mysql的分库分表吗?14.&nbsp;分库分表有什么缺点吗?15.&nbsp;怎么理解Redis?16.&nbsp;加了Redis会有什么影响,直接打到数据库上不行吗?17.&nbsp;讲述Reids+Lua+异步,问那得保证数据一致性啊?讲述异步数据库写的时候要查询订单id是否存在,如果存在则不重复写。18.&nbsp;问说这会有延迟吗,比如说在你qps特别高的时候,会有延迟吗;或者说对于高并发的时候,你这种方案还是可行的吗?19.&nbsp;异步操作用户能够看到什么?20.&nbsp;有没有可能你这里显示了下单成功,但是后面写数据库又失败了呢,库存扣减到0下单失败了怎么办?21.&nbsp;Redis持久化机制22.&nbsp;之前为什么没有找实习
查看23道真题和解析
点赞 评论 收藏
分享
✅小红书商业化部门&nbsp;NLP-内容理解&nbsp;4面1️⃣第一面1、n时间复杂度找出数组第K大的值说出思路了&nbsp;用快排思想,不过没写出来,不过面试官还行&nbsp;没写出来也让我过了然后问的比较古老的一些Nlp细节2、比如问你为啥分类任务用交叉熵,不用MSE?直接反向传播原理公式,如果用MSE&nbsp;你最后可能会出现梯度消失的现象还问了LN&nbsp;BN的细节准备的比较到位,所以都答出来了2️⃣第二面问的我好像是概率题,没写代码1、你一个硬币,均值多少次,可以丢出正反面问项目3️⃣第三面应该是答的最好的了,项目答的应该让面试官很满意,然后代码题的话1、第一个&nbsp;就是&nbsp;一个矩阵,从左往右&nbsp;升,从上往下升,n时间复杂度,找出target我觉得太简单了,让面试官再出了一个2、又给了一道:动态规划,最长递增子序列✅知乎:AI中台&nbsp;三面1️⃣第一面1、聊项目&nbsp;模型细节,attention的作用,为啥要用FFN,还有LN中间说到一个点,我说为啥要在LN重新训练两个参数,我说是不然影响性能,但是其实应该是影响泛化能力2、代码题目:找出字符串的最长回文子串2️⃣第二面要我写attention的伪代码我写了一下&nbsp;不过其实还要加上Mask&nbsp;忘记加了还问了我&nbsp;会用rebase操作吗,我说不会。问了交叉熵的细节,到底对预测对的产生loss&nbsp;还是预测错的产生作用。代码题目不太记得3️⃣第三面项目负责人,项目聊的很开心代码题没写出来,不过也让我过了1、代码题目:给我一个字符串&nbsp;让我判断是不是一个数学算式阿里&nbsp;高德&nbsp;✅1️⃣第一面面试官挺直接的,问了项目,然后问我只做了分类是吗,我说的是的,他说你直说就是了。。。&nbsp;尴尬1、概率题&nbsp;给我一个函数&nbsp;可以等概率生成0-5随机数字&nbsp;f5()&nbsp;要我依靠这个&nbsp;生成一个f7()2、给我一个生成器&nbsp;随机生成01&nbsp;要我等概率生成一个生成器&nbsp;做一个二分判别2️⃣第二面1、P9大佬,问到我一个问题,如果你需要100W数据&nbsp;你怎么去跟你上司申请你要100W数据的标注资源。或者说&nbsp;你现在手里有10W标注数据,你觉得你还需要再继续增加标注数据吗我觉得这个问题是我没想到的,因为我这边业务线训练数据都是比较充足2、代码题&nbsp;给你一个数组,给我n时间复杂度&nbsp;生成一个数组&nbsp;这个数组的每个位置的字&nbsp;都等于原先数组其他位置的乘积。&nbsp;思路:空间换时间🍊如果想参加高质量项目辅导,提升面试能力,欢迎后台联系。
查看14道真题和解析
点赞 评论 收藏
分享
评论
3
37
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务