项目常见问题总结与回答要点分析
项目常见问题总结与回答要点分析
很多同学在回答项目问题的时候,不知道该回答到什么程度,比如 是直接说思路就可以,还是需要把具体代码实现也讲出来;是否需要把前端和后端具体如何交互到,也要说出来;面试官是否会看我们项目的代码,查看我们的具体实现….
回答指导
工作拧螺丝,面试造火箭,针对项目的问题,一般我们不需要回答的太具体,比如不需要描述具体代码实现,也不需要一五一十回答实现流程,我们只需要回答一个大致的实现思路,重点是要回答一些关键词。
我打个比方,比如面试官问你的密码是如何加密的,你只需要回答采用 MD5 + salt(盐值) 这种方式加密即可。
一般你把一些关键词一说,面试官就知道你的意思了。如果面试官对你的回答不大满意,想要继续针对某个关键词追问你,那你就继续回答面试官的问题即可,比如可能追问你 MD5 的底层实现逻辑
当然,如果你的实现有一些亮点,那你就可以侧重讲解一下,比如对于上面那个加密问题,MD5+ salt 是大部分人的实现方式,如果你在实现的时候,自己还懂了一些手脚,做了一些优化,那你可以讲一下你具体是怎么优化的。
最后就是关于面试官是否会看代码的问题,90% 的面试官是不会看你的虚啊不过那样代码,也不会让你运行项目的,但是偶尔会有一些面试官,让你运行一下项目给他看一下,如果遇到这种,那也没有办法,只能说你的运气不好了。
一般线下面试,且让你带上电脑,那么会让跑项目的概率估计大一些,20% 左右的概率(中小厂偏多)
项目常见问题总结
针对开发岗项目,我这里总结了一些通用问题,基本 80% 的项目都可以问这些问题,所以我觉得大家可以在面试前,针对你自己的项目,优先总结一下答案,这对你面试有很大的帮助。
一、通用类
1、介绍一下你的项目
回答指导:面试官让你介绍项目的时候,很大的可能也已经看过你项目了,所以你就不要把简历上的内容一五一十说一遍了,面试官问你这个问题,主要的目的就是过渡,通过你介绍里说到的内容对你展开提问,所以呢,你在回答的时候,只需要简单说一下项目背景,然后重点说你相对熟悉,希望面试官提问的模块,类似于引导面试官往你所擅长的方向是提问。
2、你觉得项目的难点或者亮点是什么?
回答指导:所谓难点或者亮点,并不一定真的需要多难,很多东西都是没有想到的时候觉得很难,但是一旦想到思路,发现居然这么简单。
所以呢,让你讲难点或者亮点的时候,你不用觉得自己项目没啥难点/亮点,而是挑选你精心准备过的内容来讲,至于这个点难不难,或许并没有那么重要。
反正对于一个项目,哪怕你没有亮点或者难点,你也要刻意去准备一个。
3、介绍一下项目中的一些表结构
回答指导:面试官可能在考察这个项目你是否真的做过,自己是否真的实实在在设计过表,很多人都是跟着视频抄写代码,根本没有思考过表是怎么设计的,甚至都不知道表有哪些字段。
如果被问到表设计,自己啥也不懂,那就很尴尬,很大概率得挂,所以大家一定要熟悉几个表结构,然后在介绍表结构的时候,一定要有逻辑去介绍,一步一步去推理为啥需要这个字段。
也不需要把项目所有表都说了,只需要挑几个表重点介绍一下即可。
4、平时怎么做单元测试的?
回答指导:面试官的目的,就是考察你是否做过项目,如果你做过项目,大概率有弄过单元测试,所以对于一定项目,哪怕你不想去做单元测试,也要了解一下单元测试是什么。
5、有没有遇到不容易落地或者让你阻塞很久的地方?
回答指导:考察你是否认真做过项目。一般做过一个项目,肯定会遇到各种各样的问题,哪怕是一个简单的 Bug,有时候也需要花费很多时间,才能找出问题。
所以在回答的时候,如实回答你遇到的坑即可,哪怕是一个很简单的 Bug 都行,重点要讲解,你是怎么解决这个 Bug。
二、登陆注册类
基本大部分的后端的项目,都会有登陆模块,平时我们用的各种网站,APP等,也基本都需要注册登陆。
在校招项目中,登陆注册的实现逻辑也都基本差不多,所以我总结了如下的一些通用问题,大家可以在面试前提前准备。
对于登陆注册,一般就涉及三个层面:cookie与session,密码加密相关,登陆注册验证码相关,下面是总结的一些问题,这里就不给出答案了,根据你们自己真实的实现来。
1、密码加密相关
- 如何处理用户忘记密码的情况?
- 你是如何生成盐值的?盐值的长度和生成方式对安全性有何影响?
- 这种salt+MD5的方式储存,是否会有密码安全问题?比如暴力破解?
- 了解彩虹表吗?如何防范这种攻击?
- 你为什么会选择salt+MD5的这种加密方式呢?是否还了解过其他加密方案?
- 一般我们在设计一个加密算法时,会考虑哪些因素?
2、登陆注册相关
1、用户注册,是否有进行邮箱验证或者手机验证?如果有的话,怎么保证 60 秒内只能发送一次验证码?
2、那如何防止验证码接口被刷?
3、描述下你的登录流程设计
4、如果同一个用户同时在多个终端登录,你是如何处理?
5、考虑过单点登录问题吗?如果以后多个应用想同用同一套登陆系统,登陆这块应该如何设计?
3、cookie与session问题
1、你能简要解释一下什么是Cookie吗?它们在Web开发中有什么作用?
2、你知道Cookie是如何在客户端和服务器之间传递的吗?能描述一下Cookie的工作原理吗?
3、你能解释一下什么是Session吗?它们与Cookie有什么区别?
4、你知道Cookie存在的安全风险吗?有哪些措施可以降低这些风险?
5、如何设置Cookie的属性以增强其安全性,比如HttpOnly、Secure、SameSite等属性?
6、在使用Cookie和Session时,你会如何处理跨域和跨站点请求?
7、有哪些技术或者方法可以确保Cookie和Session在跨域场景下的安全性和有效性
8、你了解Session的生命周期吗?它们是如何创建、维护和销毁的?
9、如何处理Session超时或者注销?
三、评论设计
很多web项目都会有评论功能,而评论功能的实现,也可以设计很多亮点,这里针对市面上大部分项目的设计方案,总结的一些面试
1、说一下你的评论系统是怎么设计的?
2、对于多级评论,你会如何设计?
3、评论的展示顺序是如何确定的?有哪些排序规则?
4、对于热门评论和最新评论,你是如何进行排序和展示的?
5、面对大量评论数据,如何优化评论系统的加载速度
总结
当然,可以罗列的有很多,这里就不一一罗列了,上面更多的是,给大家一个参考,通过上面的问题,大家也能知道面试时,针对项目面试官是如何提问道。