Android面试总结

  Java类

  1. java核心思想 Java的面向对象思想   抽象  多态 继承 封装
  2. java高级知识,注解,反射,泛型的理解与作用
  3. 说下LinkedListArrayListHashTableHashMap的区别与存储过程与遍历方式
  4. 手写一段代码,如何找出一段字符串中,出现最多的汉字是哪个。
  5. 手写三种单例模式,冒泡排序 快速排序 二分查找 
  6. 什么是hash,他的作用是什么。hashMap源码是什么,他是依据什么原理实现的。Hash的底层实现是怎样的?
  7. 给定命题,一串字符串中有通配符与占位符,如何化简优化(方法忘记可以简写)
  8. 说下你对Collection这个类的理解
  9. 说下java虚拟机的理解,回收机制,JVM是如何回收对象的,有哪些方法等
  10. serilizable和parcelable的区别啥?
  11. LRU算法 
  12. 线程中sycronized和lock 的区别 sycronized的原理?

二 Android类

1.四大组件 

1)Activity的生命周期与启动模式 两个Activity跳转的生命周期,如果一个Activity跳转另一个Activity再按下Home键在回到Activity的生命周期是什么样的,热修复的实现原理与区别(因为我简历里写了)。说下Activity的横竖屏的切换的生命周期,用那个方法来保存数据,两者的区别。触发在什么时候在那个方法里可以获取数据等。

2)fragment的生命周期   activity跳转到fragment的生命周期?

3)onPause  onStop的区别?

4)简单介绍四大组件  什么是多进程,进程和线程的区别,如何给四大组件指定多进程

5)说下四大组件的启动过程(Framework层去说,不必说出每个方法的名字,大致流程即可)。四大组件的启动与销毁的方式

6)说下你对广播的理解,广播都有哪几种类型   本地广播效率比较高 为什么?

7说下你对服务的理解,如何杀死一个服务。服务的生命周期(startbind),前台服务和后台服务。

8)如何自己跟踪一个应用的启动时间 (注意:application  里面的attachBaseContext  和onWindowFocusChanged   )


2.framework层的理解

1)说下你了解那些framework


3.优化

1)性能优化 内存优化 实际开发中的 布局优化 内存优化,APK体积优化,代码优化,资源优化,缓存,数据库等 ListView如何优化,复用的原理,为什么会图片错位,如何解决,分页的思想是什么。

2)Bitmap如果优化,他的三级缓存的大致思想与逻辑  bitmap的三级缓存思想与如何优化bitmap

3ListView RecycleView的区别

4)ListView的RecycleBin机制原理



4.数据结构

1)数据结构(这方面是我的弱项,于是给我一个场景让我如何去选择,为什么)  说下Android中特有的数据结构与常见的java数据结构(熟悉那个说那个),存储过程,源码与底层实现。

2)排序等算法  链表和数组   


5.自定义View

1)给我说一个你项目中你用到的自定义View的实现,不用细节到代码,主要的思想与核心方法输出即可。

2)View的加载流程 如何实现一个自定义View

3)设计一个ListView左右分页排版的功能自定义View,说出主要的方法。

4)自定义控件 三个构建方法 具体啥时候回调用


6.常用的设计模式以及思想


7.线程与多线程

1)java线程,场景实现,多个线程如何同时请求,返回的结果如何等待所有线程数据完成后合成一个数据

2)线程种类

3)Android子线程与主线程交互方式,原理以及各自的优缺点。

4)有哪几种创建线程的方式,优缺点

5)线程切换与线程池的种类与作用,什么情况下使用多线程,有什么好处

6)Android中的线程有那些(我提到HandlerThreadAsyncTask又问了他们的原理与各自特点)


8. Handler

1)handler的使用与原理


9.内存泄漏

1)在实际开发中的内存泄漏产生原因,如何查看,和你所知道的内存泄漏检测工具

2)如何避免内存泄漏


10.进程间通信 AIDL

1)多进程之间的通信的方式,如何使用AIDL。他的使用场景是什么

2)说下你对多进程的理解,什么情况下要使用多进程,为什么要使用多进程,在多进程的情况下为什么要使用进程通讯。


11.数据存储

1Android的数据存储方式有哪些,是否SQLite中要继承那个类来创建与更新数据库。SQL语句掌握怎么样。如何得到操作数据库的类等。

2)sharepreference存储是否支持进程间数据存储,为什么?

3)数据库操作中更新表结构(表字段的增加和减少)以及数据库基本的增删改查。

4)多线程进行数据库操作应该怎么做?


12 数据请求

1)如何和后台交互,post请求的数据格式定义在那里定义,手写出来。

2)httphttps的理解与4层都是哪4层,在一个请求过程中都是什么时候走这些流程与各自的作用

3)http的结构有那些(请求头,请求行之类的)

4sessioncookie的区别

5)http和socket请求的区别(长连接和短连接)

6)http和https 的区别


13 动画  

     属性动画 补间动画  和帧动画  动画实现的基本思路  属性动画的优势


14 事件分发机制和View绘制流程(从activity开始 到decorView 到ViewGroup 到View)


15.其他

1)项目介绍,开源框架的认识如何封装,项目中的难点

2) Manifest.xml的里有什么和作用

3)如何选择第三方,从那些方面考虑

4)注解的作用与原理  说下你用过那些注解框架,他们的原理是什么。自己实现过,或是理解他的工作过程吗?

5)设计一个音乐播放界面,你会如何实现,用到那些类,如何设计,如何定义接口,如何与后台交互,如何缓存与下载,如何优化(15分钟时间)

6)你是如何实现类始于QQ表情图的,实现动图与图文并现的原理你简单说下(项目中有)

7)从哪些角度可以减少APK体积的

8)是否了SurfaceView,它是什么?他的继承方式是什么?他与View的区别(从源码角度,如加载,绘制等)

9)如何实现进程保活

10)说下冷启动与热启动是什么,区别,如何优化,使用场景等

11)是否接触过蓝牙等开发

12)说下binder序列化与反序列化的过程,与使用过程

13)是否接触过JNI/NDKjava如何调用C语言的方法

14)如何查看模拟器中的SPSQList文件。如何可视化查看布局嵌套层数与加载时间

15)各大平台打包上线的流程与审核时间,常见问题(主流的应用市场说出3-4)

16)支付宝与微信的支付功能接入,常见问题

17)如何在后台没有给接口的情况下如何开发应用

18你是如何封装网络请求,数据缓存,优化,文件下载,线程池,OKHttp3源码的理解,如何提交post请求,如何处理返回数据,异常处理,实体定义等实际开发中与后台协作相关知识。


你可能感兴趣的:(杂)