[聚合文章] 2017年终巨献阿里、腾讯最新Java程序员面试题,准备好进BAT了吗

程序员 2011-10-19 30 阅读

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层都可以涉及)。

经验

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。