2017年终巨献阿里、腾讯最新Java程序员面试题,准备好进BAT了吗
Java基础
- 进程和线程的区别;
- Java的并发、多线程、线程模型;
- 什么是线程池,如何使用? 数据一致性如何保证;
- Synchronized关键字,类锁,方法锁,重入锁;
- Java中实现多态的机制是什么;
- 如何将一个Java对象序列化到文件里;
- 说说你对Java反射的理解;
- 同步的方法;
- 多进程开发以及多进程应用场景;
- 在Java中wait和seelp方法的不同;
- synchronized 和volatile 关键字的作用;
- 服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达;
- 抽象类与接口的区别;
- 抽象类是否可以没有方法和属性;
- 静态属性和静态方法是否可以被继承?是否可以被重写?以及原因? 修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法;
- 说说你对泛型的了解;
- Java的异常体系;
- 如何控制某个方法允许并发访问线程的个数;
- 动态代理的区别,什么场景使用;
- Dex加载过程和优化方式;
- Jvm和Gc机制;
- 常用的设计模式。
数据结构与算法
- 堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面);
- 最快的排序算法是哪个?给阿里2万多名员工按年龄排序应该选择哪个算法?
- 堆和树的区别;
- 写出快排代码;
- 链表逆序代码;
- 求1000以内的水仙花数以及40亿以内的水仙花数;
- 子串包含问题(KMP 算法)写代码实现;
- 万亿级别的两个URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
- 蚁群算法与蒙特卡洛算法;
- 写出你所知道的排序算法及时空复杂度,稳定性;
- 百度POI中如何试下查找最近的商家功能(坐标镜像+R树)。
- 遍历二叉树 自己集合实现一个队列 自己实现线程安全类 快速排序和冒泡的排序,怎么转换一下。
其它
- 死锁的四个必要条件;
- 常见编码方式;
- utf-8编码中的中文占几个字节;
- int型几个字节;
- 实现一个Json解析器(可以通过正则提高速度);
- MVC MVP MVVM;
- 常见的设计模式;
- 写出观察者模式的代码;
- TCP的3次握手和四次挥手;
- TCP与UDP的区别;
- HTTP协议;
- HTTP1.0与2.0的区别;
- HTTP报文结构;
- HTTP与HTTPS的区别以及如何实现安全性;
- 都使用过哪些框架、平台;
- 都使用过哪些自定义控件;
- 介绍你做过的哪些项目;
非技术问题汇总
- 研究比较深入的领域有哪些;
- 对业内信息的关注渠道有哪些;
- 自己最擅长的技术点,最感兴趣的技术领域和技术点;
- 项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题;
- 时针走一圈,时针分针重合几次;
- 现在下载速度很慢,试从网络协议的角度分析原因,并优化(网络的5层都可以涉及)。
经验
阿里
阿里针对大部分校招的普通人来说,一面只会放出M1级别的,对应到P6,问你点基础知识,二面可能是M2级别的也就是P7、P8的样子,运气好的遇到跟你谈谈人生谈谈职业规划什么的,运气不好的遇到那种下面带几个team还成天看技术blog的就问你点比较新鲜的知识或者是比较基础但是冷门的那种知识,所以平时没事看点跨领域的博客、看点经典名著防防身还是很必要的,经历了一整天枯燥无味的面试突然碰到一个眼前一亮的绝对是一个加分项。
腾讯
腾讯的话也是类似的道理,校招一面放出的是各个有headcount的leader,T3.1到T3.3不等,几个一面面试官对应一个二面面试官,后者是前面那几个的老大。像鹅厂这样的公司的是:
- 业务领域跨的特别广。电商、SNS、普通的C/S软件、游戏、各种App。
- 一面面试官直接对面试者负责。换句话说,通过你就意味着他要直接当你老大。
- 一面完全是随便分的,你投的感兴趣事业是互娱,但是分到的可能是SNG的某款社交产品的程序组老大面你,所以你的面试官不一定对得上的你background。
应该做哪些准备,才拥有进入BAT研发部门的资格?
Java高级架构二群688583154
- 进群:可免费领取架构师学习资料。
- 进群:获得面试学习资料
- 进群:学习架构最新技能知识
- 进群:了解最新BAT招聘动态