Android 面试经验
1.JAVA 基础问题
你对线程的认识?
你对进程的认识?
你对面向对象的认识?
wait 和 sleep的区别?
权限修饰符有哪些?private protected default public
3.Android UI加载慢 界面卡顿原因?
Android 界面绘制过程中有耗时操作,解决办法:将耗时操作放到子线程中,更新UI在
4.Android 内存泄露的原因以及解决方案?
5.listview 实现瀑布流?
http://blog.csdn.net/guolin_blog/article/details/46361889
6.界面 瀑布流实现?
7.Android程序的热更新?
http://mp.weixin.qq.com/s?__biz=MzI0MjE3OTYwMg==&mid=2649548089&idx=1&sn=939f45217087f332f945a703c658bbe1&chksm=f1180e44c66f8752b54ff55e2f8994eec97fcca8e30c9f5a10e3503dcc029483fd630d22dd4e&scene=21#wechat_redirect
主流两种方式:1.通过ClassLoader 替换类 需要重启应用
2.底层方法指向替换方法 无需重启应用
8.内存泄露和内存溢出
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
常见的内存泄漏
1.较大的资源对象没有释放 File 没有close ,cursor 没有关闭,Bitmap没有回收
2.Android 中注册没有取消注册
3.内部类 持有外部类的引用造成的 常见handler
9.fragment 生命周期
http://blog.csdn.net/forever_crying/article/details/8238863/
10.android ANR的原因以及解决办法
http://www.jianshu.com/p/7fd95bc2a55c
11.android view touch 事件传递
ViewGroup在接受到上级传下来的事件时,如果是一系列Touch事件的开始(ACTION_DOWN),ViewGroup会先看看自己需不需要拦截这个事件(onInterceptTouchEvent,ViewGroup的默认实现直接返回false表示不拦截),接着ViewGroup遍历自己所有的View。找到当前点击的那个View,马上调用目标View的dispatchTouchEvent。如果目标View的dispatchTouchEvent返回false,那么认为目标View只是在那个位置而已,它并不想接受这个事件,只想安安静静的做一个View(我静静地看着你们装*)。此时,ViewGroup还会去走一下自己dispatchTouchEvent,Done!
12.volatile与synchronized
1)volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.2)volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.3)volatile仅能实现变量的修改可见性,而synchronized则可以保证变量的修改可见性和原子性.
《Java编程思想》上说,定义long或double变量时,如果使用volatile关键字,就会获得(简单的赋值与返回操作)原子性4)volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.
13.通过listview 实现瀑布流
http://www.2cto.com/kf/201510/444916.html
14.Android 中常用的设计模式
1.单例设计模式
2.生产者消费者模式
3.观察者模式
4.工厂设计模式
15.数据结构和算法问题
16.Android 的消息处理原理
handler message Looper
17.Android 的Binder 机制
18.Android中JNI的使用
19.Android App中常用的bug 定位和性能调优工具
18.版本管理工具 Git 和SVN
Git: http://www.bootcss.com/p/git-guide/
19.android 的垃圾回收机制
20.activity LaunchMode Task Flag 完整的流程
21.View 的绘制 Touch事件的分发 从WindowsManagerService 完成的流程
22.Wait 和 sleep的区别
23. HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安 全。
24.https 证书校验原理/https 交互流程
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。
1.为什么从上家公司离职?
答:公司目前情况估计您也了解,有的同事社保和公积金被
2.谈一下你最近做的项目?
视频通话项目 IMSDK项目 PushSDK项目
设计技术:信令设计 websocket长连接 断线重连 双向心跳 智能心跳
开发中遇到哪些问题? 如何解决的?
LeakCanary 解决内存泄漏问题
双向心跳 智能心跳 客户端状态机
3.Android UI加载慢 界面卡顿原因?
4.Android 内存泄露的原因以及解决方案?
5.listview 实现瀑布流?
http://blog.csdn.net/guolin_blog/article/details/46361889
6.界面 瀑布流实现?
7.Android程序的热更新?
http://mp.weixin.qq.com/s?__biz=MzI0MjE3OTYwMg==&mid=2649548089&idx=1&sn=939f45217087f332f945a703c658bbe1&chksm=f1180e44c66f8752b54ff55e2f8994eec97fcca8e30c9f5a10e3503dcc029483fd630d22dd4e&scene=21#wechat_redirect
8.内存泄露和内存溢出
9.fragment 生命周期
http://blog.csdn.net/forever_crying/article/details/8238863/
10.android ANR的原因以及解决办法
http://www.jianshu.com/p/7fd95bc2a55c
11.android view touch 事件传递
ViewGroup在接受到上级传下来的事件时,如果是一系列Touch事件的开始(ACTION_DOWN),ViewGroup会先看看自己需不需要拦截这个事件(onInterceptTouchEvent,ViewGroup的默认实现直接返回false表示不拦截),接着ViewGroup遍历自己所有的View。找到当前点击的那个View,马上调用目标View的dispatchTouchEvent。如果目标View的dispatchTouchEvent返回false,那么认为目标View只是在那个位置而已,它并不想接受这个事件,只想安安静静的做一个View(我静静地看着你们装*)。此时,ViewGroup还会去走一下自己dispatchTouchEvent,Done!
12.volatile与synchronized
1)volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.2)volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.3)volatile仅能实现变量的修改可见性,而synchronized则可以保证变量的修改可见性和原子性.
《Java编程思想》上说,定义long或double变量时,如果使用volatile关键字,就会获得(简单的赋值与返回操作)原子性4)volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.
13.通过listview 实现瀑布流
http://www.2cto.com/kf/201510/444916.html
14.Android 中常用的设计模式
1.单例设计模式
2.生产者消费者模式
3.观察者模式
4.工厂设计模式
15.数据结构和算法问题
16.Android 的消息处理原理
handler message Looper
17.Android 的Binder 机制
18.Android中JNI的使用
19.Android App中常用的bug 定位和性能调优工具
18.版本管理工具 Git 和SVN
Git: http://www.bootcss.com/p/git-guide/
19.android 的垃圾回收机制
20.activity LaunchMode Task Flag 完整的流程
21.View 的绘制 Touch事件的分发 从WindowsManagerService 完成的流程
22.Wait 和 sleep的区别
23. HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安 全。
24.https 证书校验原理/https 交互流程
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。