iOS面试题<一>

1.iOS和iPhone做了哪些设计来降低功耗、延长续航时间?作为应用的开发者,又如何避免费电?
答:iOS和iPhone对续航时间做的设计:推送、伪后台

iOS的省电机制主要有以下几种:
强化的后台机制
1.墓碑式:伪多任务,应用推至后台后,虽然没有被关闭,但是所有活动都被冻结,只能通过苹果服务器转发的推送来与用户交互
2.智能调度后台:在一些指定类别的APP,比如社交、新闻类的应用中,iOS系统会根据应用启动频率、时间和当前网络和电量的状况来智能分配每个应用的后台数据获取频率和启动时长,开发者自己不能设置数据具体什么时候更新
3.真后台:苹果也提供一些有诸多限制的接口来保证真后台,只供特定应用行为调用,比如后台音频,定位,上传下载等。
作为开发者如何省电:

首先当然优化代码,积极合理地使用runloop,多线程等技术。
其次是尽量少地调用一些费电的接口,比如频繁的定位,频繁的后台更新数据,如无必要,尽量不用。
2.TCP为什么要设计三次握手?如果要解决三次握手来的延迟问题而去掉三次握手,如何解决三次握手所解决的问题?
答:TCP三次握手:(建立连接)
1.第一次握手:建立连接时,客户端发送消息到服务器,并进入消息发送状态,等待服务器确认;
2.第二次握手:服务器收到消息,必须确认客户的发送过来的消息,同时自己也发送消息反馈给客户,此时服务器 进入消息待接收状态
3.第三次握手:客户端收到服务器的反馈消息,向服务器发送确认消息反馈,此消息发送完毕,客户端和服务器进入等待状态,完成三次握手。

为什么要设计三次握手呢?
为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
简单来说:TCP的三次连接是双工的,为了保证双工,必需保证服务器端和客户端都能进行发送和接收信息,实际是为了让双方的请求都能识别的到,所以逻辑上至少执行三次。
3.C语言的函数调用编译成汇编代码是怎样的?可用X86或ARM汇编代码回答。
 http://www.cnblogs.com/mqmelon/p/4763913.html
4.block对外层函数的local变量的引用是如何工作的?
1.在MRC环境下,__block根本不会对指针所指向的对象执行copy操作,而只是把指针进行的复制
2.在ARC环境下,对于声明为__block的外部对象,在block内部会进行retain,以至于在block环境内能安全的引用外部对象,所以要谨防循环引用的问题
5.编译器如何实现weak的?
weak 属性特点:weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同 assign 类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。

那么 runtime 如何实现 weak 变量的自动置nil?
runtime 对注册的类, 会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指向的对象内存地址作为 key,当此对象的引用计数为0的时候会 dealloc,假如 weak 指向的对象内存地址是a,那么就会以a为键, 在这个 weak 表中搜索,找到所有以a为键的 weak 对象,从而设置为 nil。
6.LLVM和GCC有哪些不同?可从多个角度来说。
含义解释:
LLVM:LLVM最初是[Low Level Virtual Machine](http://en.wikipedia.org/wiki/Llvm)的缩写,定位是一个虚拟机,但是是比较底层的虚拟机。它的出现正是为了解决编译器代码重用的问题,LLVM一上来就站在比较高的角度,制定了LLVM IR这一中间代码表示语言。LLVM IR充分考虑了各种应用场景,例如在IDE中调用LLVM进行实时的代码语法检查,对静态语言、动态语言的编译、优化等。

就现在来看,gcc大体等同于llvm+clang所提供的功能。很多人特别羡慕clang那强大的错误诊断信息,其实gcc4.8部分信息诊断能力已经超过它了。

不同点:
1.所需要的寄存器不同:
llvm-gcc值用到了eax这一个寄存器,而gcc用到了eax, edx两个寄存器
2.编写的语言的不同
llvm-gcc:llvm默认的前端是clang,当然也可以用gcc做前端。llvm用c++写的,模块化做的很好,因此可以很好的和clang,gcc等等更多的东西合作,能为ide提供更全的有用信息。
gcc则包含的比较全面,整一个是一个宏结构,没有模块化设计,用c写的,对ide也不太友好(实际上linux社区里似乎对ide一直不感冒)。不过c++版的gcc正在重写中,为了与llvm/clang更好的竞争,而且gcc从5.0开始打算进行模块化设计,所以,以后gcc内部可能会分出很多部分。
3.内存和性能
freebsd不用gcc是因为gpl协议,llvm/clang的协议更加自由,但llvm/clang目前的兼容性和参数优化等等方面和gcc还有不小差距,虽然编译后的体积更小了(架构领先优势),但在性能优化方面相比gcc还有很多事情要
4.缺点
gcc目前的问题就是缺乏模块化设计,这是暂时落后于llvm的地方
7.设计第三方分享模块(即分享到微博,微信,QQ等),简述主要的类,要求对第三方库做较好的封装。
1.友盟
2.shareSDk :http://www.jianshu.com/p/e374732f54f0
8.iOS/SDK存在或曾经存在的bug
http://blog.csdn.net/andypan1314/article/details/8797216
9.微信是如何检测用户把手机放到耳朵旁边的
使用近距离传感器
[UIDevice](https://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html) 中有两个近距离传感器的属性:proximityMonitoringEnabled 和 proximityState。这两个属性都是 iOS 3.0 及以上才支持的。

proximityMonitoringEnabled 属性
要确定近距离传感器是否可用,可以尝试启用它,即 proximityMonitoringEnabled = YES,如果设置的属性值仍然为NO,说明传感器不可用。
proximityState 属性
传感器已启动前提条件下,如果用户接近 近距离传感器,此时属性值为YES,并且屏幕已关闭(非休眠)。And vice versa。

代码:http://www.cnblogs.com/daguo/p/3567791.html
10.假如最近收到很多用户反馈说应用很慢或者打不开,如何着手分析和解决这个问题?
慢的原因:用户的电脑、手机的运行环境、内存大小、系统甚至程序间的兼容问题可能让应用“慢”下来;国内复杂的网络环境和参差不齐的上网方式会拖累应用查询的响应速度;至于服务器、数据库更是运维人员照顾的重点。此外还有代码,一条有问题的语句,可能会损耗掉应用数百毫秒响应时间。

1.优化简化代码
2.关掉不必要的推送
3.减少耗损程序的代码:比如过多的动画效果等
11.简述方案,搭建一个自动化构建系统,如果可能,一同搭建一个自动化测试系统。
其实我也看不懂,放链接你们自己去看吧~
http://www.jianshu.com/p/53b17f2c275e

版权归属于离离离离。
版权所有,翻版必究,如若转载,请注明出处。谢谢 ~

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

推荐阅读更多精彩内容