终端研发部
关注并回复“1024”,加入技术交流群,致力于技术开发!
学习更多的面试题,可参考《 金三银四的面试黄金季节,Android面试题来了! 》,再往下看, 来自阿里面试者的两位总结。
金三已经过去,现在是银四,据我了解,好多人都会在三月份选择跳槽,为什么大家都会在三月份选择离职跳槽呢?那当然是新年刚刚过去,大家也许是觉得老公司待遇不怎么样?薪资不够高,想换个新环境等等原因,所以,三月份就变成了招聘与跳槽的旺季,那为什么四月份就比不上三月份呢?相信不用我说大家也知道,毕竟三月份大家都去凑热闹,都去招聘与面试了,四月份还剩下来的招聘与面试的人就寥寥无几了,而且四月份还没找到工作的可以用老油条来这么说也不为过,且四月份公司还招人的,那几本找的都是些大牛了。
那为什么我要说银四比金三火呢?因为,大多数人多觉得,四月份的工作难找,且薪资也不会很高,环境还不知道好不好,而且要求的还很多,面试也难面等等说法,但据我了解到的,四月份的就业情况要比三月份的好,待遇,薪资,环境等,都要比三月份的好。据我从一个好友James哪里了解到的,就在前几天,他带的两个学员,成功面试上了阿里,且还帮我整理哪两个学员的面试总结,在此,我分享给大家,希望大家在四月份要找工作的朋友,我的这篇文章能给你有所帮助。
那来两位学员我分别用A和B来代替
第一轮:电话初面
第二轮:技术面谈【技术职位尽量避免多谈管理上的工作】
第三轮:高管复试
第四轮:HR最后确认
一面:首先确认对阿里的意向度(如果异地更会考虑对工作地点(杭州)的意向度!阿里很看重这个);其次面试官一般会针对您所做过的项目来做具体技术的交流,会比较关注个人对项目细节是不是掌握到位,主要考察java的技术基础和原理,比如Spring框架以及数据库和JVM三个方面,也会交流到分布式、线程池的实现等等,重点考察是不是有比较钻研技术和技术上的亮点【不一定每个面都很厉害但一定要有亮点】;
二面:技术面,根据项目深入的了解技术实力,了解您的知识面,了解您的问题解决能力以及技术灵活运用能力,也通过这一过程考察团队合作能力、学习主动性和创新性,可以挑选2-3个做过的有典型性的项目做一个仔细 技术回顾和自己独到的理解【这会成为您的加分项】;
三面:他们最后的高管复试会涉及到相关的技术问题,大部分是对你的整体价值观做宏观的把控(比如上进心,责任心,心态,工作激情等)
HR确认:基本就是从大方向了解一下您的心态、抗压能力,工作中的角色、未来大致的规划以及对阿里的意向度
【技术基础以及的问题多看看书准备下就行了,不懂的直接说不懂没关系的;在项目细节上多把关一下,根据项目有针对性的谈自己的技术亮点,能表达清楚,可以引导面试官来问你比较擅长的技术问题,个人就可以尽情发挥】
阿里比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考;
1. Java内存结构,spring的aop的实现方法,java数据库问题定位和性能调优;
2. 关于Java异常的续承层次结构,讲述异常的续承关系;
3. java中重载和重写有什么区别,分别用什么关键字;
4. 关于分布式消息队列,分布式缓存;
5. 关于hashmap源码实现, jdk
6. 关于设计模式,uml,jvm 内存回收机制问题
7. java线程如何启动?java中加锁的方式有哪些,怎么个写法?
8. 对乐观锁和悲观锁的理解;
9. ORACLE中的SQL如何进行优化,都有哪些方式?事务有哪些特性,在ORACLE中隔离有哪些级别?
10. 介绍一下自己最近做的一个典型的项目;
11. 在项目中遇到了哪些问题,自己是如何解决的 ;
12. 目前系统支撑的用户量是多少,假如用户量提升10倍,系统会出现什么样的问题,如何重新设计系统【这里主要是想了解您的问题预见能力以及问题解决能力,考查思路】
13. 使用memcached是一个什么样的原理
14. 如何存放数据到memcached集群中,介绍一下这个过程。跟进的问题,讲一下一致性哈希算法的实现原理。
15. JVM中堆是如何管理的,JVM的内存回收机制,介绍一下
16. 分布式事务实现方式
17. 热点账户问题(项目中有就会问)
session
java锁
gc原理
hashmap
listlink arraylist 区别
aop 原理
多线程
kafka 原理和容错
spark hadoop 原理
redis 同步机制
classLoader 机制
Http 协议
cookie的限制
HashMap key的要求 , hashcode一致两个对象是否相等
JVM的原理
涉及面较广,包括谈到项目上遇到的问题,以此深入探讨。
介绍自己的工作职责、技术or管理怎么分配的
介绍项目,涉及的技术把整个流程说下。然后他感兴趣就会深入问
然后就是聊一些jvm、nosql之类的
假如服务器反应很慢,你应该怎么排查问题
怎么跟踪一个方法的用时,并且最小限度干涉业务程序
人选介绍目前目前技术管理侧重;
对阿里推荐对应岗位的理解度;
系统设计是怎么样的;
做的一些架构,数据源来自于哪里并深入问;
模块边界,缓存机制;
选用技术选型时,A和B的区别;
多线程如何用,有什么好处,和进程的区别;
多线程的过程;
多线程同步的方法,X项目中如何去实现;
分布式架构在你目前项目中的体现;
跨主机通信用过什么,接口等;
大数据存储;
结尾:你自己觉得你擅长什么,以后想走的路线,技术还是管理;
Java面试题分享:
JMS的两种模式是那些;
富客户端怎么更新;
自己设计类似ESB这样的企业数据总线应该有哪些功能;
系统架构设计;
集群中怎么控制session;
怎么样知道java存中是哪一些模块消耗内存比较多;
应用服务器的参数调整。
面试题
1. junit用法,before,beforeClass,after, afterClass的执行顺序
2. 分布式锁
3. nginx的请求转发算法,如何配置根据权重转发
4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)
5. 线程的状态
5. 线程的阻塞的方式
6. sleep和wait的区别
7. hashmap的底层实现
8. 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁
9. java内存模型,垃圾回收机制,不可达算法
10. 两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
11. aop的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理
12. 是否用过maven install。 maven test。git(make install是安装本地jar包)
13. tomcat的各种配置,如何配置docBase
14. spring的bean配置的几种方式
15. web.xml的配置
16. spring的监听器。
17. zookeeper的实现机制,有缓存,如何存储注册服务的
18. IO会阻塞吗?readLine是不是阻塞的
19. 用过spring的线程池还是java的线程池?
能回答上百分之七十,基础的广度就算OK了。如果达不到,那么缺什么就赶紧补什么。广度达到了,还需要对个别热点问题有深度。每个人的精力都有限,可以适当挑选两个热点问题进行深入挖掘。比如HashMap,要不仅仅能够说上来源码是什么去实现的,还要了解JDK1.7版本到1.8版本都做了哪些改进,为什么这么改进,ConcurrentHashMap怎么实现的,针对并发场景都做了哪些优化措施,JDK1.7和1.8的实现有什么差异。了解这些可能需要花费很大精力。但是,面试的时候一但问到了这个你非常精通的知识点,就基本进入你的主场了。这个能起到一锤定音的作用,给面试官留下极强的印象,甚至直接决定了此次面试的成败。因此,至少准备那么一两个非常精通的知识点,一定不要多,但要比面试官和其他求职者都要精通。这个赌的就是运气,只要在一个问题上能给面试官上一课,就能让对方产生“你很厉害”的错觉。
所有基础知识都要做好笔记,面试前多回顾下,在配合刷下题,问题就不大了。
要回答好项目问题,核心就是要提前做好充足的准备。首先,仔细回顾自己做过的项目。然后挑选最有价值的部分,写一篇关于这个项目的总结性文档,要讲清楚这个项目的架构,设计思路。其次是努力回想当时遇到的难点,踩过的坑,以及自己怎么思考和应对的,还有对项目后续改进的思考。这个非常重要,一定写下来。文档写出来后,还要反复提炼和补充。面试的时候就以此文档为纲领,方能做到侃侃而谈,从容应对。
面试的时候,可能会穿插一些考察性格的问题。比如,问你为什么离职/想换工作,对技术和业务怎么看,对我们公司有什么了解,对我们的业务有什么了解,你有什么想问我的,你觉得自己有什么优点/缺点。做技术的同学往往在情商方面有所欠缺,如果没有准备的话,面试时一不小心说错一句话就可能导致前功尽弃。尤其在阿里,HR是有一票否决权的。 那么,应对此类问题的第一点就是提前预防,可以提前拿张纸,猜想对方可能会问的问题,把标准答案写出来,反复推敲,然后背下来即可。比如,“你觉得自己有什么优点”这个问题,我当时的标准答案就是,“我觉得人最难了解的就是自己,所以我想借用我前领导对我的评价,XXX是个……的人”。我的这个标准答案是基于 “第三方的评价更有可信度” 这个原理来设计的。第二点,回答问题的时候表现的谦虚一点即可,而且千万不要有负能量。比如“为什么离职/想换工作”,这个问题,不要去吐槽公司或者同事,或者表达情绪上的不满。要尽量展现出自己好学上进的一面,这一点很重要。面试官会把对你的印象记录在案的,包括你的优点和缺点。因此即便技术达不到要求,也尽量展现性格上的优点。
面试一般是四到五面,以电话面试为主。最后一轮面试时HR面试,所以只要挺过前面的技术面试一般就OK了。第一轮是考察基础,第二轮开始考察项目,沟通表达能力。第三四轮会可能有编程,要求现场写代码,或者线下完成一个指定的项目。面试官的级别在p6-p9之间,一般随着面试流程的推进而升高。技术面试通过后就是HR面了,这一轮主要考察价值观。所有面试结束后,就是一个漫长的等待了,期间会有体检,背景调查,然后发offer。这个流程会有一个月的时间,比较久。需要注意的是,面试过程中一定要保证诚实,不能有半点弄虚作假。因为一但背景调查的时候发现说谎了,不但offer会取消,还会记录到人才库里。再有一点,约好了的面试不能随意爽约,这个也会永久记录。你的每次面试的过程都会详细的记录在人才库里的,因此尽量不要留下污点,以免影响以后的面试。
那为什么这两个学员能在这四月初就可以面试上阿里呢?有人就说:“可能他们是老油条,经验丰富当然能面试上了,” 你们是不是想不到,据我问James的,他们两个都是2-3年的工作经验的,基础中等。
通过以上的两位朋友总结出来的阿里面试总结,你们自己在看文章时,你自己想一下看,你能把那些问题都能回答上来么?你对自己的技术感到又想到进一步的提升么?在四月,面试黄金月的最后一月,你能把握住机会么?在你约到技术上的困难以及瓶疾的时候,你能够解决么?不能解决的,证明你在开发的道路上,你还需要继续努力学习。
在此,祝愿在四月份面试应聘的朋友们,顺利过关
阅读更多
Android 性能优化之谈谈Java内存区域
PK小程序,“快应用”设想很美,想要实现很难
如何用Python写一个贪吃蛇AI
面试必备之UI刷新大解密
相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!