开果科技面试题

开果科技面试题

开果科技面试题

一面

1、卡顿原因、解决办法。为什么透明视图不如不透明视图?

2、闪退原因、监测、过程。友盟是怎么捕获闪退的?从一个事件到闪退发生了什么?

3、图片的压缩,从600k到500k,不能设置固定压缩比,应该怎么做?压缩图片,压缩图片实际压缩的是哪些东西?加载超大图;图片在计算机中的存储形式;10M的图片加载到内存中是多大?大图是怎么加载的?

图像文件存储的都是每一个像素对应的颜色值。

4、字典的本质?哈希表原理?

哈希表。

5、链表和数组,哪个容易找到地址?

数组。

  • 在内存中,数组是一块连续的区域。插入和删除数据效率低。随机读取效率很高,因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据。

  • 链表增加和删除数据很容易。查找数据时效率低,因为不具有随机访问性。

6、列表有好多页,某一页和后边加载的一页中有相同的数据,怎么处理?

7、动态库和静态库的区别。

8、设计模式。

二面(电话面试)

1、什么时候开始接触 iOS?怎么学的iOS?

2、公司多少人?什么项目?

3、你会选择什么样的公司?

4、数据库(SQLite/Realm)是怎么保证线程安全的?

5、UserDeafaults 系统做了哪些优化?为什么可以在主线程上去做存取?如果让你实现,方法已经是同步的方法了,你会怎么处理?

6、+load 和 +initialize 方法什么时候会调用,+load 和 +initialize 方法、main 方法这三个的调用顺序。

7、@class 和 #import 在编译的时候有哪些区别?

8、JSON 转 Model 你用的是什么?MJExtension 字典转模型的具体步骤?拿到字典了,第一步做什么,第二步做什么?

9、WebView 跟 JS 是怎么交互的?

10、WebView 怎么存 cookie?

11、A->B->C->D 从D返回到B。说几个不同的实现思路。

  • 方案1:for 循环 self.navigationController.viewControllers 判断某个控制器是否是 B 如果是就 popToViewController:B。
  • 方案2:self.navigationController.viewControllers 是一个不可变数组,可以赋值给一个可变的数组,然后把 C 移除,然后再赋值给 viewControllers。
  • 其他方案:提示不一定要 push,present出来的怎么弄?

12、二分查找。

13、深拷贝与浅拷贝,某个值得改变可能会影响原始值,那是深拷贝还是浅拷贝?

14、性能优化?图片加载到 UIImageView 上经过了哪些过程?

15、Label 怎么多行显示。

16、Button有哪些状态?

17、dispatch_group_notify 是在哪个线程上?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×