引言过年之后相信有一部分的人,早已磨刀霍霍向大厂。势必要大展拳脚,必将在大厂内创出一片天地。但是,想必大家都知道:最近几年的最严重的互联网寒冬来临,各位兄弟都会说“江湖再见”。耳边总是充刺着流言蜚语,这个地方裁员了,这个地方缩减HC。弄得人心慌慌。年后将是一片血雨腥风,程序界的江湖将在这一天精彩斑斓。 但我们要知道,寒冬之中,什么是最珍贵,就让鄙人告诉你:人才。只要有过硬的技术和装备,在逆风直下的情况下,咱们也能迎难而上,打他个戳手不及。不是“李云龙”大哥说:“过狭路相逢勇者胜.” 最近几天看了朋友,到处厮杀,经过一番斗争,最终夺下头筹获得多家大厂的offer。 承蒙兄弟抬爱,感情深厚。拿出《iOS中高级面试宝典》赠与小弟参悟。经过小弟我的反复参悟和整理,现在共享出来,希望与大家一起学习参悟。小弟我先说一下,面试虽然有技巧,但咋们绝不是吹嘘与伪造之辈,因先当花点时间静心闭关修炼,带到出关之日,必进大厂,薪资翻倍,岂不快哉!!! 参悟规则作为一名优秀的程序员,肯定是不会浪费时间在一个 : 一:没有晋升,没有职业发展的公司 二:也不会停留在某一个技术层面不前进的公司 三:我愿付出真心,你却不愿有待我的公司 本博客的知识点较多,花点时间一个个理解并记忆后,自然也就融会贯通,无所畏惧。面试iOS也就分分钟 1、swift和oc的区别(1) Swit没有地址指针的概念 (2)泛型 (3)类型严谨对比oc的动态绑定 2、编译连接
3、synthesize & denamic1:通过@sythesize 指令告诉编译器在编译期间产生getter/setter方法。 2:通过@dynamic指令,自己实现方法。 有些存取是在运行时动态创建的,如在CoreData的NSManagedObject类使 4、在项目开发中常用的开发工具有哪些?
5、UlTableView & UlCollection
6、NSProxy & NSObjectNSObjetct:
7、Object & Swift
8、传值通知&推送通知(本地&远程)传值通知:类似通知,代理,Block实现值得传递 推送通知:推送到用户手机对应的App上(主要是不再前台的情况)本地通知。 local notfication,用于基于时间行为的通知,比如有关日历或者todo列表的小应用。另外,应用如果在后台执行,iOS允许它在受限的时间内运行,它也会发现本地通知有用。比如,一个应用,在后台运行,向应用的服务器端获取消息,当消息到达时,比如下载更新版本的提示消息,通过本地通知机制通知用户。 本地通知是UILocalNotification的实例,主要有三类属性: scheduled time,时间周期,用来指定iOS系统发送通知的8期和时间; 自定义数据,本地通知可以包含一个dictionary类型的本地数据。 对本地通知的数量限制,iOS最 多允许最近本地通知数量是64个,超过限制的本地通知将被iOS忽略。远程通知(需要服务器)
一般使用极光推送,步骤是一样的, 只是我们使用的服务器是极光的,不需要自己大服务器! 9、第三方库&第三方平台第三方库:一般是指大牛封装好的一一个框架(库) ,或者第三方给我们提供的一个库,这里比较笼统*第三方平 区别:库: AFN, ASI, Alomofire, MJRefresh, MJExtension, MBProgressHUD平台:极光,百度,友盟,Mob,环信 imageName和mageWithContextOfFile的区别?哪个性能高(1)用imageNamed的方式加载时,图片使用完毕后缓存到内存中,内存消耗多,加载速度快。即使生成的对象被autoReleasePool释放了,这份缓存也不释放,如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存。 (2) ImageWithContextOfile加载, 图片是不会缓存的,加载速度慢。 (3)大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间当应用程字需要加载- -张比较 10、NSCache & NSDcitionaryNSCache与可变集合有几点不同:NSCache类结合了各种自动删除策略,以确保不会占用过多的系统内存。如果其它应用需要内存时,系统自
(1)可以存储(当然是使用内存) (2)保持强应用,无视垃圾回收. =>这-点同NSMutableDictionary (3)有固定客户. 11、UlView的setNeedsDisplay和setNeedsLayout方法
综上所述setNeedsDisplay方便绘图,而layoutSubViews方便出来数据setNeedDisplay告知视图它发生了改变,需要重新绘制自身,就相当于刷新界面 12、UILayer & UiView
动画的运作: 对UMiew的sublayer(非主Layer)属性进行更改,系统将自动进行动画生成,动画持续时间的缺省值似乎是0.5秒。 坐标系统: CAL ayer的坐标系统比UIView多了-个anchorPoint属性,使用CGPoint结构表示,值域是0~1,是个比例值。 渲染: 当更新层,改变不能立即显示在屏幕上。当所有的层都准备好时,可以调用setNeedsDisplay方法来重绘显示。 变换: 要在一个层中添加- -个3D或仿射变换,可以分别设置层的transform或fineTranstorm属性。 变形: Quartz Core的渲染能力,使二维图像可以被自由操纵,就好像是三维的。图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾斜。CATranstform3D的一套方法提供了一些魔术般的变换效果。 13、layoutSubViews & drawRectslayoutSubviews在以下情况下会波调用(视图位置变化是触发):
drawRect在以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。drawRect 掉用是在Controller->loadView,Controller->viewDidLoad两方法之后掉用的.所以不用担心在控制器中,这些View的drawRect就开始画了.这样可以在控制器中设置-些值给View(如果这些View draw的时候需要用到某些变量值). 2、该方法在调用sizeToFit后被调用,所以可以先调用sizeToFt计算出size。然后系统自动调用drawRect:方法。 3、通过设置contentMode属性直为UIViewContentModeRedraw。那么将在每次设置或更改rame的时候自动调用dr awRect。 4、直接调用setNeedsDisplay, 或者setNeedsDisplaylnRect:触发drawRect,但是有个前提条件是rect不能为0。 drawRect方法使用注意点: 1、若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。如果在其他方法中获取将获取到一个invalidate的ref并且不能用于画图。 drawRect: 方法不能手动显示调用,必须通过调用setNeedsDisplay或者setNeedsDisplaynRect,让系统自动调该方法。 2、若使用calayer绘图,只能在drawInContext: 中(类 似鱼drawRect)绘制,或者在delegate中的相应方法绘制。同样也是调用setNeedDisplay等间接调用以上方法 3、若要实时画图,不能使HgestureRecognizer,只能使用touchbegan等方法来掉用setNeedsDisplay实时刷新屏幕 14、UDID & UUIDUDID是Unique Device ldentifer的缩写中文意思是设备唯一标识 在很多需要限制一台设备一个账号的应用中经常会用到,在Symbian时代,我们是使用IMEI作为设备的唯一标识的,可惜的是Apple官方不允许开发者获得设备的IMEI. lUlDevice currentDevicel uniqueldentie] 但是我们需要注意的一点是,对于已越狱了的设备,UDID并不是唯一的 使用Cydia插件UDIDFaker,可以为每一个应用分配不同的UDID.所以UDID作为标识唯一设备的用途已经不大了。 UUID是Universally Unique ldentifier的缩写,中文意思是通用唯一识别码由网上资料显示,UUID是一个软件建构的标准,也是被开源软件基金会(Open Software Foundation,OSF)的组织在分布式计算环境(DistributedComputing Enviroment,DCE)领域的一部份.UUID的目的,是 让分布式系统中的所有元素都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。 15、CPU & GPUCPU:中央处理器(英 文Central ProcessingUnit)是一台计算机的运算核心和控制核心。CPU、内部存储器和输入输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。 GPU:英文全称Graphic Processing Unit,中文翻译为“图形处理器”。一个专门的图形核心处理器。GPU是显示卡的“大脑”,决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的"硬件加速"功能 结语由于宝典内容过多,我就不一一介绍,就先写到这里的吧! |
|
来自: jerry_tom123 > 《待分类1》