注册 登录
主题 : 预告:最近招聘,自造20道面试题,等招聘结束,整理之后发上来,供大家撕逼
级别: 版主

状态: 连续签到 - [7天]
UID: 123750
精华: 1
发帖: 2092
可可豆: 3494 CB
威望: 3415 点
在线时间: 1556(时)
注册时间: 2012-02-15
最后登录: 2017-09-25
0 楼:  发表于: 2017-07-11 18:18    发自: Web Page
来源于 一般提问 分类

预告:最近招聘,自造20道面试题,等招聘结束,整理之后发上来,供大家撕逼   

管理提醒: 本帖被 wszcug 执行加亮操作(2017-07-13)
这是一个很正经的预告




1、64位操作系统,64位编译器  sizeof(int) sizeof(char)  sizeof(int *) sizeof(char *) 分别是多少
2、64位操作系统,一个结构 struct aStruct{int a; char b; int c; char d}; 此时 sizeof(struct aStruct) 是多少? 如果是 struct aStruct{int a; char b; char d; int c};此时 sizeof(struct aStruct) 是多少?为啥?
3、全局并发队列和自定义并发队列的区别,如果现在有两种任务需要并发处理,其中一种是:任务单位小,数量多  另一种是:任务单位大,数量少 分别应该使用哪种队列处理?为什么?
4、为了防止循环引用,我们都知道使用weak(self); 但是程序中偶尔会见到strong(self); 这种用法,请问:strong(self)的应用场景是什么?
5、为了防止循环引用,我们都知道使用weak(self),是不是所有的block 如果内部需要使用对象本身,都需要使用weakself?举例说明
6、现有一个对象a,对象a 强持有了自定义对象b、c、d, 是不是可以说,当a的dealloc 只要执行了 我就可以认为内存没有泄漏了?如果不是的话,请举出例子让a对象完全释放
7、类方法和对象方法的区别何在?类方法的生存周期? 相对与对象方法,哪类处理适合使用类方法?
8、kvo监听是否一定是在主线程完成的?如果不是,请举例说明
9、某同事开启了一个NSTimer,但是无论如何这个timer都跑不起来,作为他的老大,代码看起来没什么问题,以你10年ios的开发经验,第一反应是问题出在哪? 
10、多线程编程种,死锁产生的条件是什么?死锁是不是只在主线程发生?
11、举出一个例子,说明dispatch_sync 的应用场景
12、如何创建一个常驻线程?
13、我们知道,多线程读写,只要有1个写,就有可能出现并发问题,解决方案可以用锁,但我们又知道锁的效率不高,并且破坏程序结构,加锁的代码通常并不易理清逻辑,那么,还有什么样的手段能实现这个目的?(考虑队列) 如何实现?
14、基于13题的前提,假如现在有一个模型,写操作较少,但是读操作非常多,如何优化13题的模型,使之达到:写操作串行,读操作并行的效果?(考虑队列和dispatch_barrier函数族)
15、dispatch_group函数族的应用场景是什么?假如现在让你使用信号量(dispatch_semaphore)来模拟类似的功能,如何实现?
16、原子操作atomic 修饰的变量本身是否可以认为是线程安全的? 如果不是,那什么类型的变量可以认为是安全的,又有什么样的变量是不安全的?举例说明即可



说明:都是一些实际开发中都会碰到的问题,并不偏,并非故意刁难,非常实用并且实际的问题,为防止无限发散,个别题有提示







放出答案:

