iOS程序员笔试题(持续更新)

          程序员找工作,无非是两大关,一是面试,二是笔试,关于面试的技巧,我的文章里已经分享过,大家可以看看~今天我给大家分享的是,公司经常出的,并且容易搞混的笔试题!如果这些知识都弄懂了,再加上临场反应能力和一定的技术,我相信一定会拿到公司的邀请的!!

         其实IOS程序员的面试题,一般都是比较基础的,一般不会出太难,太深入的问题,但是这些知识往往都容易忽略,而且自己基本上都是自己以前搞混的知识点!我总结了一下,希望对大家有用!!


1.OC与C的区别?

  最重要的区别是:

   OC是面向对象         C是面向过程

面向过程  是流程化 每一步 都会影响到下一步的执行 甚至到程序是否成功执行完毕

面向对象  不受步骤的约束 在操作的时候  如果没有这个对象  也不会受到严重影响

2.面向对象的三大特征是?

封装     继承    多态

3.内存管理的原则

  只要有alloc retain copy (retainCount +1)就要有对应的release(retainCount -1)

 谁分配 谁释放

alloc 这个函数 相对对的函数

delloc 销毁对象的时候调用

alloc 给对象分配内存的时候调用

autorelease 与release 的区别

release autorelease 都可以是对象的引用计数-1

release立即释放

autorelease 延迟释放

自动释放池NSAutoreleasePool

实例代理:

  for (int i=0; i<10; i++) {

@autoreleasepool {

NSObject *obj = [[[NSObject alloc] init]autorelease];

}

}

4.继承 category的区别

  继承 可以添加 变量

调用的时候 可以使用 子类的对象去调用 子类拥有父类的所有属性 方法 包括category 协议。。。

category 只能添加 方法

调用的时候 使用原有类的对象去调用

5.OC里面有多继承么?怎么实现多继承呢

没有多继承 可以多级 继承     可以使用代理 ,分类来实现

6.category estensiton 区别

category 类目 在不改变原有类的情况下  给他扩充方法

estensiton 延展 添加 不公开的 变量 属性 方法

7.什么是protocol?

是协议 是一个 统一的对外接口 可以通过他来实现 查找多个类的方法

8.什么是代理

  代理 又叫委托 自己不能完成的 委托给别人完成  可用于回调

9.代理 通知的区别?

代理 是一对一的 代理的接收者,需要把结果返回给发送者结果

通知 是一对多的  发送者,只需要把消息发送出去,不需要返回

10通知 KVO 的区别

KVO 是键值观察者 通过观察的属性值 发生改变 去调用 观察的方法

通知 通过通知名字 来发送 接收通知

11.KVO KVC的区别?

KVC 键值编码 通过把属性名 当成key 来改变属性的值

KVO 键值观察者 通过KVC的方式 把属性当做key 来观察属性值的变化  做出响应

在实际工作中 在哪用到了 KVC KVO

数据转模型 用到了KVC

封装下拉改变导航栏透明度的时候  使用的是KVO

12.readwrite,readonly,assign,retain,copy,nonatomic 、strong、weak属性的作用?并区别

strong(强引用)、 weak(弱引用)?什么情况使用copy,assign,和retain?

readwrite 是可读可写特性;需要生成getter方法和setter方法时

readonly 是只读特性 只会生成getter方法

不希望属性在类外改变

assign 直接赋值 基本数据类型

retain 表示持有(保留)特性 引用计数加1

copy 拷贝一份赋值 会生成一个不受上一个对象影响的对象

nonatomic 非原子操作,决定编译器生成的setter getter是否是原子操作,atomic 原子操作表示多线程安全,UI(主)线程使用 nonatomic

strong强引用->属性所属的对象被释放的时候 这个属性 才会被释放 weak弱引用->不稳定的  可能会被释放掉

