面试题总结

1.OC的动态运行时语言的原因


1)多态将数据类型的确定由编译时,推迟到了运行时

多态:不同对象以自己的方式响应相同的消息的能力

2.类变量的@protected,@private,@public,@package的 声明各有什么含义


主要是时类成员的作用域不同;

1)@protected(自身类和其子类,外界不可访问,但是能继承),系统默认的类变量声明;

2)@private (自身类,外界既不能访问,也不能继承)

3)@public(可以在任何地方被访问,外界既能访问,又可以继承)

4)@package(作用在某个框架内)

3.关于OC中的内存管理机制,release与dealloc的区别? assign,retain,copy,nonatomic,atomic,strong,weak属性的作用?


OC使用引用计数机制管理对象,当对象使用了alloc,Mutable copy,retain时,必须使用相对应的realease或者autorelease(即自己生成的对象自己持有,不需要时自己释放)                                   生成并持有对象(alloc,mutableCopy,retain)                            

                                        持有对象(retain)

                                        释放对象(release)

                                         废弃对象(dealloc)

nonatomic(不考虑线程安全);atomic(默认,考虑线程安全)

strong(默认):ARC和MRC下retain一样; weak   ARC下和assin类似,当指向的内存释放掉时自动置为空,防止野指针出现

4.应用程序按home键进入后台时的生命周期? 从后台回到前台时的生命周期?



5.关于响应链



6.如何优化冒泡排序




7.实现离线发QQ




8.如图




9.socket中TCP的三次握手











TCP:安全的协议,能保证数据顺序和正确性,服务器和客户端能随时互发数据。如果服务器要主动发送数据给客户端,可以用这个协议

UDP:非安全的协议,容易丢失数据,一般用于联机对战的游戏

XMPP:基于XML通讯的协议,基于TCP发送XML数据,一般用于即时通讯(比如QQ、微信)

HTTP:一般用于非实时连接的请求,只有客户端主动向服务器发送请求时,服务器才能返回数据给客户端

SOCKET:套接口,可以使用TCP/UDP/XMPP通讯


6.KVO的内部实现基理(类中的isa指针指向发生改变)

1>KVO是基于runtime机制实现的

2>当某个子类的对象第一次被观察时,系统会在运行期间动态的创建该类的一个派生类,在这个派生类中重写基类中的任何被观察属性的setter方法。

派生类在重写的setter方法中实现真正的通知机制(Person -> NSKVONotifying Person)


7.是否可以把比较耗时的操作放在NSNotificationCenter中?

是否可以取决于我们要在哪里发送通知(因为接受通知时执行的方法所在线程和发送通知所在线程是一致的);

1>如果在异步线程发送通知,那么可以在接收通知的方法中执行比较耗时的操作;

2>如果在主线程中发送通知,那么就不能执行比较耗时的操作;


8.runtime 的概念?runtime的用法?

1> runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型、C语言函数)

2> 实际上,平时我们编写的OC代码,底层都是基于runtime实现的

* 也就是说,平时我们编写的OC代码,最终都是转成了底层的runtime代码(C语言代码)

1> 能动态产生一个类、一个成员变量、一个方法

2> 能动态修改一个类、一个成员变量、一个方法

3> 能动态删除一个类、一个成员变量、一个方法

方法实例:动态的修改系统方法

1>修改[UIImage ImageNamed:]的系统方法(使其能根据系统版本的不同,显示不同的图片)

2>重写NSMutableArray的addObject:方法,使其在添加空对象的时候不会使程序崩溃;重写NSArray的ObjectAtIndex:方法,使其即使出现数组越界也不会发生崩溃。

a)对交换系统方法和自定义方法的方法进行封装

b)重写系统方法并进行交换


c)在ViewDidLoad中直接调用系统方法,runtime机制会在运行时直接进行类方法和自定义方法的交换


9.父子控制器的重要性;

当我们将其他控制器添加到主控制器时,如果没有确定主控制器与填入的控制器的复制关系,即:

[self.parentViewController  addChildViewController:childViewController]

则子控制器获取不了主控制器的屏幕旋转方法,也无法获得主控制器的self.NavigationController 完成不了控制器之间的跳转,因此当将其他控制器添加到一个主控制器中时,确定子控制器与主控制器间的父子关系非常重要。

10.如果后期需要增加数据库中的字段怎么实现,如果不使用CoreData呢?

编写SQL语句来操作原来表中的字段

1>增加表字段

ALTER TABLE 表名 ADD COLUMN 字段名 字段类型;

2>删除表字段

ALTER TABLE 表名 DROP COLUMN 字段名;

3>修改表字段

ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名


11.关于tableview的优化问题

UITableView的优化主要从三个方面入手:

1》提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法;

2》异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口;

3》滑动时按需加载,这个在大量图片展示,网络加载的时候很管用!(SDWebImage已经实现异步加载,配合这条性能杠杠的)。

除了上面最主要的三个方面外,还有很多几乎大伙都很熟知的优化点:

1.正确使用reuseIdentifier来重用Cells

2.尽量使所有的viewopaque,包括Cell自身

3.尽量少用或不用透明图层

4.如果Cell内现实的内容来自web,使用异步加载,缓存请求结果

5.减少subviews的数量

6.在heightForRowAtIndexPath:中尽量不使用cellForRowAtIndexPath:,如果你需要用到它,只用一次然后缓存结果

7.尽量少用addView给Cell动态添加View,可以初始化时就添加,然后通过hide来控制是否显示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容

  • 把网上的一些结合自己面试时遇到的面试题总结了一下,以后有新的还会再加进来。 1. OC 的理解与特性 OC 作为一...
    AlaricMurray阅读 2,560评论 0 20
  • 1、#import跟 #include 有什么区别?@class有什么作用?#import<> 跟 #import...
    SuAdrenine阅读 541评论 0 5
  • 1.objective-c常见面试题:1、**OC **语言的基本特点OC 语言是 C 语言的一个超集,只是在 C...
    LZM轮回阅读 963评论 0 3
  • 什么是ARC(ARC是为了解决什么问题诞生的)?ARC是Auto Reference Counting的缩写,即自...
    Tasselx阅读 8,046评论 8 72
  • 首先申明:以下题目答案,仅是自己的总结,如有错误,还请多多指正。 一,谈一下对远程推送(苹果推送机制)的理解对于苹...
    心情的蛊惑阅读 437评论 3 5