京东的校招面试是我第一次参加大型的现场面试,不管是初试还是复试,场面都是非常壮观,幸好两次面试都没有太怯场。
问题
下面贴一下初试和复试中遇到的一些问题。
初试:
- Android 的四大组件是哪些?
- Service 的 bindService 和 startService 有什么区别?
- Handler 能否在子线程中使用?
- View 的绘制流程?如何实现一个自动旋转的 ImageView
- 接口和抽象类的区别?
- 面向对象的三大特性?
- synchronized 关键字和 Lock 的区别?synchronized 在 JVM 是如何实现的?Java 对 synchronized 做了哪些优化?
- 介绍一下 HashMap。HashMap 在 1.8 之后用什么来存数据?(红黑树)HashMap 为什么不是线程安全的?(会成环)
- JVM 的内存模型是怎样的?
- 讲一下 C++ 中虚函数。
- 介绍以下 C++ 中的模板类。和 Java 中的泛型有什么区别?
复试:
- 对 Android 哪些部分的知识比较熟悉?
- View 绘制的分发流程。
- 有这样一个需求,在 onDraw() 中绘制 10 张图片,会有什么影响?
- 讲一下 Android 中的 Handler 机制。Looper 是如何创建的?prepare() 方法做了哪些事情?Handler 如何发送延时的 Message?
- Http 和 Https 的区别?对称加密和非对称加密有何区别?
- 长连接是如何实现的,如何维持长连接?
- 二叉树的前序、中序、后序遍历。
- 平常用到哪些设计模式?手写一个单例模式。在 Android 中单例模式失效(还是会创建多个实例)?(多进程)
- 对 Android 的插件化有了解吗?
- 讲一些 Android 的反射。Java 为什么要设计反射机制?
- 还有哪些语言可以运行在 JVM 上?(Kotlin)
- JVM 的内存模型。
- 二分查找的条件是什么?(有序)
- 快速排序的实现原理是什么?
总结
这两次面试所被问到的题目都还是比较常见的,大部分也都是在面试准备中所应该准备到的题目。初试的时候被问到 C++ 的问题让我很慌,后面也要抽时间把 C++ 中的一些知识回顾一下。关于 JVM 内存模型的问题也被问到很多次了,但是一直没去好好看这个知识点,这两次都被问中,也是很难受。
秋招之路漫漫,唯上下而求索。