2024第一份面经(有问题大佬指正)
某小厂面经-50min
第一次面试还是有点紧张,中午接到面试,下午开始面
面试官:先来段自我介绍吧
我:....(努力的往项目去引)
面试官:你的项目都是自己写的吗
我:是的是的都是自己写的
面试官:你说说你的api项目是具体干嘛的
我:提供API接口供开发者使用的平台,开始介绍自己的项目的结果,每个模块具体是做什么的
面试官: 你说你用了api网关你这个网关是做什么的
我:校验用户信息,应用 API 签名认证算法校验用户请求的合法性
进行转发,防止用户刷我的接口
面试官:既然你说你这个是防止用户刷接口,那你是怎么做到限流的,是封ip,还是?
我:(当时我是蒙蔽的。我在想我没有做限流啊)我没有做限流,我在后台维护了用户和接口调用次数的表,用户如果没有调用次数就禁止调用了
面试官:你说说你jwt怎么实现的吧
我:首先在maven引入依赖,写一个jwt的工具类,我的token没有放在header,直接放在cookie里的,每次判断登录的时候就去遍历cookie拿到token交给工具类去解析判断是否过期还是无效。(当时还以为会被问道安全性问题,例如:攻击者可以利用某些漏洞(如跨站请求伪造CSRF)对cookie进行攻击,从而获取token。)
面试官:你的token设置的多长时间过期
我:7天,结果面试官来一句,你一个登录要设置这么长时间吗(我当时还在想,我想设置多久不是我来决定的么),我就说这个可以改的嘛
面试官:你说你设置了ak,sk,那么你是怎么变更的呢?
我:我写了一个接口,用户点击更换就可以重新生成ak,sk,30天只能更换一次
面试官:你不怕有安全问题吗
我:我一脸懵逼,我说请求的时候没有传ak,和sk啊,就传了用户id,他说别人一抓包就知道了,我问他您有什么好的解决办法吗,他说这个留给你自己思考
后面就开始面试常规八股
有了解过ioc吗
说实话这里是真的没有听明白从他嘴里说的ioc(说的单词太蹩脚),当时我一直默念ioc,ioc,就是想不起来是啥,就只能说不是很了解
aop知道吗
我:知道知道,随后就拿起鱼皮的boot模板里面的aop的代码给他讲起来了,然后说就是为了记录日志,做的环绕增强
mysql的索引是干嘛的
我:可以用来快速查询数据表中有某一特定值的记录,提高查询速度
mysql的left和join的区别
我:Join结果集中只会包含那些符合连接条件的行,Left Join的结果集则会保留左表的全部行以及右表匹配的行,如果连接条件中有些数据在右表中不存在,则对于这些数据,结果集中显示NULL值。
mysql天窗了解过吗
我:???(这里没有听明白说的啥)
mysql的索引的用的什么数据结构
我:b+树
分页的原理,去重的关键字
我:通过limit关键字,第二个有点忘了,一直在哪dis半天,后面面试官直接说答案了
mq都用在那些地方
我:当时自己写过,就说了订单超时取消订单,异步下单
知道幂等吗?
我:在程序开发中,则是指同一个业务,执行一次或多次对业务状态的影响是一致的(当时看了黑马的mq高级部分,结合黑马商城正好就答出来了顺便还答了怎么确保幂等性)
了解分布式锁吗
我:我说我看过源码,通过lua脚本实现的,但是还准备回答的,他说能答到lua脚本就行了,顺带扯出了watchdog这个机制,又聊了两句
你说说常用的linux指令
我:说了两个,然后说我最近docker指令用的多然后又去问docker了
docker的作用?
我:Docker解决依赖兼容问题,容器之间不会相互影响,他说是这样的吗?我当时说:难道不是吗?
docker是怎么挂载目录的
我:容器的文件与主机文件进行映射
docker是怎么运行镜像的
我:docker run ....
dockerfile的第一句是什么?
我:????,我就写过一次不太记得了
dockerfile的每一行命令是否会构建一个新的镜像
我:不知道(百度了是会的)
最后一个问题,linux的vim指令是怎么编辑文件
我:i,:wq 退出保存
那我想不保存退出怎么办?
我::q
然后面试官说是:q!,我心想:q不也行么
反问环节
公司是干嘛的?
面试官:低代码开发
今后学习的建议?
面试官:多做项目积累经验,积累工作经验
面试表现?
面试官:挺不错,比前面的好
