京东、网易有道、360等面经
京东一、二面
流程是两个技术面试,几乎一两天搞定,需要人再面试,只是后面人力谈薪资。1. runtime
2. runloop
3. weak原理
答: 一个全局的weak_entry_t,weak_entry_t * weak_tntries
对象释放流程: objc_release -> 引用计数器为0 -> dealloc -> objc_rootDealloc -> objc_dispose -> objc_destructInstance -> objc_clear_deallocting 才会调用该对象的weak指针数组,将其依次置为nil
4. 三种多线程技术,GCD可以取消队列中的任务么
5. SDK的了解
6. 组件化技术
1)target-action方案
优点:
1、内存中不需要维护映射表
2、不需要注册
缺点:1、中间件实现繁琐。
2、中间件方法类型、参数、返回值不够灵活。
中间件方法内部使用字符串来调用方法和类,调用死板。
3、中间件方法内部容易写错,编译没问题,而实现运行就出问题了,维护不方便。
2)url-block方案
优点:统一了ios和安卓平台差异性,以及h5和app的交互都可以使用该路由。
缺点:1、需要在内存中维护url-block表,组件多了可能会有内存问题。
2、url的参数传递受到限制,只能传递常规的字符串参数,无法传弟非常规参数,如UIImage、NSData等类型。
3、未区分本地调用和远程调用的情况,尤其是远程调用,会因为url参数受限,导致一些功能受限。
4、组件本身依赖了中间件,且分散注册使的耦合较多。
5、url注册查找不够高效,且维护不方便,编译没问题,运行出错难于找错。
3)protocol-class
1、解决了无法传递非常规参数的问题
2、组件间的调用更为方便
3、解耦代码量少,实现方便,以后维护也方便。
4、协议方法改变后,编译就会报错,避免代码个性遗漏。
5、协议方法未实现的话,会报编译警告。
6、方法查找容易,调用高效。
缺点
1、内存维护映射表
2、组件的方法调用分散
3、组件协议需要注册,不注册就无法调用。
4)url-controller
7. block类型,为什么用__weak修饰了就不会循环引用了
8. 性能优化做了哪些
校招内推投递链接:
https://www.wondershare.cn/join-us.html
内推码:NTAHBfc
投递后,可加VX,交流面经、查询面试或者是聊聊公司都可~ 18072530104