赞
踩
这里说明一下我是投的阿里淘系技术部,至今已经面了阿里四面,四次都是电话面试,面试体验都很好,即使问到你不是很了解的方面了,面试官会给一些引导,甚至也会悉心给你讲解。
我是8月22号下午一面的,一面面试官基本是按照我的简历上面的,感觉很是幸运。
一面链接:面经:阿里二面自我剖析—Java岗(50分钟)
三面链接:面经:阿里三、四面及HR面自我剖析—Java岗(80分钟、30分钟、15分钟)
我:自我介绍大学至今所学
作为一个应届本科生想进阿里不是那么容易,所以大学期间都学了什么技术,参加了那些竞赛都要说出来,展现自我的风采。
面试官:本科到现在比较擅长的技术点
我:最近实现了一个简单的Tomcat
既然问到了擅长的技术点,就要把自己的亮点展现给面试官,很普通的技术,大家都会,也就没必要录用你了。
面试官:说一下Tomcat原理及手写细节
我:Tomcat的原理简单描述
这里我就不描述了,等后续我会把搭建一个简易的Tomcat整个流程整理出来一篇博客
面试官:你用了netty代替socket,那你对netty了解多少
我:介绍自己了解到的netty知识
面试官:netty中NIO的实现原理
我:这里回答的不是很好
因为netty是从网上找的来代替socket,本身对netty了解感觉也不是很透彻,就大致介绍了netty用了NIO,NIO是非阻塞的,由Channel通道、缓存Buffer、Selector选择器对象组成等
面试官:你的Tomcat怎么把Java类文件加载过来的?
我:java加载文件,classloder
面试官:Tomcat怎么把应用的文件加载出来
我:自己写的嘛,所以把包的路径固定了,根据固定路径去加载我的文件
面试官:Java并发相关,hashmap了解,那concurrenthashmap了解吗
我:hashmap、hashtable、concurrenthashmap介绍和区别,重点讲解concurrenthashmap
面试官:hashmap为什么是线程不安全的?
我:详细介绍hashmap产生死循环的过程
到现在我也面试一些公司,感觉hashmap、hashtable、concurrenthashmap,这是必问的知识点,所以一定要牢牢掌握
面试官:volitail和synchronized了解吗?他们的区别能介绍一下吗
我:介绍了volitail,介绍了synchronized从无锁升级到重量级锁的过程
面试重点锁:jvm方面的锁synchronized和继承Lock接口的锁,也要很清楚的了解
面试官:jvm相关知识,full GC发生的原因可能有哪些?
我:老年代满了、大对象将要进入老年代,老年代空间不足、元数据区满了。
jvm垃圾回收算法等方面的知识也是面试常问的
面试官:MySQL常用的两个底层引擎,知道区别吗
我:innodb和myisam,介绍区别
基本说到数据库,数据库索引和数据库是引擎是必问的点
面试官:一个服务怎么来选择是用SQL还是noSQL?假设有1百万行数据,用户会对数据做随机查询,没有明显的数据热点
我:我说是用SQL
面试官:为什么用SQL,不用redis
我:1百万条数据,算是数量多的数据了,SQL可以轻松抗住的。但是1百万,Redis也是可以的(这里我不是很清楚为什么,面试官很好的给了解释)
面试官:Redis是作为缓存存在,大部分是用于热点数据存储,如果没有明显热点数据,用Redis的用处不大,所以一般会采用SQL,如果用Redis来抗住这样存储的量的话,需要一个相对较大的存储空间来给数据库抗压,但如果说我们考虑到成本不能用太多的Redis内存存储的话,那么他本身对于缓存来抵挡热点功能的话,起不到太多的作用,这时可能就是打入MySQL缓存会好一些,这算是一个技术选型上面的考量
面试过程中有难度的一个是考算法,另一个就是场景题,从场景题的回答中就能看出我们是不是真的把这些知识牢牢掌握并且能够应用于实际中,并且要考虑诸多因素来进行分析,毕竟学了理论最终还是要应用的
面试官:http和https之间有什么区别吗
我:介绍了http在传输层和http的缺点,从而引出https,以及https如何弥补了http的缺点
面试官:在这个基础上听过http2协议吗
真正热爱技术的人会经常去关注一些业界新兴技术的,因为互联网时代技术迭代太快了,我们要时刻关注新技术,学习新技术
我:不是很了解,但是说了一些
面试官:这是业界最近出来的,可以了解一下
(这时已经过去20分钟了,技术方面感觉没有发挥好,一些知道的没有很好的表达出来)
开始说项目了
面试官:介绍一个你认为做的一个最大的最有难度的项目吧
我:项目介绍三分钟
这里还是把我的项目背景简单介绍一下吧:
河北大学大型仪器论证系统,我们学校有一个实验办部门,管理着学校各种大型贵重实验仪器的采购,一旦有实验室需要购买,就要填写很多申请信息交到实验办,然后实验办人员再通知相关专家统一时间来实验办进行申请论证,实验办人员根据专家给出的评审结果决定是否同意采购。这个过程太麻烦,于是我们就做了一个线上系统来缓解这些麻烦。首先这个系统涉及三个角色,实验办人员,申请者,专家,申请需要采购仪器的时候就去系统发起申请,填写相关信息,填完完信息后,实验办人员首先进行一个初筛,不通过可以直接驳回,如果能通过就可以安排专家进行论证,并且短信通知专家,专家会对该申请从不同方面进行打分,并且可以对申请者进行提问,每一次专家提问或者是申请者回答专家的问题,都会有对应的短信提醒,等所有专家论证结束了,实验人员会参考专家打分给一个总评,并决定是否同意采购
这里一定要介绍最能拿的出手的项目,并且在介绍项目的过程中展现我们对于业务的把控能力,攻克了那些技术难点,担任什么角色,在项目里面学到了什么,有了什么成果。
面试官:技术上的难点
我:技术难点的话有一个是角色权限校验、阿里云的短信接口、调用微软的在线预览
面试官:说说对spring-boot的了解
我:spring-boot这个框架是基于spring框架的,我是先介绍了AOP和IOC
对于spring框架AOP和IOC是基本要了解的,也算是框架的核心
面试官:另外一个项目,主要负责了什么
我:个人独立完成的,工期及技术上难度不大,从需求分析到原型图、数据库设计以及编码全是个人完成
面试官:这个项目有一个前端app,你的APP和服务端是如何通信的
我:通过http链接
面试官:长链接还是短链接?
我:短链接
另外一个项目确实是做的时间比较长,有些细节都忘了,所以面试前把我们做过的项目重新过一遍是很重要的
面试官:GitHub上有开源项目吗,有参与开源项目吗
我:我们实验室是用的GitLab
面试官:我看你CSDN写了很多博客都是你自己的东西吗
我:(这里是很开心,面试官看了我的博客)确实是自己写的,也有一部分是转载的
阿里是很注重个人能力的,很多东西只靠自己说还是没有太大的说服力,所以我们有实际的东西给面试官来看是最好的证明
面试官:我看你博客也写了一些算法相关,问一个算法。假设一个业务场景,比如说百度地图,需要你来实现从A地点到达B地点,中间可能需要走路、乘坐公交或者其他交通方式,这个导航功能你要怎么设计?
我:首先是想到了图,其实对图的了解不深,面试官只要求说一些大概思路。想到了迪杰特斯拉算法、弗洛伊德算法、广度优先遍历这些来查找几条可行的路径。比如我们的地图,有多条线路,有时间最短、换乘最少、走路最短这些要考虑
对于图这种数据结构,课堂上数据结构学过,私下并没有做过多的了解,所以感觉回答的不是很理想
面试官:有参加过一些竞赛吗,有获奖经历吗
我:讲了大一参加的一个人脸识别国家级项目
还是那句话,想进阿里的人很多,你要方方面面优秀了,阿里才会去认可你,所以我们在校期间有精力的话尽量多参加一些比赛竞赛吧,我四面的时候这方面就很难受
面试官:假设在拍脸的时候,镜头前有一个真实的人脸,后台数据有一些人脸的照片,你是怎么匹配到镜头前这个人就是数据库中的某个人的
我:我们当时是调用的face++接口,他的原理当时是根据人体面部68个点来进行匹配,并且我们在拍照的时候要求张嘴,扭头来分辨这是一个活人而不是照片,我记得我们当时是达到了80%多的一个匹配度
由于这个项目是大一的时候参加的,过去都两三年了,具体的内容很模糊了,给面试官说的也没有太细
面试官:OK,我没有问题了,你有什么想问我的吗
我:问了阿里的rpc框架,日志
面试官:面试官对于我的提问都很认真的做了回答
一面至此结束,面试官的问题基本都回答上来了,只是有些回答不是很好,但是阿里面试官都是很认真的面试你,这也是阿里面试官的一个优点,不论你面试的怎么样,不论你的问题是多么幼稚,他们都会很认真的回答你,以一种平等的身份和你沟通
期待锦鲤!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。