面经:阿里二面自我剖析---Java岗(50分钟)
发布日期:2021-06-30 16:35:43 浏览次数:3 分类:技术文章

本文共 2977 字,大约阅读时间需要 9 分钟。

一面链接:

三面链接:
二面是8月28号面的,有些激动。这次面试是依托项目来考察我的技术点,主要偏优化方面和底层技术原理方向。下面直接上二面的内容吧

我:自我介绍

因为每次的面试官是不一样的,即使上一位面试官对于你有一些面试记录,但那只是大概,所以每换一个面试官,我们必须认真的做自我介绍

面试官:项目里面一个用户多角色问题是怎么解决的?

这里面试官就针对我做的我们河北大学的一个项目进行了探讨

还是把项目简单介绍一下吧:

河北大学大型仪器论证系统:我们学校有一个实验办部门,管理着学校各种大型贵重实验仪器的采购,一旦有实验室需要购买,就要填写很多申请信息交到实验办,然后实验办人员再通知相关专家统一时间来实验办进行申请论证,实验办人员根据专家给出的评审结果决定是否同意采购。这个过程太麻烦,于是我们就做了一个线上系统来缓解这些麻烦。首先这个系统涉及三个角色,实验办人员,申请者,专家,申请需要采购仪器的时候就去系统发起申请,填写相关信息,填完完信息后,实验办人员首先进行一个初筛,不通过可以直接驳回,如果能通过就可以安排专家进行论证,并且短信通知专家,专家会对该申请从不同方面进行打分,并且可以对申请者进行提问,每一次专家提问或者是申请者回答专家的问题,都会有对应的短信提醒,等所有专家论证结束了,实验人员会参考专家打分给一个总评,并决定是否同意采购

我:应用了spring-security框架来解决的

这里具体说了一下是如何应用操作的,涉及到代码层级。面试官会跟着我们的思路仔细询问的,所以一定要对自己的项目掌握到位

面试官:在登录的时候做了哪些安全方面的防护

我:账号、密码常见的输入判断;每个接口对身份进行校验,防止越过前台直接进入后台发生安全隐患

面试官:比如初始账号,密码你们是用的教师工号什么的,别人很容易知道用户的账号和密码的,如果要你再去完善一些,你会去做哪些安全

我:可以利用老师的邮箱,统计老师的邮箱信息,当我创建了老师的账号后,就会随机生成一个复杂的密码,发送到老师的邮箱

面试官:这个项目里面应用了阿里云的短信接口,它是如何对接的

我:阿里云申请模板—获得短信签名—在短信接口里面配置短信签名和模板

面试官:现在很多产品在登录注册时会发送验证码,因为一些网站被利用,导致短信轰炸用户,从你的角度来看,如何做能更安全一些

我:我觉得现在的动态验证码就用保护安全的一个作用,可以防止一些爬虫来获取用户的账号信息;也可以利用咱们的邮箱,手机号码登录时,如果检测到异常,可以发送给我们的邮箱提醒,相当于有一个报警机制

这里就有点考验我们的综合能力了,脑子里是否有东西,是否能应用于实际,是否能及时想出来组装一个方案来给面试官一个不错的答复

面试官:就登录来说,用户量如果激增的话,系统哪些方面可以优化

我:增加缓存优化;尽可能的对接口进行校验;可以搭建集群

当我们回答面试官问题的时候,不要说只是简单的回答这个问题,我们要说明怎么做,为什么这么做,这么做有什么好处,还有没有其他的方案可以做planB

面试官:如果你的系统宕机了,就OOM了,如何排查

我:查看日志、检测服务器内存、对服务器资源做一个预警机制

然后面试官就问起了我的第二个项目,这里也是把第二个项目简单说一下吧,这个项目做得比较早,相对之前讨论的项目来说比较简单,但是前端+后台+数据库全是我自己一个搞定的

项目介绍:

