面试真题记录
# 面试真题记录
# 面试题一
# 面试题二
介绍一下你们项目需要的挑战。
redis 令牌桶限流算法具体怎么实现的?为什么不选择第三方的开源库?
最大值如何保证的?查询最大值再判断不是多了很多网络IO过程吗
为什么用选择用redis做消息队列?用MQ应该会更好,能帮你解决很多问题,你不用再考虑
介绍一下简单工厂+设计模式这个功能吧,做了什么?
介绍下接口对接?
对接过单点登录平台吗,是怎么做的?url+用户id的方案,不验证密码存在问题,直接拿到你的地址访问怎么处理?
了解oauth2吗?介绍一下它的原理OAuth 2.0 的一个简单解释 (opens new window)
算法题:
a b两个数组,b中的元素不重复,找出a里边在b中存在的值的下标并返回
数据库存储的数据有两个字段,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"有一个矩阵,从上往下找出最短的路径和,每个点只能访问它的正下方、左下方、右下方三个点
# 面试题三
自我介绍
选一个你最熟悉的项目聊一下
介绍下你们的架构
keepalived如何去保证高可用的
什么是令牌桶限流算法,是整个集群使用吗,你们怎么实现的
限流这块流量超过限制,你们怎么处理的?
讲一下多线程解析这块吧
讲一下你知道的设计模式吧
AtomicInteger是怎么保证原子性的
MVCC是什么?
JVM的内存区域讲一下
# 面试题四
自我介绍
选一个的你最熟悉的项目,介绍一下你觉得的系统难点
我看聊的大部分都是运维层面的东西,有代码层面上的难点吗
要转go开发的话,你觉得如何去学习一门新的语言
做一个场景题,我有上万份合同,用一个数组存储,我要找出其中包含“北”的所有下标,暂时只考虑一个字的查找,可以提前对输入数据做一些处理,不算在查找的时间复杂度中,你有什么方案,写下代码
一张成绩表,查询出每个学生的总成绩
知道UUID吗,它的底层原理是怎么的?如果现在需要用UUID来做主键,你如何去设计你的表结构,需要考虑哪些问题
通用解决方案:UUID建普通索引,使用普通的自增主键,主键是聚簇索引,它里边保存着一行的数据,它的维护效率低于普通索引,所以通过建普通索引优化数据的插入过程,然后查询可能多走一次回表
知道单点登录吗,如果我现在要做单点对接,应该如何做,了解OAuth吗,详细说一下OAuth
用过阿里云OSS吗,了解鉴签过程吗,了解JWT吗,JWT是如何验证其中的数据没有被篡改的
# 面试题五
谈一谈spring-mvc,在web层设计中,java如何在没有这些框架下实现web服务
写出你所知道的jvm的内存区域和常见优化手段
非对称加密和对称加密的区别以及优缺点
使用java反射技术调用一个类的private方法,请写出相关代码
实现一个扫码登录,请给出实现思路
考虑以下两个表,Employee具有字段
id,name,deptid,salary,department表具有字段id,departmentname,编写一个sql语句,返回每个部门中工资最高的员工的信息,结果集包括员工的名字、所属部门和工资,并按照工资的降序排列,如果多个员工每个在同一部门具有相同的最高工资,则按照员工的名字升序排列给定一个es索引(audit_log,内有字段
create_time,userid,location),需要统计每天每个地点的登录次数,请给出具体实现思路多线程打印数字:传入一个1~9的数字N,启动N个线程,每个线程对应一个数字,各个线程交替打印自己的数字,每打印完最后一个数字换行,请给出具体实现思路