面试真题记录

# 面试真题记录

# 面试题一

# 面试题二

  1. 介绍一下你们项目需要的挑战。

  2. redis 令牌桶限流算法具体怎么实现的?为什么不选择第三方的开源库?

    最大值如何保证的?查询最大值再判断不是多了很多网络IO过程吗

    redis实现令牌桶的正确姿势 (opens new window)

  3. 为什么用选择用redis做消息队列?用MQ应该会更好,能帮你解决很多问题,你不用再考虑

  4. 介绍一下简单工厂+设计模式这个功能吧,做了什么?

  5. 介绍下接口对接?

  6. 对接过单点登录平台吗,是怎么做的?url+用户id的方案,不验证密码存在问题,直接拿到你的地址访问怎么处理?

  7. 了解oauth2吗?介绍一下它的原理OAuth 2.0 的一个简单解释 (opens new window)

  8. 算法题:

    1. a b两个数组,b中的元素不重复,找出a里边在b中存在的值的下标并返回

    2. 数据库存储的数据有两个字段,id 和 pid,一棵多叉树结果,根节点的 PID 为 -1,打印所有子节点到根节点的路径

      # 输入二维数组:{{"A","-1"},{"A-1","A"},{"A-2","A"},{"A-3","A"},{"A-2-1","A-2"}}
      # 输出: "/A","/A/A-1","/A/A-2","/A/A-3","/A/A-2/A-2-1"
      
    3. 有一个矩阵,从上往下找出最短的路径和,每个点只能访问它的正下方、左下方、右下方三个点

    4. 318. 最大单词长度乘积 (opens new window)

# 面试题三

  1. 自我介绍

  2. 选一个你最熟悉的项目聊一下

  3. 介绍下你们的架构

  4. keepalived如何去保证高可用的

  5. 什么是令牌桶限流算法,是整个集群使用吗,你们怎么实现的

  6. 限流这块流量超过限制,你们怎么处理的?

  7. 讲一下多线程解析这块吧

  8. 讲一下你知道的设计模式吧

  9. AtomicInteger是怎么保证原子性的

  10. MVCC是什么?

  11. JVM的内存区域讲一下

# 面试题四

  1. 自我介绍

  2. 选一个的你最熟悉的项目,介绍一下你觉得的系统难点

  3. 我看聊的大部分都是运维层面的东西,有代码层面上的难点吗

  4. 要转go开发的话,你觉得如何去学习一门新的语言

  5. 做一个场景题,我有上万份合同,用一个数组存储,我要找出其中包含“北”的所有下标,暂时只考虑一个字的查找,可以提前对输入数据做一些处理,不算在查找的时间复杂度中,你有什么方案,写下代码

  6. 一张成绩表,查询出每个学生的总成绩

  7. 知道UUID吗,它的底层原理是怎么的?如果现在需要用UUID来做主键,你如何去设计你的表结构,需要考虑哪些问题

    通用解决方案:UUID建普通索引,使用普通的自增主键,主键是聚簇索引,它里边保存着一行的数据,它的维护效率低于普通索引,所以通过建普通索引优化数据的插入过程,然后查询可能多走一次回表

  8. 知道单点登录吗,如果我现在要做单点对接,应该如何做,了解OAuth吗,详细说一下OAuth

  9. 用过阿里云OSS吗,了解鉴签过程吗,了解JWT吗,JWT是如何验证其中的数据没有被篡改的

# 面试题五

  1. 谈一谈spring-mvc,在web层设计中,java如何在没有这些框架下实现web服务

  2. 写出你所知道的jvm的内存区域和常见优化手段

  3. 非对称加密和对称加密的区别以及优缺点

  4. 使用java反射技术调用一个类的private方法,请写出相关代码

  5. 实现一个扫码登录,请给出实现思路

  6. 考虑以下两个表,Employee具有字段id,name,deptid,salary,department表具有字段id,departmentname,编写一个sql语句,返回每个部门中工资最高的员工的信息,结果集包括员工的名字、所属部门和工资,并按照工资的降序排列,如果多个员工每个在同一部门具有相同的最高工资,则按照员工的名字升序排列

  7. 给定一个es索引(audit_log,内有字段create_time,userid,location),需要统计每天每个地点的登录次数,请给出具体实现思路

  8. 多线程打印数字:传入一个1~9的数字N,启动N个线程,每个线程对应一个数字,各个线程交替打印自己的数字,每打印完最后一个数字换行,请给出具体实现思路

最后一次更新时间: 6/2/2024, 5:06:24 PM