13.Objective-C有私有方法么?私有变量呢?如多没有的话,有没有什么代替的方法?

     objective-c类里面的方法只有两种, 静态方法和实例方法.但是可以通过把方法的声明和定义都放在.m文件中来实现一个表 面上的私有方法。有私有变量,可以通过@private来修饰,或者把声明放到.m文件中。在Objective‐C中,所有实例变 量默认都是私有的,所有实例方法默认都是公有的

14.c c++ 和obj-c如何混用?

1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只

能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj- c的代码,因为cpp只是cpp。

2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题

3)在cpp中混用obj- c其实就是使用obj-c编写的模块是我们想要的。如果模块以类实现,那么要按照cpp class的标准写类的定 义,头文件中不能出现obj-c的东西,包括#import cocoa的。 实现文件中,即类的实现代码中可以使用obj-c的东西,可以import,只是后缀是mm。如果模块以函数实现,那么头文件要按 c的格 式声明函数,实现文件中,c++函数内部可以用obj-c,但后缀还是mm或m。总结:只要cpp文件和cpp include的文件中不包含 obj-c的东西就可以用了,cpp混用obj-c的关键是使用接口,而不能直接使用实现代码,实际上cpp混用的是obj-c编译后的o文 件,这个东西其实是无差别的,所以可以用。obj-c的编译器支持cpp。

15.objc优缺点?

objc优点:

1)Cateogies 2)Posing 3)动态识别 4)指标计算 5)弹性讯息传递

6)不是一个过度复杂的C衍生语言 7)Objective-C与C++可混合编程

缺点:

1)不支援命名空間 2)不支持运算符重载 3)不支持多重继承 4)使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化 方法都用不到。(如内联函数等),性能低劣。

16.浅复制和深复制的区别?

浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身。//通过对象的指针来访问这个对象----只赋值地址 深层复制(mutableCopy):复制引用对象本身---再创建一个对象 意思就是有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的 只不过是是一个指针,对象本身资源 还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一 个思想。深复制就好理解了,内存中存在了

两份独立对象本身。//当修改A时,A copy不变。

17.数据持久化存储方式有哪些?以及特点

1.plist 属性列表 最外层只能存储数组字典 里面只能存储 bool NSNumber String Data Date

2.NSUserDefault 最终也是保存成plist 系统封装了保存的路径 保存的方法

3.归档 可以对保存数据的文件 进行加密

4.sqlite  关系型数据库 以表的形式存储  FMDB是对 OC中 sqlite操作封装 的第三方库

5.coreData 是苹果封装的 对文件操作的框架 可以 以对象的形式存储 底层数据文件可以是sqlite类型 也可以是XML JSON …

18.get 和post的区别?

Get:与GETurl封装到一起,长度有限制,安全系数不高。服务器的接收者

Post:与URL参数分开,长度没有限制,安全系数高,服务器的发送者

19.TCP  UDP的区别?

TCP:是传输控制协议:是面连接的,那么运行环境必然要求可能性不可丢包,有良好的拥塞控制机制

UDP:是用户数据报协议:主要用在实时性要求高以及对质量相对较若的地方,但面对现在高质量的线路不容易丢包,除非是一些拥塞条件下

20.什么是沙盒?有几个文件夹?

出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其创建一个家目录,这个家目录就是应用程序的沙盒。

Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下;

Library:存储程序的默认设置或其它状态信息;

tmp:提供一个即时创建临时文件的地方。

ppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。


 这个文档会根据朋友面试的经历,我会持续更新的,希望对大家有帮助!!

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

推荐阅读更多精彩内容

  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 4,962评论 0 13
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,112评论 29 470
  • Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好...
    small_Sun阅读 730评论 0 0
  • 好奇星座这个东西。 我和她是天蝎座x巨蟹座。 但是我不像天蝎座那样冷静理智,她不像巨蟹座那样......哪样?好吧...
    长命与你阅读 139评论 0 0
  • 昵称:XZQian__ 现居广东,本可爱金牛座,爱好唱歌,写作 交友:你主动我们就会有故事 自荐文章『鲲高』我们的...
    XZQian__阅读 414评论 0 0