昨天接到一个电话面试,没任何准备,结果...
首先让我做了个自我介绍,我就简单的把近几年的工作主要内容都说了一遍,还把七年前做过的华为项目也单独的说了一下,我的表达能力不是太好,偶觉得初次首次印象不是太好。
接下来是说一些具体技术要点:
1、说一下多线程操作GCD
gcd有两个概念:任务和队列
任务:代码块提交给cgd队列,可以自动完成任务的调度。
队列:1、串行队列。2、并发队列
//获取一个默认优先级的并发队列
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 1);
//自定义创建一个名称为myConcurrentQueue的并发队列
dispatch_queue_t myConcurrentQueue = dispatch_queue_create("myConcurrentQueue", DISPATCH_QUEUE_CONCURRENT);
//自定义创建一个名称为myConcurrentQueue的串行队列
dispatch_queue_t myConcurrentQueue = dispatch_queue_create("myConcurrentQueue", DISPATCH_QUEUE_SERIAL);
2、NSURLConnection和NSURLSession的区别
NSURLConnection 的请求必须要有一个一直存活的线程来接收回调,所以线程一直常驻在内存中
NSURLSession 可以指定回调 NSOperationQueue,不再需要在当前线程进行代理方法的回调。
3、dySM文件
符号集是我们对ipa文件进行打包之后,和.app文件同级的后缀名为.dSYM的文件,这个文件必须使用Xcode进行打包才有。
每一个.dSYM文件都有一个UUID,和.app文件中的UUID对应,代表着是一个应用。而.dSYM文件中每一条崩溃信息也有一个单独的UUID,用来和程序的UUID进行校对。
我们如果不使用.dSYM文件获取到的崩溃信息都是不准确的。
符号集中存储着文件名、方法名、行号的信息,是和可执行文件的16进制函数地址对应的,通过分析崩溃的.Crash文件可以准确知道具体的崩溃信息。
网友评论