腾讯面试题

整理了一些早期的腾讯iOS面试题,发出来供大家参考。

1、自我介绍

进行自我介绍,介绍自己的工作经历和项目经历。

2、主要项目介绍

介绍项目的功能、难点、自己做出的贡献。

3、常用那些第三方库,是否了解,挑一个介绍原理?

AFNetworking、MJRefresh、MBProgressHUD、SDWebImage、SAMKeyChain、微信、FDFullscreenPopGesture、Masonry、IQKeyboardManager、FMDB、MLeakFinder等

4、简述AFNetworking的优势

  • 原有基础urlsesson上封装了一层,在传参方面更灵活,
  • 回调更友好,
  • 支持返回数据序列化
  • 支持文件上传,断点下载,
  • 自带多线程,防死锁
  • 处理了Https证书流程,节省移动端开发
  • 支持网络状态判断

5、NSURLConnection与NSURLSession的区别

简述主要区别

6、主要介绍项目难点

项目遇到了什么难点,自己是如何解决的

7、tableview卡顿原因

  • cell中需要加载图片及设置成圆角(layer.masksToBounds=YES)产生离屏渲染;
  • cell的重新布局;
  • cell的高度不确定;
  • cell中的控件的数量;
  • 全局更新TableView;
  • 使用了clearcolor,无背景色,透明度为0;
  • 使用addView给cell动态的添加View;
  • 实现了无用的代理方法;
  • 做了多余的绘制工作;
  • 没有预渲染图像。

解决:

  • 加载网络图片使用异步加载,并缓存;尽量不要设置圆角,采用带圆角的图片;
  • cell的布局填充操作比较耗时,一般创建好久布局好;
  • 提前计算cell的高度并缓存cell的属性;
  • 尽量使cell的布局大致相同,不同风格的cell采用不同的重用标识符,初始化添加控件,不适用的先隐藏;
  • 可以采用局部更新cell的内容;
  • 因为渲染耗时较长,尽量使用颜色设置;
  • 自定义cell,预先布局好cell的子视图;
  • 实现一些必要用到的代理方法;
  • 在实现drawRect:的时候,它的rect参数就是需要绘制的区域,这个区域之外的不需要进行绘制。例如可以用CGRectIntersectsRect、CGRectIntersection或CGRectContainsRect判断是否需要绘制image和text,然后再调用绘制方法。
  • 在bitmap context里先将其画一遍,导出成UIImage对象,然后再绘制到屏幕。

8、数据存储

– 文件:沙盒、Plist、NSKeyedArchiver归档 / NSKeyedUnarchiver解档

– NSUserDefaults

– 数据库:SQLite3、FMDB、Core Data

9、归档时,如遇类型更改怎么办?

增加类型判断,或者runtime自动归解档

10、gcd用过哪些,应用场景,简述原理,gcd 同步异步组合?

https://www.jianshu.com/p/2d57c72016c6

https://juejin.im/post/6844903443379798030

11、drawrect layoutsubview分别何时触发?

https://www.jianshu.com/p/132b84d1ba80


尊重原创内容,转载请注明出处
本文链接地址: https://www.awnlab.com/archives/592

为您推荐

发表评论

邮箱地址不会被公开。 必填项已用*标注