面试总结2

20.场景题,有token如何保证用户不能同时两个登录?
回答:每次登录token刷新,之前的用户就不能成功发请求,不知道为什么说不行,还问了session和cookie为什么不用,答,可以token可以适应分布式环境以及禁止cookie的场景,还问了cookie能不能保存token,应该肯定可以吧,不知道还要回答什么,token本身不是保存在浏览器本地内存里吗,保存到cookie不是反而体现不了它的优势了吗?不知道这个问题要怎么回答,感觉面试官不是很满意
21.场景题,如何保证库存并发安全,乐观锁加版本号,进一步就说可以在redis里lua脚本实现,面试官还要具体一点,就不会说了

22.场景题如何测试新闻评论功能,当时一点不会,现在觉得可以这样答:
首先从大的来说,有单元测试,集成测试,系统测试和验收测试,对于评论功能,首先根据当时的需求设计说明书明确有什么要求,然后设计有效等价类和无效等价类测试合法字符和不合法字符,再通过边界值,上点离点内点,测试范围,还有比如通过判定表判定树,根据评论用户要已有账号且能够发言,(不被封),且评论次数不大于最大次数(防止刷评等等进行多条件测试,还有安全性测试看程序能不能抵御外部攻击非法侵入,兼容性测试,对于不同浏览器能不能都可以正常发表评论,性能测试,测试吞吐量响应时间,易用性测试,对于用户是否友好,是否易用,还有界面测试,头像评论框是否正常显示等等。。。(够详细了应该,当时被说不详细,因为压根不会测试😂,最好再学一下jmeter的使用,主要是性能测试
23.还有集群脑裂哨兵怎么知道谁升级成主节点?
一通乱答:奇数个哨兵进行投票,可以保证有一个子节点获得最多票数,具体投票可能会根据最后一次跟父节点的同步时间,不知道对不对,面试官说我是不是之前准备过?其实都是蒙的😭
分割线-------------
24.问了慢查询,以及慢查询如何优化
25.堆栈溢出怎么检查
26.http请求怎么在tcp上传输保证是安全的
27.数据库索引及可以有多个聚簇索引吗
28.操作系统(这个真不会,操作系统的磁盘以及内存
29.Linux的一些关于内存的命令我只说了top。。。然后就不会了
30.了解的测试方法等等
全部评论
面试官人都还挺好的,没遇到压力面,免得不好的时候,面试官全程给我讲题,也都笑嘻嘻的,这应该是我最感激的时候了,暑期实习没着落也不至于很抑郁😁
1 回复 分享
发布于 2024-05-12 00:39 吉林

相关推荐

03-12 20:51
门头沟学院 Java
吐槽一下:企业微信是真忙啊,面试过程中,面试官还会被拉去开会,开局写完三道算法之后,硬是让我等了将近一个小时,体验非常不好....---#### **一、算法题**1. **二维数组处理**     - 题目描述:对二维数组按第一列升序、第二列降序排序后,求第二列的最长递增子序列     - 思路:排序后转化为最长递增子序列(LIS)问题,用动态规划或贪心+二分解决  2. **滑动窗口问题**     - 题目描述:维护一个窗口,保证窗口内字符不重复,求最大窗口长度     - 思路:滑动窗口+哈希表记录字符位置  3. **二叉树第K大元素**     - 题目描述:按左-根-右顺序收集元素后取第K大值     - 思路:中序遍历得到有序列表后直接取第K大(暴力解法)  ---#### **二、项目相关**1. **登录鉴权机制**     - 流程:手机号+验证码登录,未注册用户自动注册     - Token刷新:通过拦截器对非登录请求刷新Token有效期     - **追问**:       - Token生成算法?使用JWT(Header+Payload+Signature)       - Token唯一性保障?通过JWT签名和用户唯一标识  2. **数据库优化**     - 慢查询解决:检查索引失效、分库分表、SQL优化     - **索引原则**:       - 高区分度字段优先       - 联合索引遵循最左匹配原则       - 避免对长文本字段建索引  ---#### **三、缓存问题**1. **缓存穿透**     - 场景:请求不存在的数据(如非法ID)     - 解决:缓存空值+布隆过滤器  2. **缓存击穿**     - 场景:热点Key失效后高并发请求压垮数据库     - 解决:互斥锁(如Redis的SETNX)  3. **缓存雪崩**     - 场景:大量Key同时过期     - 解决:随机过期时间+集群部署  ---#### **四、多线程与锁**1. **线程安全集合**     - `ConcurrentHashMap` vs `Hashtable`:分段锁 vs 全表锁  2. **锁机制**     - 悲观锁:`synchronized`、`ReentrantLock`     - 乐观锁:CAS(如Atomic类)、版本号     - **区别**:悲观锁强一致但性能低,乐观锁高并发但需处理冲突  ---#### **五、消息队列**1. **选择RabbitMQ的原因**     - 轻量级、适合单体项目,对比Kafka/RocketMQ更简单  2. **长连接实现**     - 基于AMQP协议,通过心跳机制维持TCP长连接  ---#### **六、设计模式与AOP**1. **AOP应用场景**     - 公共字段自动填充(如创建时间、更新人)     - 实现:通过切面拦截DAO层操作  ---#### **七、反问环节**1. 实习生工作内容:测试平台开发,参与1-2个项目  2. 面试轮次:4轮技术面(按正式员工标准)  3. 改进建议:技术深度需加强(如Redis底层原理、锁实现细节)  ---**参考答案亮点**  - **JWT结构**:Header(算法)、Payload(用户信息)、Signature(签名)  - **索引失效场景**:对字段使用函数、类型隐式转换、模糊查询左匹配  - **CAS问题**:ABA问题(通过版本号解决)、自旋开销  - **RabbitMQ协议**:基于AMQP,支持多种消息模式(Work Queue、Pub/Sub)
查看16道真题和解析
点赞 评论 收藏
分享
03-26 20:24
已编辑
北京邮电大学 Java
面试官人很好,也很耐心,但是也喜欢咬着我不放三分钟自我介绍开局拷打项目:经典一致性问题。这里一直在聊redis库存扣减到写入sql这一整段的最终一致性。我首先讲了我目前的实现,异步扣减+手动ack持久化订单消息+定时任务更新库存。面试官说性能会不会太差,用户抽奖能立即拿到结果吗?我就说压测平均响应也在100ms以内,并且抽奖肯定有转盘动画之类的,完全能撑住。这里又问了一下并发抽奖怎么办,说了加3s过期分布式锁,限制单用户短时间内重复点击抽奖。面试官好像对回答还是不满意,接着问,假如我一定需要优化性能,减少响应速度,问我有什么改进方法,我说可以考虑还是改回自动ack,把持久化订单信息放到扣减库存后,发mq消息前(错误示范,当时没想太多,这样做redis抗并发的意义就没了,还不如直接写库)。不过面试官好像也没意识到出错了(,他目标似乎不在这上面。接着又说了半天场景(对不起我又没听明白是问啥),大概就是说,假如写库的时候会有规则校验之类的,这时候挂了咋办。(这里我已经感觉到不妙了,因为还是没明白面试官想问的方向),我说自己的项目都是把这部分给放到校验之前,保证这部分只专心做写库。还是不满意,继续追问,实际情况很复杂,假如这里就是需要做其他的校验,该怎么办。我说可以用事务来回滚,又被问分布式transactional出问题怎么办,直说了不大了解(其实就是怕被问到这儿,还是没躲过去)八股(我通过面经梳理的顺序,实际上感觉问的还挺跳跃):可能正好提到了事务,话接上文,于是问了我嵌套@Transactional会有什么问题?(后面复盘才知道当时应该是问同类下调用事务方法的失效场景)。问多态底层原理。对不起真不知道,直说了不清楚,再狡辩回答了一下多态的体现(方法重写重载等等等。。。)==和equals区别。过String的数组为什么要用final修饰?对不起我又没见过这样问的,,说可能是为了保证字符串不可变,线程安全,当时还脑洞大开说跟builder和buffer那俩相比,没有对字符串的操作而是直接生成新的字符串,性能上也会更好(实在是不知道说啥)反射的优缺点。过aop的底层原理。说了动态代理和字节码操作,又详细说了动态代理因为动态代理说到了CGLIB和JDK实现,又顺着问了我两者的区别。过jvm内存。过为什么永久代被替换为元空间。说了个永久代oom风险更高,其他记不大清了堆对象是怎么进行分代和转化的。大部分对象新生代,大对象老年代。通过年龄计数器来确定对象的升代。G1的过程和优点。过,这部分还好记挺熟io流。没怎么看,早知道不偷懒了对象创建过程。过mysql索引底层结构,和其他对比。过B+树范围查询怎么做的。从下界节点走类似中序遍历直到收集到上界节点。redo log和undo log,他俩结合起来能解决什么问题?单独说没问题,问我结合的时候我还有点懵??没懂想让我回答什么,最后说了个可以实现事务和宕机恢复(但我单独介绍也说过了,dbq不知道)。Spring启动过程。过算法(其实是说思路,变种场景题):基本有序的数组什么排序最快。插入追问为什么是插入。梳理了一下逻辑讲了讲插入的过程和可以优化到O(n)找第k个位置的元素怎么找。快速选择和堆排一个很大的文件,比如要做词典,怎么在其中匹配对应字符串。说了字典树假如连续一长串不规则字符串呢?不是很清楚,说es,但追问我es原理,说了倒排索引,继续问是怎么实现的,承认了看过一些,但没看太仔细怎么在一个串中找到出现次数超过一半的字符。说用哈希表统计然后计算。追问假如输入是一个流呢?(其实也想说哈希表也能做啊,但感觉可能想让我回答其他的)只好说不大清楚最后:毕设方向是什么?回复,我目前是大三()还没确定,问知不知道方向?我们学校一般大四才开始做毕设base地意向北京,但部门在杭州,能不能接受;ok反问:部门业务最后一个场景题做法?摩尔投票,(听到的时候感觉很熟悉,不知道好久之前看过这个,但现在忘了)#牛客AI配图神器# 总结全程1h2m,还得练,这就回去加班看事务
Elastic.:看看我司?
点赞 评论 收藏
分享
评论
4
29
分享

创作者周榜

更多
牛客网
牛客企业服务