笔试部分:html
解释一下NSString这种对象, copy 和 strong 的区别是什么?程序员
当对象属于 NSString 时,打印 NSString 对象的内存地址会发现是同一个地址;MRC环境下, copy和 strong 都会使引用计数器+!,copy 只执行浅复制 , 因此修饰 NSString 类型对象时,copy与 strong 并无太大区别;面试
但当对象属于 NSMutableString时,打印NSString对象的内存地址会发现是copy与strong不是同一个地址,strong属性只是增长了源字符串的引用计数,而copy属性则是对源字符串作了次深拷贝,产生一个新的对象,且copy属性对象指向这个新的对象。设计模式
声明NSString属性时,究竟是选择strong仍是copy,能够根据实际状况来定。缓存
请问 OC 中内存管理方式和过程?并发
Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。app
1. (Garbage Collection)自动内存计数:当你不须要某个内存时,不用管它,垃圾回收机制会自动帮你回收,但须要消耗必定资源, IOS 中不提供使用; 过程: 经过alloc – initial方式建立的, 建立后引用计数+1, 此后每retain一次引用计数+1, 那么在程序中作相应次数的release就行了;异步
(Reference Counted)手动内存计数:引用计数器的使用,由程序员手动释放,当计数器为0时候释放内存; 过程:通常是由类的静态方法建立的, 函数名中不会出现alloc或init字样, 如[NSString string]和[NSArray arrayWithObject:], 建立后引用计数+0, 在函数出栈后释放, 即至关于一个栈上的局部变量. 固然也能够经过retain延长对象的生存期.socket
(NSAutoRealeasePool)内存池:能够经过建立和释放内存池控制内存申请和回收的时机; 过程: 是由autorelease加入系统内存池, 内存池是能够嵌套的, 当释放这个内存池时, 其中的对象都会被释放.函数
Static 全局变量和普通全局变量有什么区别? Static 局部变量和普通局部变量有什么区别? Static函数与普通函数有什么区别?
static全局变量与普通的全局变量有什么区别在于做用域不一样:普通的全局变量:做用域是整个源程序;static全局变量:做用域是定义该变量的当前源文件;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数做用域不一样,仅在本文件使用,在内存中只有一份,普通函数在每一个被调用中维持一份拷贝
/*
按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。
按做用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,可是函数返回后失效。
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的做用域, 限制了它的使用范围。
更多详情:http://www.cnblogs.com/Kane_zzt/archive/2009/05/18/1459697.html
*/
__block 与__ weak 的区别?
1.__block不论是ARC仍是MRC模式下均可以使用,能够修饰对象,还能够修饰基本数据类型。
2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。
3.__block对象能够在block中被从新赋值,__weak不能够。
如何解决 TableView卡顿问题?
cell 重用机制;
异步下载图片并保存到本地缓存文件中;
减小没必要要的视图,cell 里的控件或者视图太多,会消耗较多资源,而且也影响渲染的性能;
使用主线程更新 UI 界面,子线程处理耗时操做;
浅拷贝与深拷贝的区别?
浅拷贝只复制对象的指针,不会拷贝对象自己,公用一块内存地址;
深拷贝会复制对象自己,建立一个新的对象,使用新的内存地址;
有两个功能要实现,请问是在一个线程里按顺序作效率高仍是两个线程里作效率高?为何?
若是两个功能是依赖关系,则同一个线程执行效率更搞;
若是两个功能属于并发事件,则使用两个线程作的效率更高;
简要说下 Http 通讯协议原理,与 socket 协议的区别有哪些?
与 socket 的区别:http://www.2cto.com/net/201211/166537.html
MVC 是什么?有什么特性?你还熟悉哪些设计模式?分别引用在什么场景?
MVC分别指Model层, View层, Controller层,特性: 下降代码的耦合度;
一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑汇集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不须要从新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
代理模式,观察者模式,单例模式,工厂模式等
应用场景:http://blog.csdn.net/liwei3gjob/article/details/8926862
OC 中堆和栈的区别?
详情参照:http://blog.csdn.net/ocean0815/article/details/25748633
笔试就这么多了,笔试其实没什么好怕的,多数都是学过的东西,先作会的东西,不会多百度;公司其余人都要上班没空搭理你;回头来总结,发现让我再去面试一次笔试仍是不太会,这是一个积累的过程;
敲门而入,一个三室一厅的格局的公司出如今我面前,几台电脑前随意摆放着几我的,或是在敲代码,或者是在作其余的,反正是:除了一个负责接待的妹子,没一我的抬头看我,而后被带到一个厨房大小的会议室登记和笔试,笔试期间,除了接待的人来过一次就没任何事情发生,我正对着们坐下,门对面的小妹儿翘着二郎腿在吃薯片(或许中午没吃饭),还有一个在打呼噜(又或许中午没睡好?),笔试题,会得作完了, 不会的手机拿出来百度继续作;大概四十分钟后,接待的妹子就带我去 boss 办公室面试:
面试部分:
去面试了一个出创型的公司,整个公司也就十几我的, boss 直接面试我;一进去 boss就让我自我介绍,介绍到一半,他打断我,而后开始问我问题;先是看着笔试题而后问了几个上面的问题,前面几个还能答出来,后面最薄弱的地方把我问到了,不过最终仍是回答出来了; 而后问我简历上的项目的一些问题;若是你对你简历上的项目的特别熟悉,本身写了哪些功能,负责什么都特别清楚,没事儿让他问,问什么你答什么,他若是满意会接着和你谈薪资,再而后会问你何时能上班,再而后你就能够入职了,而后我能够恭喜你了;
BUT~~~
无奈我今天就没那么幸运咯,被 boss 刁难了,他没问我项目我负责什么,而是问某某项目你是负责UI 搭建的吗?当时一听犯迷糊就说了是,而后他悠悠的回了句你这简历上写的不是这个唉╮(╯▽╰)╭, 艹(请原谅我爆出口),给我挖坑。而后他问我作了几个项目,整体算了下时间,把这几个项目的时间加起来给我说,你不是有一年开发经验嘛,这几个项目加起来也才两个月啊,你其余时间作什么的?(妈蛋,又把我问到了,难道我会告诉你我没一年工做经验?而后瞎扯一通);再而后给他将我最近想本身想带团队作个项目,却不知, boss 又问:你这不能给你带来任何经济效益的项目作了为了干啥?我只是说了句历练本身,而后他又回了句:这样说你技术还不达标咯?(艹^2,这尼玛什么逻辑啊,我喜欢作不行么,我爱闹哪样你管我?)最后我说想请教 boss 一个问题,我以为他们公司的产品还不错,有一个技术性的问题我想问他, boss 直接避开(好吧,公司机密,我理解),再而后我给他们公司的 app提出我发现的一个小bug, 而后 boss 回了句:特意哪样作了(尼玛,果断不能再谈了,当初我但是怀着一颗迫切要加入该公司的心得,而后就没了),最后聊了会儿,boss 大意说在我指望的月薪中减小3k,纵欲该轮到我说No了,(工做氛围让我失望了)行,我回去考虑考虑...而后我就回来吐槽来了...
总结几点:
1.面试简历上的项目本身必定要清楚,负责那个模块,功能如何实现;
2.不要谈本身的梦想;
3.作假的小朋友们,有几个项目,项目开发周期加起来不要和工做经验相差太远哦;