面试遇到的问题:
java:
1.说说你对java多线程的理解;
2.java的四种线程池以及它们的区别;
3.java中volatile,synchronize的使用场景以及原理;
4.java的内存模型;
5.java垃圾回收机制,如何确定对象可以被回收,哪些对象可以作为gcroot;
6.arrayList,linkedList区别以及底层实现(数组,链表)以及线程安全;
7.HashMap, ConcurrentHashMap,HashTable之间的区别,底层实现,线程安全,hash算法,segment,rehash,如何自己优化hash算法等;
8.java的注解和反射;
网络:
1.http和https的区别,说说你对https加密的理解;
2.TCP|IP,滑动窗口;
3.http状态码;
数据结构
1.数组和链表区别;
2.单链表,循环链表,双向链表;
3.二叉树几种遍历方式;
算法
1.twoSum;
2.LinkedList遍历;
3.合并两个有序数组;
4.100个数中求前10个最大数的和(堆排序);
5.手写冒泡,归并,快速排序;
6.反转二叉树,反转链表;
Android
1.Glide源码,缓存,LruCache,生命周期,线程池,为什么可以链式调用;
2.Retrofit,Okhttp源码,线程池,五个拦截器,同步异步,注解,动态代理;
3.Rxjava源码,Rxjava+Retrofit在项目中的运用;
4.Activity的几种启动模式,Activity是如何启动的(从点击app图标到展示出闪屏图的系统调用);
5.Android中实现插件化的几种方式以及他们的不同,谈谈你对主流几种插件化框架的理解;
6.Glide,Fresco,Picasso三种框架的区别以及优缺点;
7.如何自己封装一个图片,网络加载,自动打包框架;
8.handle原理,为何主线程loop无线循环不会造成卡死,使用handle进行两个子线程交互,什么时间去取message;
9.mvc,mvp,mvvm区别;
10.Gradle多渠道打包原理;
11.常用动画以及原理;
12.布局优化,内存优化(内存溢出,内存抖动,内存泄漏),电池优化如何实现以及原理;
13.Android中进程之间的通信(Binder机制的原理);
14.如何建立一个下载任务以及断点续传;
15.view的绘制流程;
16.事件的分发于处理;
17.Bitmap的压缩,点击查看高清大图;
设计模式
1.单例模式的两种方式以及android项目中应用;
2.代理和动态代理;
3.几种工厂模式以及他们的应用;
4.观察者模式结合Rxjava;
5.责任链模式;
今年行情不好,很多公司裁员,想必大家也是知道的。总体感觉市场对于开发者的要求不再仅仅是android的相关知识,而是用考算法的方式筛选更优秀的人才。各位同行尤其是想进大厂的同行,一定要恶补数据结构与算法,不要让他们成为你成功路上的绊脚石。
网友评论