早教课程管理系统:因为需要方给的时间比较长,业务逻辑也比较简单,就让我自己去做这个项目。从一开始的需求分析,形成需求文档,数据库设计,原型图设计,到真正的前后台开发。前台是用ionic实现的一个APP客户端,供教师和学生家长使用,后台是用spring-boot框架来实现的。

面试官:做这个项目的时候遇到了什么困难吗?

我:这里我主要说了APP客户端的实现,因为Android不熟悉,就用了一个也不熟悉但是简单易学的ionic来实现的客户端,自学加参考,做出了这个APP

面试官:这个采用http链接的话会有一些延迟吧,你是用的什么HTTP链接?

我:这里我回答的是采用了一个长链接,又回答了长链接和短连接的区别和优缺点

面试官:你这个系统用了长链接,但是有不足,可以怎么去优化

我:首先把长链接可以改为短链接,因为实际情况用这款APP的人不多,而且也不要求及时性;或者长链接情况下做一个时间的限定,一定时间内没有链接的话,就自动变为短链接;可以采用线程池来解决

面试官:这两个项目的数据库在设计中应用了哪个范式?考虑是什么?

我:是应用了第三范式

数据库范式这个确实在学校学过,当时突然问这个,有一点没反应过来,思考后还是给了解答

面试官:内连接是什么

我:根据自己的理解,举例解释

我们对于知识的理解能够用自己的话语简介明了的表达出来,这算是一个学的相对到位的表现

面试官:你做的这两个项目,就数据库方面来说,还有什么可以优化的地方

我:这里考察我们对数据库优化的了解,根据实际项目情况来回答

面试官:MySQL数据库的索引算法是什么?说一下

MySQL数据库的索引算是面试高频考点

我:B+树索引,这里我将其与B树做了对比讲解,并说了采用B+树的好处,这里还是举例说明简单明了

面试官:我看你项目用到了Mybatis,那么它和Mybatis-Plus有什么区别

我: Mybatis-Plus是一个Mybatis的增强工具,它在Mybatis的基础上做了增强,并不做改变。我们在使用Mybatis-Plus之后既可以使用Mybatis-Plus的特有功能,又能够正常使用Mybatis的原生功能。Mybatis-Plus是为简化开发、提高开发效率而生,它提供了一些插件,比如SQL性能监控、乐观锁、执行分析等。以及Mybatis的一个原理简单说了一下

面试官:那进程间的通信都有哪些方式?

这里是考察的Java内存模型

我:管道、信号量、消息队列、共享内存

面试官:你在浏览器输入淘宝域名到返回来你看到的页面,这样一个网络请求的过程是怎么样的?

我:根据自我理解并以一个spring项目为例来讲解的网络请求的整个过程

面试官:Java线程池的实现原理是什么样子的?

我:线程池配置的主要参数及线程池原理讲解

面试官:(我论证系统那个项目在Linux系统上)假如一天你的Linux系统磁盘空间满了,你要怎么去通过排查来定位

我:查看日志、通过命令查找大文件、

(此时已经过去30多分钟了)

下面就是聊学校的经历了,因为我在校期间加入了河北大学第一技术社团------网络中心;一个是在我们院学生会干了三年,聊了些这些活动中遇到的问题,面试官给了一个场景考察我的处理能力

以及我课下是如何学习的。更加幸运的是面试官看了我的CSDN博客。

面试官:最近有在了解一些新型技术吗?

我:对我来说RPC算是新技术了,并且最近在学习RPC,依据自己的了解进行了讲解

面试官:以前的一个学习规划是什么样子的

我:过去及未来的学习规划都给了一个自己的目前规划,以及有做架构师的意向

面试官:一个优秀的架构师应具备哪些方面?

我:技术加业务多方面考虑回答

然后就是面试官解答环节,针对一些技术通过面试官的解答有了进一步的了解

此次面试整体感觉较好,面试官也很棒!

转载地址:https://kunzhi.blog.csdn.net/article/details/100676646 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:面经:阿里三、四面及HR面自我剖析---Java岗(80分钟、30分钟、15分钟)
下一篇:面经:阿里一面自我剖析---Java岗(40分钟)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月13日 11时34分43秒