前言:

前一段时间和大牛们交流了一下,据反馈现在Android岗位也没有以前那么多了,没这么好找了,面临2016年寒冬季节,大量公司模仿O2O模式导致死掉企业的很多,在加之培训机构大量的培训人,导致供大于求,当然这不意味着饱和,只是市场更趋于合理一些(只要技术好不用怕的)。最近结合一些面试的同学的反馈,顺便整理了下一些面试题目。希望对大家有所帮助,后期会不断更新添加新的面试题。可以帮大家查漏不缺。以下是(2016、2017 、阿里、腾讯、百度、华为、京东、搜狗和滴滴面试题汇集)

就算写出答案也没必要(我写了部分面试答案),因为开发与实际答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解吧!切记:不要背答案,多理解。

最新整理

1.简述synchronized?Object;Monitor机制;

2.简述happen-before规则;

3.JUC和Object;Monitor机制区别是什么;简述AQS原理;

4.简述DCL失效原因,解决方法;

5.简述nio原理;

6.jvm运行时数据区域有哪几部分组成,各自作用;

7.gc算法有哪些;gc收集器有哪些;

8.简述class加载各阶段过程;class;loader有哪些模型;

9.简述常用的JDK命令行工具;

10.简述字节码文件组成;

11.讲讲你平常是如何针对具体的SQL做优化;

12.mysql的存储引擎有哪些,区别;

13.gc:内存模型;

14.gc:垃圾回收;

15.多线程:如何实现一个定时调度和循环调度的工具类。但提交任务处理不过来的时候,拒绝机制应该如何处理;线程池默认有哪几种拒绝机制;

16.多线程:如何实现一个ThreadLocal;

17.说说你了解的一个线程安全队列;

18.Atomic包的实现原理是什么;         

19.CAS又是怎么保证原子性的;

20.string分析1000次循环subString用了多少内存;

Java基础

1.集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap;

2.进程和线程的区别;

3.Java的并发、多线程、线程模型;

4. 什么是线程池,如何使用? 答:线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用new 线程而是直接去池中拿线程即可,节

5.省了开辟子线程的时间,提高的代码执行效率。

6.数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁;

7.Java中实现多态的机制是什么;

8.如何将一个Java对象序列化到文件里;

说说你对Java反射的理解; 答:Java 中的反射首先是能够获取到Java 中要反射类的字节码, 获取字节码有三种方法,

1.Class.forName(className) 2.类名.class 3.this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor 等类,这些类提供了丰富的方法可以被我们所使用。

9.同步的方法;多进程开发以及多进程应用场景;

10.在Java中wait和seelp方法的不同;答:最大的不同是在等待时wait 会释放锁,而sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。

11.synchronized 和volatile 关键字的作用;答:1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2)禁止进行指令重排序。

12.volatile 本质是在告诉jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。

1.volatile 仅能使用在变量级别;synchronized 则可以使用在变量、方法、和类级别的

2.volatile 仅能实现变量的修改可见性,并不能保证原子性;synchronized 则可以保证变量的修改可见性和原子性

3.volatile 不会造成线程的阻塞;synchronized 可能会造成线程的阻塞。

4.volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编译器优化

13.服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达;

14.ThreadLocal原理,实现及如何保证Local属性;

15.String StringBuilder StringBuffer对比;

16.你所知道的设计模式有哪些; 答:Java 中一般认为有23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