转载自一片枫叶_刘超的博客
前段时间公司坚持不下去了,所以加入了找工作的大军。上一家公司是一家o2o创业公司,在里面呆了一年半多,现有的公司的产品就是从零开始一点点参与完善迭代的,在这个过程中从中也学到了很多也成长了很多,更认识了一帮可爱的同事。
奈何大环境不好,公司已经坚持不下去了,所以开始准备找工作。从开始的准备面试题,面试找工作,换房子,处理一些家里的事等,零零散散大概花了二十多天的样子,这里需要抱歉的是博客和github上的问题没有及时解决。
参加了不少公司的面试,有大公司有创业公司,有二线公司有小公司的,下面就是自己总结的面试题(这里不在标注那些面试题对应着那家公司,至于面试题的答案,这里暂时先不写了):
聊一聊protobuf是如何使用的?使用protobuf作为网络传输格式有哪些优势?
长连接是如何实现的?遇到过哪些问题?心跳机制的实现?耗电量,流量如何?稳定性如何?
简单谈一谈recyclerview、listview、scrollview三者之间的区别?
谈一谈你对线程的理解?线程之间如何实现线程同步,多线程间资源访问有何问题?谈谈你对synchronized关键字的理解?
Android中有哪几种动画?那些类型?他们之间有哪些区别?
项目中使用到了imageloader,谈一谈你对imageloader的理解,如何实现的图片资源的缓存?
简单介绍一下arrayList,linkedList,vector三者之间的区别?
如何配置activity使之成为启动activity?
如何实现序列化,序列化的原理与作用,Serializeble与Parcelable之间的区别?
简单介绍一下项目中使用的编程模式,说说mvc,mvp,mvvm三者之间的区别?
谈一谈java中反射机制的实现原理,以及你对他的理解?
项目中使用到了eventbus,那么简单说一下其实现原理?
谈一谈hashmap的内部实现,hashcode与equals方法?
谈一谈service服务,如何设置前台服务,service的生命周期,bindService与startService的区别,什么场景下使用?
项目中使用了volley框架,谈一谈你对volley框架的理解,其有哪些使用规范?
谈一谈java中map与set的区别?
什么是单链表?什么事循环链表?二者之间有何区别?如何判断某一链表结构为循环链表?
谈一谈Android中的dex分包方案?
简单介绍一下Android中apk文件的构建流程?
简单谈一下你了解的组件化开发?
那些加密算法?对称性加密与非对称性加密?二者之间有何区别,具体有哪些加密算法?
Android中webview控件版本适配问题?性能优化问题?内存溢出问题?
是否可以使用gradle脚本开发?是否使用过python?
简单介绍一下base64,其有何作用?
简单介绍一下Activity生命周期?各种情况下生命周期的调用情况?
简单介绍一下Service生命周期?startService与bindService的生命周期?
如何遍历二叉树,以及遍历二叉树的复杂度空间复杂度?
知道二叉树前序遍历,中序遍历求后序遍历?
如何实现service的保活?有哪几种方式?各有哪些利弊?
简单介绍一下长连接丢包的理解?
简单介绍一下TCP连接中四次挥手与三次握手?
Android中如何终止进程?
简单介绍一下leakcanary检测内存溢出的原理?
简单介绍一下过度绘制原理?
volley框架中oom是如何产生的?
在hdpi,xhdpi中加载同一张图片内存大小比较?
Bitmap对象的ARGS_8888/ARGB_4444等图片质量参数的区别?
简单介绍一下Java中的四中引用:强引用,软引用,弱引用,虚引用以及各自的区别?
简单介绍一下Binder机制原理以及实现实例,Android中是否有其他的进程间通讯方式?
Android中的热修复方案实例,原理与区别?
平时开发过程中涉及到的设计模式?简单介绍一下你熟悉的某种设计模式?
项目中使用了scheme协议,简单介绍一下其作用与简单使用方式?
你参与过那些开源项目以及负责哪方面的工作?
简单介绍一下java中的泛型,泛型擦除以及相关的概念?
java类加载器的加载流程?
单例模式的各种变种?懒汉模式,饿汉模式等等
HashMap的扩容机制?
list,vector线程安全性问题?
java中有哪几种classloader?
Android中进程的级别?以及各自的区别?
Android中的杀死进程和设置中的结束运行有何区别?
Android中的线程池?Android多线程之间如何交互?
Android中的多进程如何理解?如何配置Activity跨进程启动?
java中代码块,静态代码快,构造函数的加载顺序?
Android中Surfaceview相关概念?
Android中性能优化,内存泄露场景,以及相应的解决方案?
Android中Handler异步消息机制?
Android中的事件分发机制?
View的绘制流程,主要方法等?
简单介绍一下如何自定义View组件?
Bitmap如何优化?Bitmap的缓存策略?
Activity的启动模式,区别以及各自的使用场景?
Service与Activity之间如何通讯?
手写代码实现一个出入栈?
手写代码实现两个栈实现一个队列?
手写代码实现单例模式?
使用递归递归和循环实现阶乘?
手写代码实现两个数组合并并排血的操作?
手写代码实现一个快速排序以及其时间复杂度和空间复杂度?
还有一些问题记得不是特别清楚了,这里面有一些大公司:百度,360,网易,乐视,小米,知乎等等,当然也有一些小公司创业公司等。
由于这次想去个大一些的公司,所以主要针对大公司做了一些复习,这里不得不说,想去大公司面试的童鞋一定要看一下数据结构和算法。比如常见的数据结构:数组,链表,栈,队列,二叉树等等;常见的排序算法也要知道几种,以及他们各自的时间负责度和空间复杂度。