面试答题积累

http://kyxu.tech/2016/04/15/实习求职终结篇/
http://www.jianshu.com/p/ee15c1cf9c16
http://www.wtoutiao.com/p/e2fwlu.html
http://blog.csdn.net/xieyupeng520/article/details/50681147
iOS 中级面试题
知乎
iOS面试必看,最全梳理
百度面试
九月十月百度,迅雷,华为,阿里巴巴笔试面试六十题(第411~470题)

1. 都熟悉哪些框架,有没有特别了解的?

2. 说一说GCD的底层。

3. 同类型的问题还有 assign、weak 的区别

1.assign 在对象释放后指针不会置nil,指向值类型
2.weak 在对象释放后运行时系统自动将weak置nil

4. ARC 如何实现

5. 编译时、运行时区别

对于C语言,函数的调用在编译的时候会决定调用哪个函数,编译完成之后直接顺序执行,无任何二义性。 OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编 译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段就会报错)。

6. weak 属性的对象在废弃后 指针是如何指向 nil 的

7. MVC、MVVM

8. 知道 KVO、KVC 吗?

1.KVO是 Key Value Observe
可以检查一个属性的变化而回调,只能观察property?
2.KVC是Key Value Coding
可以用key path设置属性,这个属性甚至可以是私有的

9. 如何监 测这个 App 的内存情况

10. 说一下你自己理解的 RunTime

1.运行系统可以改变函数的实现
2.运行时系统可以用category动态增加对象属性

11. 知道 RunLoop 吗?

参考链接
runloop
比较概括

  1. RunLoop可以保持一个线程的生命周期
  2. RunLoop是一个事件处理的循环(do while循环) 用来不断调度工作和接受事件(用户输入)

12. 知道 STL 吗(问了 List 和 Vector)

13. 用过 TableView 吗,平时怎么解决 TableView 滑动卡顿问题的?

iOS开发——项目实战总结&UITableView性能优化与卡顿问题
UITableview性能优化总结
UIKit性能调优

1. 缓存行高
2. 缓存cell里子控件的内容计算结果 
3. 控件尽量设置不透明,不用alpha=0,clearColor
4. 避免离屏渲染,不要用layer的cornerRadius和maskToBounds设置圆角和用layer设置shadow
5. 加载网络数据,下载图片,使用异步加载,并缓存,停止滑动时加大下载并发量
6. 尽量减少cell子控件的数量
7. 重用cell

14. 知道本地存储吗?

15. C++ 里面传递一个引用和传递一个指针有什么区别?

16. 说一下 C/C++ 里面变量定义和声明的区别

17. OC 里面的 property 有没有像 Swift 里面一样的 public 和 private 之分

有,只有暴露在接口里的属性和函数才能被外部调用

18. 说一下 HTTP 协议

(我说不会,就简单说了下 http 和 https 的区别,和 iOS 9 开始引导访问 https 的问题,大家可以背一下这一段:【为了强制增强数据访问安全, iOS9 默认会把所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求统一采用 TLS 1.2(SSL 3.1) 协议。】)

19. iOS响应链

20. SDWebImage原理

21. AFNetworking原理

22. AutoreleasePool原理,什么时候释放

23. Runloop是什么,是不是会自动创建,mode,source

24. Runtime,如何用runtime进行hook,hotpatch就是利用runtime来做的

25. 计算机网络五层模型是哪五层

 1. 应用层,确定进程之间通信的性质以满足用户需求;应用层协议如支持万维网应用的http协议、支持电子邮件的smtp协议、支持文件传送的ftp协议等等
 2. 传输层,负责主机间不同进程的通信;协议有面向连接的TCP(传输控制协议)、无连接的UDP(用户数据报协议);数据传输的单位称为报文段或用户数据报
 3. 网络层,负责分组交换网中不同主机间的通信;作用有二:发送数据时,将运输层中的报文段或用户数据报封装成IP数据报;选择合适路由 
 4. 数据链路层,负责将网络层的IP数据报组装成帧
 5. 物理层,透明地传输比特流 

26. http协议相关

27. 有1000亿个数字,在单机上对它进行排序

28. 手写冒泡排序代码

29. 如何统计一个城市的井盖数,方法越多越好

30. 两个水桶,一个3L,一个5L,然后问能组装成几L的水

31. 不用临时变量怎么实现 swap(a, b)——用加法或者异或都可以

32. 二维有序数组查找数字

33. 亿级日志中,查找登陆次数最多的十个用户——(不确定对不对,我的思路是)先用哈希表保存登陆####次数和ID,然后用红黑树保存最大的十个数。剑指 offer 第 30题

34. 简述排序算法——快排,partion 函数的原理,堆排(不稳定),归并排序,基数排序。

35. 说说你对 OC 中 load 方法和 initialize 方法的异同。——主要说一下执行时间,各自用途,没实现子类的方法会不会调用父类的?

36. 说说你对 MVC 和 MVVM 的理解

37. 说说你对 block 的理解。—— 三种 block,栈上的自动复制到堆上,block 的属性修饰符是 copy,循环引用的原理和解决方案。

38. 说说 UITableView 的调优。——一方面是通过 instruments 检查影响性能的地方,另一方面是估算高度并在 runloop 空闲时缓存。

39. 谈谈你对 ARC 的理解。ARC 是编译器完成的,依靠引用计数,谈谈几个属性修饰符的内存管理策略,什么情况下会内存泄露。

40. 野指针是什么,iOS 开发中什么情况下会有野指针?——野指针是不为 nil,但是指向已经被释放的内存的指针,不知道什么时候会有,如果有知道的读者还望提醒。

