面试 (七) : 其他篇 -- 设计模式

常用的设计模式

• 单例模式

• 组合模式

• 观察者模式

• 代理模式

• 享元模式

• 工厂方法模式

• 抽象工厂模式

MVC的理解

• 数据管理者(M)、数据展示者(V)、数据加工者(C)

• M应该做的事:

○ 给ViewController提供数据

○ 给ViewController存储数据提供接口

○ 提供经过抽象的业务基本组件,供Controller调度

• C应该做的事:

○ 管理View
Container的生命周期

○ 负责生成所有的View实例,并放入View
Container

○ 监听来自View与业务有关的事件,通过与Model的合作,来完成对应事件的业务。

• V应该做的事:

○ 响应与业务无关的事件,并因此引发动画效果,点击反馈(如果合适的话,尽量还是放在View去做)等。

○ 界面元素表达

MVC 和MVVM 的区别

• MVVM是对胖模型进行的拆分,其本质是给控制器减负,将一些弱业务逻辑放到VM中处理

• MVC是一切设计的基础,所有新的设计模式都是基于MVC进行的改进

• 补充:常见的设计模式有:MVC、MVCS、MVVM、viper

TCP和UDP有什么区别?

• TCP是面向连接的,建立连接需要经历三次握手,保证数据正确性和数据顺序

• UDP是非连接的协议,传送数据受生成速度,传输带宽等限制,可能造成丢包

• UDP一台服务端可以同时向多个客户端传输信息

• TCP报头体积更大,对系统资源要求更多

TCP的三次握手

• 第一次握手:客户端发送syn包到服务器,并进入syn_send状态,等待服务器进行确认;

• 第二次握手:服务器收到客户端的syn包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN + ACK包,此时服务器进入SYN_RECV状态;

• 第三次握手:客户收到服务器发送的SYN+ACK包之后,向服务器发送确认包,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成第三次握手。

如何制作一个静态库/动态库?他们的区别是什么?

• Xcode6支持制作静态库/动态库
framework

• 无论是动态库还是静态库都是区分真机和模拟器的

• 静态库编译静态库文件装入程序空间,动态库是文件动态装入内存

• 动态库执行到相关函数才会被调用,节省空间

• 苹果一般不允许第三方动态库,APP容易被拒

  • 一个lib包含了很多的架构,会打到最后的包里么?

• 不会,如果lib中有armv7,
armv7s, arm64, i386,x86_64架构,而target architecture选择了armv7s,arm64,那么只会从lib中link指定的这两个架构的二进制代码,其他架构下的代码不会link到最终可执行文件中;反过来,一个lib需要在模拟器环境中正常link,也得包含i386架构的指令

每一个设备都有属于自己的CPU架构

每一个静态支持的架构是固定

模拟器

4s-->5 : i386

5s-->6plus : x86_64

真机

3gs-->4s : armv7

5/5c :
armv7s,静态库只要支持了armv7,就可以跑在armv7s的架构上

5s-->6plus : arm64

常用命令总结:

// 使用lipo -info命令,查看指定库支持的架构,比如UIKit框架

lipo -info
UIKit.framework/UIKit

// 想看的更详细的信息可以使用lipo -detailed_info

lipo -detailed_info
UIKit.framework/UIKit

// 还可以使用file命令

file
UIKit.framework/UIKit

// 合并MyLib-32.a和MyLib-64.a,可以使用lipo -create命令合并

lipo -create
MyLib-32.a MyLib-64.a -output MyLib.a

支持64-bit后程序包会变大么?

• 会,支持64-bit后,多了一个arm64架构,理论上每个架构一套指令,但相比原来会大多少还不好说

用过Core Data 或者SQLite吗?读写是分线程的吗?遇到过死锁没?如何解决的?

• 用过SQLite,使用FMDB框架

• 丢给FMDatabaseQueue
或者 添加互斥锁(NSLock/@synchronized(锁对象))

请简单的介绍下APNS发送系统消息的机制

• APNS优势:杜绝了类似安卓那种为了接受通知不停在后台唤醒程序保持长连接的行为,由iOS系统和APNS进行长连接替代

• APNS的原理:

○ 应用在通知中心注册,由iOS系统向APNS请求返回设备令牌(device Token)

○ 应用程序接收到设备令牌并发送给自己的后台服务器

○ 服务器把要推送的内容和设备发送给APNS

○ APNS根据设备令牌找到设备,再由iOS根据APPID把推送内容展示

不用中间变量,用两种方法交换A和B的值

• 方法1:

A = A + B

B = A - B

A = A - B

• 方法2:异或

A = A^B;

B = A^B;

A = A^B;

开发常用的工具有哪些?

你一般是怎么用Instruments 的?

你一般是如何调试Bug 的?

如何实现单例,单例会有什么弊端?

• 节省内存资源,一个应用就一个对象

APP上架后如何搜集错误信息?

简答描述下你所理解的敏捷开发

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

推荐阅读更多精彩内容

  • 常用的设计模式 •单例模式 •组合模式 •观察者模式 •代理模式 •享元模式 •工厂方法模式 •抽象工厂模式 #M...
    指尖猿阅读 268评论 1 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,431评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 权力有限策略,就是告诉对方,我还有一个不露面的 人,他是最后的决策者。通常有这种谈判的时候,所谈的事情都差不多了,...
    潍坊泰华DDM店刘云阅读 513评论 0 0
  • 前言 近来,公司项目维护期,自己着手学习直播方面.随着直播的兴起,整个互联网也迎来了全民互联的时代. 本项目也是借...
    荷塘初晴阅读 363评论 1 2