iOS校招阿里一面失败总结
自我介绍
HTTP了解多少
http://www.blogjava.net/zjusuyong/articles/304788.html
你是怎么使用alamofire的(需要封装)
平时使用什么包管理工具,项目版本控制工具呢
页面的生命周期
Init->loadView->viewDidload->viewWillappear->viewDidAppear->viewWillDisAppear->viewDidDisappear->deinit
应用的生命周期
知道多少网络状态码
ARC MRC内存管理
MRC: 手动管理内存(retain, release, autorelease,不多说) 持有对象,retain +1 ,引用计数加1, 释放对象:release -1, 引用计数减1,当引用计数为0时,会自动释放内存. autorelease对象内存的管理放到autoreleasepool中, 当pool drain时,回收内存. (这是基于 objective-c的运行时特性和垃圾回收机制)
ARC: 手动管理内存, 这是xcode4.x版本的特性,(4.1及以前没有,我从4.6开始的), 原理是:在编译代码的时候为你自动在合适的位置插入release 和 autorelease, (运行时处理垃圾回收就如何MRC一样).
总结: ARC机制拥有和MRC一样的效率, ARC通过在部分优化和在最合适的地方完成引用计数的维护,所以支持使用ARC.
https://www.jianshu.com/p/48665652e4e4
循环引用问题怎么解决
除了weak还了解那些关键字?
unowaned和weak的区别
//方案1 weak var weakSelf = self
testClosure = {(myNum)->Void in weakSelf?.classNum = myNum; }
//方案2
处理循环
//[weak self] 表示 self为可选型 可以为nil 所以在使用的时候必须解包
testClosure = {weak self->Void in self?.classNum = myNum; }
//方案3 //
[unowned self]由于在使用前要保证一定有这个对象 所以不必解包
testClosure = {unowned self->Void in self.classNum = myNum; }
闭包的了解:
自包含的函数代码块;
可选类型的了解
开发中用到了什么数据库,什么应用场景下的,具体是怎么使用sqlite的的
开发的时候什么时候会用到catch
catch能不能检测nil值
tableview cell重用怎么去做
说一下发布应用的流程
cocopods的实现
CocoaPods工作原理:
CocoaPods的工作主要是通过ProjectName.xcworkspace来组织的,在打开ProjectName.xcworkspace文件后,发现Xcode会多出一个Pods工程。
- 库文件引入及配置:库文件的引入主要由Pods工程中的Pods-ProjectName-frameworks.sh脚本负责,在每次编译的时候,该脚本会帮你把预引入的所有三方库文件打包的成ProjectName.a静态库文件,放在我们原Xcode工程中Framework文件夹下,供工程使用。如果Podfile使用了use_frameworks!,这是生成的是.framework的动态库文件。引入方式也略有不同。
- Resource文件:Resource资源文件主要由Pods工程中的Pods-ProjectName-resources.sh脚本负责,在每次编译的时候,该脚本会帮你将所有三方库的Resource文件copy到目标目录中。
- 依赖参数设置:在Pods工程中的的每个库文件都有一个相应的SDKName.xcconfig,在编译时,CocoaPods就是通过这些文件来设置所有的依赖参数的,编译后,在主工程的Pods文件夹下会生成两个配置文件,Pods-ProjectName.debug.xcconfig、Pods-ProjectName.release.xcconfig。
convenient init怎么使用
总结:
阿里的一面,也就是简历面,因为看我时Swift方向的所以问的都是Swift问题;后续经过了几个公司都是问的OC,所以深深体会到自己Swfit不精、OC又不会,接下来一段时间要好好准备。