41. 把 "www.zhidao.baidu.com" 这样的字符串改成 "com/baidu/zhidao/www"。——老题目了,剑指 offer 的,两次逆序排列即可。

42. 求数组中和为某个值的所有子数组,比如数组是 [5,5,10,2,3] 一共有四个子数组的和是 15,比如 [5,10],[5,10],[10,2,3],[5,5,2,3]。这个就是简单的递归了,分两种情况,当前位置的数字在子数组中,以及不在子数组中。

43. 介绍 block。——我提到栈上的 block 在 ARC 下会自动复制到堆上,面试官问我从 iOS 4 还是 5 开始支持这一特性,表示不知道,我又不是学 OC 历史的,后来想想可能是公司内部老项目有这个坑。

44. ARC 会对代码做什么优化?

45. 读过某个库的源码么?——扯了一点 SDWebImage,后来被告知这个库用了 runloop 来保证滑动是加载数据的流畅性,自己看了源码后表示没有发现,唯一用到 runloop 地方是保证后台线程一直跑,也有可能是我理解错了,如果错误欢迎指正。

46. SDWebImage 下载了图片后为什么要解码?

47. MVC 具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?

48. 两个无限长度链表(也就是可能有环) 判断有没有交点

49. KVO、Notification、delegate 各自的优缺点,效率还有使用场景

50. Objective-C 中的 copy 方法

51. 如何手动通知 KVO

52. runtime 中,SEL 和 IMP 的区别

http://fengmm521.blog.163.com/blog/static/2509135820125672836405/
- SEL:OC在编译的时候会根据方法名字(包括参数序列)生成一个区分这个方法的唯一id,这个id就是SEL类型的

1 SEL 变量名 = @selector(方法名字);

   2    SEL 变量名 = NSSelectorFromString(方法名字的字符串);
   3    NSString *变量名 = NSStringFromSelector(SEL 参数);
- IMP:
>   void(*setSkinColor_Func) (id, SEL, NSString*);//定义一个函数指针(传统C语言的处理方式)

IMP say_Func;//定义一个IMP方式的函数指针(obj-C中推荐的方式)
说白了IMP就是实现方法,给一个方法起个名字,实现动态调用,不用再使用[对象 message]的方式。
IMP 的定义如下:
typedef id (*IMP)(id, SEL, ... );

所以IMP是函数指针,也是实现方法?

取得函数指针后,即是获得执行这段方法的代码的入口?

53. autoreleasepool 的使用场景和原理

54. RunLoop 的实现原理和数据结构,什么时候会用到

55. block 为什么会有循环引用

56. 使用 GCD 如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。

57. NSOperation 和 GCD 的区别

58. CoreData 的使用,如何处理多线程问题

59. 如何设计图片缓存?

60. 怎么判断某个 cell 是否显示在屏幕上

61. 进程和线程的区别

62. TCP 与 UDP 区别

63. TCP 流量控制

64. 数组和链表的区别

65. UIView 生命周期

66. 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?

67. ARC 的本质

68. RunLoop 的基本概念,它是怎么休眠的?

69. Autoreleasepool 什么时候释放,在什么场景下使用?

70. 如何找到字符串中第一个不重复的字符

71. 哈希表如何处理冲突

72. autoreleacepool(内存管理池)的使用,以及全局的autoreleace pool何时释放

两次运行循环(消息循环)切换之间

73. 观察者(KVO)的实现

通过类型混合指针机制,通过runtime,动态生成所观察对象类的子类,改变所观察对象的isa指针,使他指向它的子类,这样这个对象就神奇的变成原来类的子类,重写所监听属性的set方法,通过runtime拦截这个方法就是hook,来实现。

74. Objective-C是一门动态的语言,对象是如果调用一个方法的

75. 如果点击一个按钮,但是按钮响应的方法没有实现咋办?

(1)动态方法解析

(2)快速转发

(3)标准转发

76. 如何绘制一个三角形?

1.1 如何绘制大量三角形?
1.2 一定要重写drawRect吗?
1.3 如何刷新View界面?
1.4 Layer好在哪?

77. NSTimer有什么需注意的以及和RunLoop的关系?

78. 线程加锁原理(信号量,临界区,自选锁)

79. GCD指向了野指针了怎么办

80. AFNetworking的内部实现原理?

81. 如何用GCD同步若干个异步调用?

82. 实现水波纹

83. oc有私有方法吗

Objective-C的动态消息传递机制,OC中不存在真正意义上的私有方法

84. 为什么只能在主线程刷新UI

7cc8121c9607fb513a094e2621938f41_b.png

85. 堆和栈

详细易懂

86. 三次握手四次挥手

TCP三次握手详解及释放连接过程
TCP协议中的三次握手和四次挥手(图解)

87. socket与http的区别

socket与http的区别

88. 对网络通信协议熟悉吗?对socket和http了解吗?

对网络通信协议熟悉吗?对socket和http了解吗?

89. 字节对齐

C语言字节对齐
C语言字节对齐/7213465

  • 自身子节对齐
    如int为4字节,其开始地址必须为4字节的倍数
  • 结构自身对齐
    以结构内最大字节对齐数的倍数
  • 数组
    数组第一个对齐后面的自然对齐

计算过程,先根据上面规则计算结构体内字节数,然后按结构内最大字节对齐数的倍数字节对齐

struct B
{
        char b;
        int a;
        short c;
};

b 地址0
a对齐,地址为4
c地址为8
总共9个字节,4为倍数的最近一个为12,所以sizeOf(b)=12

90. 大端小端

[大端小端格式详解]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,678评论 0 9
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 1,959评论 0 7
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,001评论 0 12
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,709评论 0 4
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,344评论 0 35