iOS一些面试题

写了一下午代码本来想去透透气突然来了一个电话,是码市的什么优质开发者调查员,我都忘了什么时候申请过的!人家问了我一些问题,每个都似曾相识,却又说不完整!记得两年多前面试的时候可是背的滚瓜烂熟的,UI界面画久了还真都忘得差不多了。回来整理了一下刚才的问题,就当在复习下,因为以后换工作可能一会用得到。还有一个关于继承的忘了问的什么了。

weak和assgin的区别

当一个对象的引用计数为0时,所有指向该对象的weak属性指针会被自动设置为nil,而assign属性不会,如果对象被释放了,此时再进行访问,程序崩溃。

@property属性关键字详解

xib/sb为什么用weak

总结下应该是xib/sb只需要强引用它们所必须持有的第一个对象就行,比如viewcontroller。第一个对象下面的用weak,这样viewcontroller释放后所有的子view也会释放。不用担心内存泄漏。

UIView属性用weak还是strong?

Storyboard 使用 Weak Property 声明 Outlet

runloop的用到了那些model

这篇写的比较全我就不废话了
Runloop

Extension(扩展)和Categories(分类)的区别

  • 类别:在没有原类 .m 文件的基础上,给该类添加方法;
  • 延展:一种特殊形式的类别,主要在一个类的.m文件里声明和实现延展的作用,就是给某类添加私有方法或是私有变量。
  • 两个的区别:
    ① 延展可以添加属性并且它的方法都是波裇实现的。延展可以认为是一个私有的类目。
    ② 类别可以在不知道,不改变原有代码的情况下往里面添加新的方法,只能添加,不能删除修改。
    ③ 并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。
    ④ 继承可以增加,修改删除方法,添加属性。
  • Category只能为对象添加方法,却不能添加成员变量。原因:如果可以添加成员变量,添加的成员变量没有办法初始化

@property中有哪些属性关键字默认的有哪些

  • 原子性(atomic,nonatomic)
  • 读写(readwrite, readonly)
  • 内存管理(assign, strong, weak, unsafe_unretained,copy)
  • getter、setter
  • 默认的有atomic,readwrite,assign,

OC中调用nil对象的方法

  • nil和C语言的NULL相同,在objc/objc.h中定义。nil表示Objective-C对象的值为空。
    在C语言中,指针的控制用NULL表示。在Objective-C中,nil对象调用任何方法表示什莫
    也不执行,也不会崩溃。
  • 向nil发送消息是完全有效的-- 只是在运行时不会有任何作用。
  • 如果一个方法返回值是一个对象,那么发送给nil的消息将返回0(nil)
  • 如果方法返回值为指针类型,其指针大小为小于或者等 sizeof(void*),float,double,long double
    或者long long 的整型标量,发送给nil的消息将返回0.

iOS-OC篇 (1~72)

base64和MD5

MD5是一种不可逆的消息摘要算法。为计算机安全领域广泛使⽤的一种散列函数,
用以提供消息的完整性保护。常用语校验。

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。Base64是一种编码方式。
注意:base64的主要作用不是加密,而是用来避免“字节”中不能转换成可显示字符的数值。
MD5和Base64介绍与应用

最近有面试了两家,继续记录下,好多东西知道用的时候要注意什么,但是直接让回答有时候还真的打答不出来。

block什么时候在堆上,什么时候在栈上

block本身是像对象一样可以retain,和release。但是,block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上。他本身的作于域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。使用retain也可以,但是block的retain行为默认是用copy的行为实现的, 因为block变量默认是声明为栈变量的,为了能够在block的声明域外使用,所以要把block拷贝(copy)到堆,所以说为了block属性声明和实际的操作一致,最好声明为copy。

__block和__weak有什么区别?

__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。
__weak只能在ARC模式下使用,也只能修饰对象,不能修饰基本数据类型。
__block对象可以在block中被重新赋值,__weak不可以。

相比delegate的逻辑散落,blocks更加的优雅简洁,我对block比较深刻的体会就是它简化了回调的过程,可以让代码明显提高可读、可维护性和封装性。block的本质应该说是匿名函数,这是OC中所没有的,解决了方法不能传递问题。

iOS面试题

多个网络请求全部完成后再执行

多个网络请求并发执行、顺序执行
这个我记得是有这个信号量,面试的哥们说了一句信号量是RAC的东西,一下把我打乱了!GCD中的信号量应该是和RAC的不同。RAC没有过多研究过,有空看看。

viewcontroller生命周期

这个是很基础的,一时紧张竟然没说完整!
iOS - ViewController生命周期

block和delegate分别在什么时候适合使用

在IOS的开发中,代理能够完成的事情,使用block都可以实现,因为它们都是函数的回调,并且block的实现方式是更加简单的,因为它不需要制定协议,也不需要定义让自身成为代理;但是有些时候,如果这个对象对外界提供的接口很多,那么使用代理是更加方便的,因为它可以把要实现的函数写在一起,只要成为它的代理就可以同时实现它的这些方法,如果是使用block,需要每次调用block,显得比较乱。
所以综上,要是接口少,最好用block,要是接口多就用delegate。

怎么去优化一个viewcontroller

这个问题,我前段时间去沪江参加过一个iOS的分享,PPTV的任凯前辈分享了一个代码重构的经验,当时忘了总结了,PPT我还留着,大家有兴趣可以看看。找个一个现场小伙伴的总结。
沪江 iOS 技术沙龙随想

沪江技术沙龙iOS专场

git的常用命令merge和rebase

git merge <branch> # 将branch分支合并到当前分支

git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交
 
git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>

我大部分时间都是单打独斗,所以git的命令除了push别的都没怎么用过!

set和array的区别,怎么判断set集合里面的对象

区别set无序,array有序。(我擦我当时竟然忘了这个,面试估计完蛋了)
set元素具有唯一性,不可重复。array的元素可以重复。

如果是自定义对象,对象可能有很多属性,可以便利所有的属性来判断是否相同,但是效率肯定低。参考这个iOS中的对象等同性

关于约束的优先级

我以前碰到类似的问题好像都是把约束拖出来用代码解决的,这个还真没有注意过!
在约束的设置里面有一个Priority参数,设置这个数值越大优先级越高,有些类似CSS中z-index属性。

只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance

最近几个iOS版本的特性

开发者需要知道的iOS 8 SDK新特性

开发者所需要知道的 iOS 9 SDK 新特性

开发者所需要知道的 iOS 10 SDK 新特性

iOS 9 适配系列教程
iOS开发--适配iOS 10以及Xcode 8

react native 的核心思想

React-Native的核心思想就是组件化
React Native学习总结

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

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,135评论 30 470
  • 1、简述你项目中常用的设计模式。它们有什么优缺点?常用的设计模式有:代理、观察者、单例。(1)单例:它是用来限制一...
    LZM轮回阅读 1,018评论 0 6
  • 梦想是什么?青春渐渐老去你的儿时的梦想还在?还能记得起儿时记忆嘛?你是否还是追逐梦想?是否半途放弃梦想? 梦想是什...
    刘培晟阅读 246评论 0 1
  • 最近有一部刚开播的美剧火了—— 让人意外的是一部主讲过气女明星撕逼的电视剧在豆瓣评分9.3分。国内的电视剧流量担当...
    Bonnnnnieeeee阅读 813评论 0 0