首页 » 技术分享 » 大连腾讯无线Java研发实习一面面经20190325

大连腾讯无线Java研发实习一面面经20190325

 
文章目录

这次是和面试官面对面进行交谈的。

首先一段自我介绍,简单介绍一下自己,简单介绍一下擅长的领域以引导面试官提问相关的问题,然后说一下自己的项目。

1.说说你的项目的,具体有哪些模块,你负责哪些部分

(这个问题因人而异,详细介绍一下项目即可)。

2.项目用了几张表,那些表的操作比较活跃

大概用了9张吧,我记不太清了。因为目前项目正处于推广阶段,因此用户表的操作比较频繁,我想以后使用人数稳定下来以后会好一些。商品表和订单表也使用非常频繁,因为是项目的核心功能,因此用到的地方有很多。(这个也根据项目实际说明)

3.你做了校内学生的校验是吗?怎么实现的

我是用简单的对称加密把同学输入的账号和密码进行加密传到后台,服务器进行解密并模拟一个http请求访问学校教务处网站,如果用同学输入的账号密码登录成功则校验成功,然后只保存他的学号,否则校验失败。

4.你的项目已经上线了吗?我可以用一下看看吗?

可以,微信小程序搜索就能用。(然后面试官打开小程序摆弄了一会儿,说做的很好。)

5.你的数据库用的是什么?

mysql

6.使用索引了吗?

用了,根据不同表的实际使用场景创建了唯一索引和组合索引

7.说说组合索引

先说明了组合索引的左边缘原则,然后说到我使用了innoDB引擎,在索引存储方式上与myisam有区别。myisam引擎存储一张表分为三个部分,表定义,表数据,表索引三个部分,innoDB则不同,整个表都是存储在一个依据主键生成的聚簇索引上边,聚簇索引的叶子节点即存着每条信息。如果再创建其他索引,那相当于创建了一个二级索引,存储索引的B+树的叶子节点上村的是主键的值。每次在通过二级索引检索数据时都会发生两次遍历树的操作。而且InnoDB引擎的事务支持和更小的锁力度也是我选择他的原因。innoDB是行锁,myisam是表锁,因此innoDB的并发效率比myisam引擎强很多。

8.你做后端主要是用的什么框架啊

主体框架是spring,web层用了springMVC,dao层是mybatis。

9.对Spring了解吗?

还行,我最近正在看Spring的源码。看到了ioc容器启动的部分。(接下来一顿夸Spring框架有多么好,解决了那些问题)。

10.那我现在有个场景,有一个对象A,其中引用了对象B,对象B其中引用了对象C,对象C其中又引用了对象A,这个情况在IOC容器中是怎么加载的呢?

(这个问题其实就是Spring的循环依赖问题)

IOC容器加载对象时有一个Map结构的初始化池,正在初始化的对象会放到池子中。Spring使用依赖注入的形式去实现依赖翻转,注入的方式有构造函数注入和set方法注入。如果选择构造函数注入的话,首先加载A对象,把A对象放入池子中,然后发现A对象中有B对象的引用,于是递归循环地去加载B对象,把B对象放入池子中,然后递归循环加载C对象,把C对象放入池子中,然后发现C对象中有A对象的引用,递归加载A对象,然后发现A对象已经在池子中了,这时候因为Spring默认是单例模式的,C对象要引用这个A对象,然而A对象还没有初始化完成,无法使用,于是就会抛出异常。

如果我们选择set方式注入,A对象在加载时放入池中,然后加载完毕从池中取出,这是通过set去注入B对象,B进入池中,加载完毕,B出池。然后通过set给B注入C的引用,C加载入池,加载完毕,C出池。然后给C对象注入A的引用,这时由于A对象已经构建完毕,就可以注入到C中了,这样就不会发生异常。

11.你还有什么想问我的吗?

咱们公司里边Java语言用的多吗?

面试官:我的部门主要技术栈就是Java,捎带一点Node。(然后主要讲了部门的业务这些)

 

至此结束面试

小结

大连腾讯无线是隶属于的腾讯的一家公司,今天面试官问的都不是很难,我答的也比较好。主要是围绕项目吧。其实有个小项目还是挺不错的,可以和面试官聊很多项目上的事,而且你自己做的项目,项目中使用的技术和一些难点你自己也清楚,能很好的说明。

这是我第一次和面试官面对面交谈,还好我已经经历过5场面试了,不然肯定会非常紧张的。

转载自原文链接, 如需删除请联系管理员。

原文链接:大连腾讯无线Java研发实习一面面经20190325,转载请注明来源!

0