2018秋招Java和Android面经

秋招面试了Java和Android两个岗位,分享一下面试经验。

Java

微盟

  1. Java中线程池的实现(核心线程,阻塞队列)
  2. 手写单例模式(双重判空或枚举实现)
  3. 数据库索引(聚集索引、非聚集索引)
  4. 数据库索引的实现(B树,B+树)
  5. 联合索引的规则,为什么
  6. GET和POST的区别
  7. 多线程的几种实现方式
  8. String、StringBuffer、StringBuilder的区别
  9. String类能被继承和修改吗
  10. final修饰变量、方法、类各有什么用
  11. 手写队列
  12. JVM分几块,它怎么加载类
  13. GC的几种方式
  14. 乐观锁和悲观锁
  15. Integer a = 20, b = 20;问a==b的结果,如果a和b都是130呢?
  16. 设计一个电商平台(面向模块)
  17. 设计一个抢红包活动(乐观锁)
  18. AOP是怎么实现的?
  19. Lambda表达式
  20. 现场敲代码:有1对刚出生的兔子,到了3个月大可以生小兔子,每对兔子每隔一个月生一对,小兔子到了3个月大也可以生育。兔子到了24个月大丧失生育能力,到了36个月大死亡。请问10年后有多少兔子?(对月份进行建类,保存该月出生的兔子数量)

贝壳

  1. HashMap的插入以及扩容过程,装载因子和Hash算法,是否线程安全?
  2. ConCurrentHashMap,线段锁
  3. 数据库事务及事务的隔离级别(脏读、幻读等)
  4. 数据库索引类型,什么是B+树,什么是Hash索引
  5. 线程池的实现(核心线程满了怎么办?队列空了怎么办?队列满了怎么办?)
  6. TCP如何实现可靠传输并减少网络流量(报文排序、滑动窗口、重传)
  7. 为什么POST请求是安全的?
  8. 如何实现LRU缓存?
  9. JDBC中PreparedStatement和Statement的区别
  10. Cookie和Session
  11. MySQL两种引擎的区别
  12. 代理模式:静态代理和适配器模式的区别?
  13. Servlet的生命周期
  14. 怎么在Tomcat上部署应用?
  15. 是否了解NIO?
  16. volatile关键字,是否了解内存屏障?

Android

饿了么(时间太久了,很多忘了)

  1. http和https的区别,讲一下你了解的加密算法
  2. 造成死锁的条件
  3. RecyclerView相比于ListView的优势
  4. Looper,MessageQueue,Handler,Message之间的联系
  5. Fragment生命周期
  6. 怎么写一个线程安全的ArrayList?
  7. 合并两个已排序的链表

小米

  1. HashMap源码理解(新建、插入、扩容)
  2. Hash算法的作用是什么?Hash值相等意味着什么?
  3. 线程池,线程同步的方法
  4. Java加载类的时机
  5. 垃圾回收机制(新生代,老生代)
  6. View的事件机制(什么时候消费事件,不消费的话会怎么办)
  7. 自定义视图的方式,讲一下你写过的自定义视图
  8. 是否了解动画
  9. Handler的使用,如何在子线程中使用过Handler?
  10. ThreadHandler
  11. AsyncTask内部实现
  12. 进程间的通信方式
  13. EventBus源码,EventBus和观察者模式有什么区别
  14. Glide的源码
  15. 对WebView有什么了解?
  16. 手写:给定一个数组,原址下将奇数放前面,偶数放后面(头尾指针)
  17. 手写:两个栈实现队列
  18. 手写:给定一个不包含重复元素的数组,输出全排列
  19. 求一个数组的最长上升子序列(给出DP公式即可)

你可能感兴趣的:(2018秋招Java和Android面经)