面试题

1.实现一个冒泡排序或者快速排序

intarray[5] = { 28,27,36,45,8};

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

for(int j = 0; j < 4; j++) {

if (array[j] > array [j + 1]){

int temp = array[j];

array[j] = array[j + 1];

array[j + 1] = temp;

}}}

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

printf("%d\n",array[i]);}

2.iOS平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据吗?

core data是对sqlite的封装,因为sqlite是c语言的api,然而有人也需要obj-c的api,所以有了core data ,另外,core data不仅仅是把c的api翻译成oc的api,还提供了一些管理的功能,使用更加方便。

App升级之后数据库字段或者表有更改会导致crash,CoreData的版本管理和数据迁移变得非常有用,手动写sql语句操作还是麻烦一些。

CoreData不光能操纵SQLite,CoreData和iCloud的结合也很好,如果有这方面需求的话优先考虑CoreData。

CoreData并不是直接操纵数据库,比如:使用CoreData时不能设置数据库的主键,目前仍需要手动操作。

3.Object-c的类可以多重继承么?可以实现多个接口么?category是什么?重写一个类的方式用继承好还是分类好?为什么?

答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。

4.#import跟#include有什么区别,@class呢?#import<>跟#import””有什么区别?

答: #import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系统的头文件,#import””用来包含用户头文件。

5.属性readwrite,readonly,assin,retain,copy,nonatomic各是什么作用,在哪种情况下用?

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

readonly是只读特性只会生成getter方法不会生成setter方法;不希望属性在类外改变

assign是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;

retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;

copy表示拷贝特性,setter方法将传入对象复制一份;需要完全一份新的变量时。

nonatomic非原子操作,决定编译器生成的setter

getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic

6.什么情况下使用关键字weak和assign有何不同?

答:assign指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针;而weak一旦不进行使用后,永远不会使用了,就不会产生野指针!

7.简述CALayer和UIView的关系

答:UIView和CALayer是相互依赖的关系。UIView依赖与calayer提供的内容,CALayer依赖uivew提供的容器来显示绘制的内容。归根到底CALayer是这一切的基础,如果没有CALayer,UIView自身也不会存在,UIView是一个特殊的CALayer实现,添加了响应事件的能力。UIView来自CALayer,高于CALayer,是CALayer高层实现与封装。UIView的所有特性来源于CALayer支持。

8.KVO的实现原理?

答:KVO:当指定的对象的属性被修改了,允许对象接收到通知的机制。

9.如何给一个对象的私有属性赋值?

答:利用KVC即键值编码来给对象的私有属性赋值.

10.block的本质是什么?为啥在block里面更改外面变量的值,要给外面的变量加_block修饰,加_block修饰的原理是什么?

答: (1) block本质是一个数据类型,多用于参数传递,代替代理方法, (有多个参数需要传递或者多个代理方法需要实现还是推荐使用代理方法),少用于当做返回值传递. block是一个OC对象,它的功能是保存代码片段,预先准备好代码,并在需要的时候执行.

(2)因为使用block代码块可能会引起内部循坏引用,所以应在block定义前加上修饰

11.block在哪种情况下会造成循环引用,如何解决?

答:(1)从两方面分析造成循环引用问题

当self拥有一个block的时候,在block又调用self的方法(或者self所拥有的某个属性)。形成你中有我,我中有你,这种时候会造成循环引用

把某个实例变量变成本地临时变量,强引用将直接指向这个本地临时变量,但本地临时变量一般都会很快释放,所以一般考虑第一种情况

(2)解决方案:对block进行修饰__weak(arc)或__block(mrc)

12.NSRunLoop的实现机制,及在多线程中如何使用?

答案:NSRunLoop是iOS的消息机制的处理模式

>1NSRunloop的主要作用:控制runloop里面线程的执行和休眠,在有事情做的时候使挡墙NSRunloop控制的线程工作,没有事情做让当前runloop的控制线程休眠.

>2.runloop就是一直在循环检测,从线程start到线程end,检测inputsourse(如点击,双击等操作)异步时间,检测timesourse同步事件,见到检测到输入源会执行处理函数,首先会产生通知,corefunction向线程添加runloop observers来监听事件,意在监听事件发生时来做处理。

>3.runloopmode是一个集合,包括监听:事件源,定时器,以及需通知的runloop observers

13.简述视图控制器的生命周期。

1)、init函数(init;initWithFrame;initWithCoder;等)--初始化

2)、awakeFromNib--在loadView之前的工作放在这里

3)、viewDidLoad,一个ViewController一个生命周期内这个函数只会调用一次

4)、viewWillAppear--view将要出现,每次View消失再出现都会调用

5)、viewWillLayoutSubviews--简要对子试图进行布局

6)、viewDidLayoutSubivews--完成对子试图布局

7)、viewDidAppear--视图将要出现在屏幕上

8)、viewWillDisappear--View将要消失

9)viewDidDisappear--View已经消失

14.如何增强iOS应用程序的性能。

1)、使用ARC进行内存管理、2).在适当的情况下使用reuseIdentifier

3).尽可能将View设置为不透明(Opaque)4.避免臃肿的XIBs 5.不要阻塞主线程6.让图片的大小跟UIImageView一样7.选择正确的集合8.使用GZIP压缩

9.重用和延迟加载View 10.缓存、缓存、缓存11.考虑绘制12.处理内存警告13.重用花销很大的对象14.使用Sprite 15.避免重新处理数据16.选择正确的数据格式17.设置适当的背景图片18.降低Web内容的影响19.设置阴影路径20.优化TableView 21.选择正确的数据存储方式

15.请介绍几个常用的git命令。

git branch查看本地所有分支、git status查看当前状态、git commit提交、git branch -a查看所有的分支、git

branch -r查看本地所有分支

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

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,108评论 29 470
  • 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家。(题...
    Job_Yang阅读 12,098评论 12 143
  • 转:http://www.cocoachina.com/programmer/20151019/13746.htm...
    Style_伟阅读 1,284评论 0 3
  • 图片来自似水若烟的手机拍摄 端午过后,真正进入夏天。 在此之前,不管温度如何攀升,那风依然是凉的;五月节后,那风才...
    似水若烟阅读 316评论 0 1
  • 已近四月的北方,还不是太温暖清明还未到,春寒依旧那么执着的坚守,像是在倾诉着什么,我却无从了解…… 太阳隔着玻...
    yiluxiangban阅读 122评论 0 0