面试分三部分,纯考记忆回顾问题。问题不全望参考,答案我会一一给出。以此时刻警惕自己,注意基础基础。
一、App开发基本知识
1、介绍自己项目,并列举解决的重大问题,介绍所采用的奇淫技巧。
2、OC或者安卓的内存管理机制,原理介绍一遍。
3、开发中什么情况下回遇到循环引用或者内存泄漏,如何解决。
4、容器类,可变和不可变要注意的事项。
5、MVC、MVVM、MVP的区别,并详细介绍MVVM,当前哪个框架便于MVVM开发,并介绍其原理。
6、介绍代码块,并解释代码块的原理,当引入外部变量后的区别。
7、介绍消息机制。
8、App怎么做内存优化,性能测试,卡顿怎么处理,瘦包怎么处理。
二、基础知识
9、Socket中UDP和TCP、http的区别,并介绍TCP三次握手,Socket开发当遇到丢包,粘包怎么处理。
10、进程和线程的区别。
11、串行和并行,并发区别。
12、同步和异步的区别和原理。
13、堆和栈的区别,各自的物理地址是怎么变化,高地址与低地址的。哪些数据放在堆,哪些数据放在栈,栈与堆内存是否有大小限制。
14、堆和栈区域由谁去管理。
15、解释线程锁,哪几种方式。
16、介绍项目中使用过哪些多线程,当必须要等待前面多个函数执行完之后采取执行其他方式,有几种方式去处理。
17、对于链表是否还记得,并介绍下单链表和双链表。
18、介绍自己熟悉的几种算法。
19、介绍下函数式编程和响应式编程的原理,以及其好处。是否采用过上述方式开发过项目。
三、UI知识
20、是否自定义过UI控件,并描述下实现方式。
21、UI操作一般是在主线程实现,还可以通过什么方式让UI操作在非主线程中操作并效果和主线程类似。
22、事件传递和事件相应机制,通过什么函数来处理。
23、UI适配这块是怎么处理的,框架实现原理基于什么
24、App启动过程,并介绍下。
25、绘制UI时,可采用哪些方式来。