1、4 1 8 8
2、16 12
3、任务小数量多用全局 任务大数量少用自定义
4 strong(self) 应用在回调之前需要经过一段时间的运行(比如网络请求),但是又希望当结果回调之后能正确处理的场景。之所以strong(self)是为了防止当block 回调之后,在整个block 运行期间,self 始终是不释放的,防止block内代码运行一半的时候self 释放,从而导致一些不可预见的bug
5、只有满足对象间相互持有的情况才有必要使用weakself,如果所用的block 是一个静态函数,则weakself 是可用可不用的,静态函数本身也会对对象形成持有,但是对象并不能对静态函数形成持有,这就不满足相互持有的情况,
在静态函数中,如果使用了weakself,则最好结合strong(self)一起使用,避免出现题目4的情况出现,如果使用了self,则不用担心,因为在静态函数的block 执行完成之前,静态函数是不会释放self的
6、不能,只有所持对象的b、c、d、都执行 并且他们自身所有的自定义对象都执行dealloc 之后才能保证内存完整释放,一直检查到系统提供给的对象,比如uiview 我们是不能知道它是否释放的,因此只能假定系统级的对象都能正确释放,不过有一个特例就是uiwebview,众所周知,这个控件是有内存泄漏的
7、首先类方法是全局的静态方法,在app生命周期之内始终存在,但是对象方法依赖于运行时的对象是否存在于内存,
静态方法适合于频繁调用的、与对象本身无关的处理
8、kvo在哪个线程出发,则默认在哪个线程监听
9、runloop未开启
10、首先必须是个串行队列,其次,dispatch_sync所在的上下文环境的队列,和它本身的目标队列是同一个队列即造成死锁,一种特殊的情况是如果和dispatch_async 结合使用,在调度了几个不同的队列之后,如果最终执行dispatch_sync的时候队列依然跟上下文环境一致,仍可造成间接死锁
11、同步操作是阻塞当前线程,让当前线程转而去执行其他队列的任务,比如:正在进行的任务需要等待另一个任务的结果,否则无法继续,则可使用同步操作进行,
12、使用nstrehad 并在这个线程中开启runloop 设计触发模式,最后最好设置上autoreleasepool
13、可以使用串行队列来序列化读写操作
14、可以使用并行队列和dispatch_barrier_sync/dispatch_barrier_async操作,所有的写操作都直接丢到并行队列中,所有的读操作都可以通过dispatch_barrier_sync同步到这个并行队列,但是注意dispatch_barrier_sync 同步操作绝对不可以处在这个穿行队列的上下文环境中,否则会死锁
15、线程组用于 并行执行完一系列操作之后,触发某个事件,比如:10个人赛跑,只有当10个人都冲过终点线的时候比赛才结束,使用信号量可以实现设置,然后通过一个减一个 指导触发为0
16,原子操作本身是绝对线程安全的,但是它的作用范围有限,对于基本数据类型,原子操作很安全,但是对于指针类型,原子操作只能保证指针的安全性,并不能保证指针指向内存的安全性

[ 此帖被wszcug在2017-08-21 15:31重新编辑 ]

<null>
级别: 侠客

状态: 连续签到 - [105天]
UID: 535422
精华: 0
发帖: 182
可可豆: 829 CB
威望: 647 点
在线时间: 439(时)
注册时间: 2015-12-31
最后登录: 2017-09-25
1 楼:  发表于: 2017-07-11 18:25    发自: Web Page
我搬个凳子先~
我是一个有基本原则的人,我的基本原则是:看心情
级别: 侠客

状态: 连续签到 - [105天]
UID: 535422
精华: 0
发帖: 182
可可豆: 829 CB
威望: 647 点
在线时间: 439(时)
注册时间: 2015-12-31
最后登录: 2017-09-25
2 楼:  发表于: 2017-07-11 18:26    发自: Web Page
回 1楼(Leng_) 的帖子
居然是沙发???     
我是一个有基本原则的人,我的基本原则是:看心情
级别: 侠客

状态: 连续签到 - [8天]
UID: 282144
精华: 0
发帖: 116
可可豆: 265 CB
威望: 237 点
在线时间: 893(时)
注册时间: 2013-12-17
最后登录: 2017-09-14
3 楼:  发表于: 2017-07-11 18:45    发自: Web Page
    
级别: 圣骑士
UID: 566785
精华: 0
发帖: 652
可可豆: 679 CB
威望: 679 点
在线时间: 660(时)
注册时间: 2016-06-03
最后登录: 2017-09-25
4 楼:  发表于: 2017-07-11 18:50    发自: Web Page
这不得撕逼撕个100页
级别: 新手上路
UID: 312278
精华: 0
发帖: 14
可可豆: 32 CB
威望: 32 点
在线时间: 81(时)
注册时间: 2014-05-02
最后登录: 2017-09-22
5 楼:  发表于: 2017-07-11 19:35    发自: Web Page
前排占座.......
级别: 新手上路
状态: 连续签到 - [2天]
UID: 569177
精华: 0
发帖: 29
可可豆: 71 CB
威望: 59 点
在线时间: 316(时)
注册时间: 2016-06-20
最后登录: 2017-08-29
6 楼:  发表于: 2017-07-12 09:10    发自: Web Page
赶快  .....
级别: 骑士
状态: 连续签到 - [1天]
UID: 535935
精华: 0
发帖: 357
可可豆: 487 CB
威望: 484 点
在线时间: 450(时)
注册时间: 2016-01-04
最后登录: 2017-09-21
7 楼:  发表于: 2017-07-12 09:13    发自: Web Page
占座,等撕逼
级别: 新手上路
状态: 连续签到 - [5天]
UID: 499571
精华: 0
发帖: 29
可可豆: 71 CB
威望: 69 点
在线时间: 318(时)
注册时间: 2015-08-22
最后登录: 2017-09-25
8 楼:  发表于: 2017-07-12 09:15    发自: Web Page
排好队,一个一个来
级别: 新手上路
状态: 连续签到 - [1天]
UID: 460933
精华: 0
发帖: 14
可可豆: 26 CB
威望: 25 点
在线时间: 991(时)
注册时间: 2015-04-11
最后登录: 2017-09-25
9 楼:  发表于: 2017-07-12 09:15    发自: Web Page
前排露脸
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部