阿里巴巴Java研发实习一面面经20190319

首先来一段自我介绍,双非没什么好说的,简单的说了一下自己叫什么,Java学的还不错,目前在维护一个小程序的。

面试官问问我在学校开的课程,然后问问成绩。

1.你刚刚说你的项目中的有个实名认证,这个是怎么做的

买了阿里云的服务器,在服务器上挂vpn,然后通过vpn可以访问学校内网。用户验证时,输入学号和教务处密码,然后前端通过简单的对称加密,传输到后端服务器解密,然后模拟一个http请求访问学校的教务网站,如果验证通过即完成实名认证。之后在数据库保存认证的学号。

2.你传输数据是用什么格式啊

json格式

3.那传输的协议是http还是https呢?说说它的传输过程

使用的https协议,底层https通过ssl套接字对数据进行一个加密。

这里再往下我忘记密钥互换的流程了,就有点尴尬。

https协议原理解析

4.说说你项目中使用的数据库和服务器吧

服务器是在阿里云上买的ECS,然后在服务器上直接装的mysql。mysql使用的innoDB引擎。

 

然后聊到了项目优化,我提到了数据库使用的innoDB引擎,表的设计方面要根据innoDB引擎的特点进行。

5.说说innoDB引擎和Myisam引擎存储一张表的区别

myisam把表分为3个部分存储的,分别是表的定义部分,数据部分和索引部分。然后数据是按插入顺序放到文件中,索引储的是记录的行数。

innoDB引擎整体使用一个主键的索引的叶子节点直接存储的是数据。因此如果表的主键是类似于UUID生成的随机字符串,那么插入就是随机无序的,对innoDB引擎整体的结构不友好。如果是主键是自增的数字较好,只需在存储结构的尾部添加节点。

6.innoDB引擎插入数据的流程,为什么插入随机字符串不好

因为innoDB引擎的聚簇索引是一个B+树结构,B+树是一个自平衡树有序树。在B+树的中随机插入数据可能破坏树的平衡性,这时候就会发生节点的分裂和融合,而且B+树中的非叶子节点存储的值是叶子节点的边界值,因此可能还会导致树上层结构的调整。

7.说说一条sql语句的执行过程

这个难住我了,我就说了mysql数据库的三层结构,服务层,解析层和执行层,之后的就不会了。

sql语句的执行过程

8.除了做项目,你平时还对那些对那些有研究呢?

看过一些常用类的源码,类似于集合,并发这类的。还看过Spring的一点源码,不过是大二时候看的,没看太懂,就结合网上的说明对Spring的关键模块进行理解。(这里实际上我没来得及看太多Spring源码,就看了一点点,怕他问的太详细,就说自己是以理解为主的,这样他问起ioc,aop这些东西的原理和实现也能回答。)

9.JDK8有哪些新特性

有函数式编程和lambda表达式,但是我不太熟悉(明说了不会,看的很多书都是针对jdk5和jdk6的,买的《JAVA8实战》还没来得及差塑封)。还有hashmap的优化,在hash碰撞发生时会发生挂桶操作,在桶数大于8时会从链表变为红黑树存储,当桶数小于6时会从红黑树变回链表。

其他的不会了,这里也是一个尴尬点。推荐大家看《Java8实战》

10.你看过一些Spring源码,当时没看懂,那现在有继续看吗?

这段时间一直在维护项目了,没继续看,不过常用模块基本的原理明白(给自己的不会找借口)。

11.说说项目中遇到的难点和你怎么解决的吧

说到了大文件的存储问题,一开始存储到存储到数据库,但会导致表的体积变大,使查询缓慢。就改为用线程池实现生产者消费者队列通过io存到本地的文件中,然后在数据库中存储文件路径。由于服务器的内存很小,之后压测的时候发现当较多用户同时存储大文件时会占用大量的内存。现在的想法是增加一个前端服务器,实现前后端分离,把一些静态文件存到前端,通过前端服务器的反向代理把请求发到后端,后端只保存信息数据。

12.平时看书吗?看哪些?

Java语言方面看的多,编程思想这些的都看过,其他的就看一些系统优化和数据库的书籍。(到这个问题基本就结束了)

13.有什么想问我的吗?(1)

对我这次面试做个点评吧。

面试官:你的项目做得挺好的,但是我们招聘实习生其实更注重它对知识的热情和好奇心(可能是因为我回答Spring源码由于维护项目没有继续看下去,所以觉得我好奇心不够吧.....)。项目什么做也可以,平时一定要注重基础知识的积累。(听到这里我感觉好难受啊,Java源码和JVM底层原理才是我的强项,但是他基本只问了数据库,感觉根本没有发挥出自己的优势)。还说了一些,不过基本都是这方面的。

13.有什么想问我的吗?(2)

我还有下次面试吗?(据说问这个是大忌,但是我还是问了)

面试官:后续会有同学通知你的。(这个基本上是不会告诉你的)

然后正式结束,说谢谢,挂电话。

 

感觉这次面试不太成功,引导面试官方面做得不好,没有把面试官引导到我的强项上来。这是我的第一次电话面试,一开始特别紧张,感觉气都喘不上来了(2333333),习惯以后就好多了。整体的聊天过程还是挺愉快的,说道压测的时候他问我压测是怎么进行的,我和他开玩笑说一开始就是大家狂点按钮进行请求(23333),他也笑了,然后说到用线程池模拟请求,不过现在好像有更专业的测试工具,我只是一个菜鸟不懂这些。

这次面试总体上感觉凉凉,尤其是面试官对我的总结。而且发现自己需要学习的太多了,买的书很多,但是学习的效率不高。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值