2017年面试总结

【1】什么是RSA?用于何种场合?

RSA是一种非对称加密算法,所谓非对称,就是说该算法需要一对秘钥,使用其中一个加密,则需另一个才能解密。

RSA的缺陷:通常只能用于加密少量数据或者加密秘钥。(RSA的安全性依赖于大数分解,小于1024位的已经被证明是不安全的,而且由于RSA算法进行的都是大数计算,使得RSA最快也比DES慢上百倍)这就是RSA最大的缺陷。

对于明文进行加密,有两种情况需要这样做:
1,如果你要向朋友传送加密数据,并且只希望你的朋友可以解密,这样的话,你就需要先获取你朋友的秘钥对中公开的那个秘钥,然后用这个秘钥进行加密,这样密文只有你朋友可以解密,因为对应的私钥只有你朋友拥有。
2,如果你要向朋友传送一段数据附加你的数字签名,您需要对你的数据进行MD5之类的运算取得数据签名,再对签名进行加密,加密将使用你自己的秘钥中不公开的私钥。你的朋友收到数据以后,用同样的运算获得数据签名,再用你的公钥对加密签名进行解密,比较解密结果与他自己计算出来的签名是否一致,即可确定数据是否的确是你发送的、以及在传输过程中是否被篡改。

例如项目中很简单的一个需求:
C端给密码使用RSA加密,传到S(后台)解密。RSA加密算法是基于一个秘钥对的,分为公钥和私钥,一般情况公钥加密,私钥解密,但也可私钥加密,公钥解密。还可以验签,就是先用私钥对数据加密,然后对加密后的数据进行签名,得到一个签名值。然后再用公钥先验签,证明是对应私钥加密过的数据才解密。主要是为了防止来源不确定的数据。

【2】iOS App性能优化

1:应用在启动时。
应用启动时,只加载启动相关的资源和必须在启动时加载的资源。
2:使用合适的本地图片加载的方式。
(1)[UIImage imageNamed:@""],这种方式加载的图片会加入缓存,如果图片要多次使用,最好使用此方式。
(2)[[UIImage alloc] initWithContentsOfFile:@""] ,这种方式加载的图片不会加入缓存,图片不经常使用时,可以选择这种方式。
3:不要阻塞主线程,开发中除了UI处理外,其他任务尽量放在后台线程加载。
4:UIview
(1)如果view是透明的,需要设置opaque为yes。
(2)使用UItableview或UIcollectionview的重用,并缓存cell的高度。
(3)延迟加载不急需的views。
(4)尽量避免使用代码裁剪图片,如果必须需在后台线程处理。
5:缓存
缓存需要重复显示的数据,比如网络请求、图片。
6:避免对象创建时过多的消耗资源。
假设应用中多次使用日期处理,将保持日期对象全局唯一。
7:对象释放。
(1)ARC中创建对象时,内存会持续升高,在需要时添加自动释放池释放不需要的资源。
(2)及时释放自己开辟的空间。
8:防止死循环。
(1)在头文件中尽量避免import导入头文件,使用@class声明类,在.m文件中使用#import。
(2)在设置代理、block中使用相应的关键字引用对象。
9:数据存储
10:内存警告处理
当系统发出内存警告时,释放不必要的数据的三种方式。第一:APPDelegate中实现applicationDidReceiveMemoryWarning,第二:UIviewcontroller重写didReceiveMemoryWarning,第三:注册通知:UIApplicationDidReceiveMemoryWarningNotification
11:性能检测
静态分析APP:菜单-Product-Analyze 可以定位未使用的变量,内存泄漏 分析APP每个操作占用时间: Instruments-Time profiler。 动态分析内存泄漏:Instruments-Leaks。

性能检测拓展:
Analyze主要分析的问题:
(1)逻辑错误:访问空指针或未初始化的变量
(2)内存管理错误:如内存泄漏等。
(3)声明错误:从未使用过的变量。
(4)API调用错误:未包含使用的库和框架。
其主要优势在于静态分析内存泄漏及代码逻辑错误。因为声明错误、API调用错误,逻辑错误在编译时都会有警告。

【3】objc 发消息给nil对像会发生什么情况?

在Objective-C中向nil发送消息是完全有效的——只是在运行时不会有任何作用。应用不会发生崩溃。
拓展:
(1)nil指oc中对象的空指针。
(2)Nil指oc中类的空指针。
(3)NULL指向其他类型的空指针,如一个c类型的内存指针
若obj为nil:
[obj message]将返回NO,而不是NSException
若obj为NSNull:
[obj message]将抛出异常NSException

【4】ios开发中 +(void)load 与+(void)initialize的区别

共同点:
(1)在不考虑开发者主动调用的情况下系统最多会调用一次。
(2)如果父类和子类都被都被调用,父类的调用一定在子类之前。
(3)都是为了应用运行提前创建合适的运行环境。
(4)在使用时都不要过重的依赖于这两个方法,除非真正必要。
+(void)load:
(1)调用时机比较早,运行环境有不确定因素。具体说来,通常都是App启动前进行调用,当load调用的时候,并不能保证所有类都加载完成且可用,必要时还要自己负责做auto release处理.
(2)对于一个类,如果没有实现load方法就不会调用,不会考虑对NSObject的继承.
(3)父类的load方法会优先于子类调用,类别的load方法一般最后调用不会直接触发initialize的调用。
通俗的讲就是: 在程序启动之前会调用所有的类的(手动实现的)+load方法(没有实现就不调用咯),按(父类->子类->类别)的顺序调用.
+(void)initialize:
(1)initialize的自然调用是在第一次主动使用当前类的时候 (第一次 alloc 时)
(2)在initialize方法收到调用时,运行环境基本健全。
(3)initialize的运行过程中是能保证线程安全的。
(4)和load不同,即使子类不实现initialize方法,会把父类的实现继承过来调用一遍。注意的是在此之前,父类的方法已经被执行过一次了,同样不需要super调用。
通俗的讲就是:在程序启动之后,在第一次创建这个类的对象的时候(也就是分配内存空间alloc的时候),会调用该类的+initialize方法且只调用一次.
总结:
Apple的文档很清楚地说明了initialize和load的区别在于:load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。

【5】产品更新迭代是怎么处理版本兼容

在适配旧版本时,除了基本的宏定义、[UIDevice currentDevice].systemVersion判断,适当的用Runtime,可以大大减少对现有代码的“干涉”,多种方法相结合才是最好的。

【6】 GCD

【7】UIView与CALayer之间的区别与联系?

每一个UIView都包含有一个CALayer对象,CALayer中存储的是UIView 的展示内容数据,负责绘制。UIView 管理CALayer,相当于一个管理者,并具有处理触摸事件的能力(因为uiview继承自uiresponder)。

【8】核心动画里面有哪些常用的动画类?

常用的动画类:CABasicAnimation基础动画,CAKeyframAnimation关键帧动画,CAAnimationGroup动画组;CATransition专场动画。

【9】如何进行网络推送?推送的流程是什么?你的推送是怎么做的?

推送分为网络推送,本地推送。
网络推送APNS,分为注册部分及推送部分。
注册部分:
1,我们的应用向iOS系统注册推送。
2,iOS系统向用户询问是否允许推送。
3,用户允许后,iOS系统向苹果推送服务器索要device token 。
4,苹果推送服务器将device token 返回给我们的应用。
5,我们的应用再将device token 发送给我们的服务器。
推送部分:
1,我们的服务器将推送的消息,以及device token 发送给苹果推送服务器。
2,苹果推送服务器将推送的消息内容发送给我们的用户。
推送注意事项:
1,iOS7与iOS8推送不同。
2,如果指定推送声音本地必须有这个文件。
3,如果用户选择不允许推送,那么无法进行推送。
4,服务器需要配置cer证书,证书生成时,需要CSR证书签名请求。
5,推送是免费的。
6,推送是不可靠的,用户不一定能立即收到该消息。
7,推送消息大小有限制,长度256字节。
8,极光,信鸽这样一些第三方推送服务,实际上都是基于苹果推送本身的,只是对苹果本身的推送封装了一下。

【10】两个app之间的跳转

【11】iOS四种数据存储的方式

(1)NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码。
(2)NSUserDefaults:用来保存应用程序设置和属性、用户保存的数据。用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储。
(3) Write写入文件,保存本到地方式:永久保存在磁盘中。
(4) SQLite3:采用SQLite数据库来存储数据。SQLite作为一中小型数据库,应用ios中,跟前三种保存方式相比,相对比较复杂一些。
(5)Core Data。Core Data框架提供了对象-关系映射(ORM)的功能。即能够将OC对象转化成数据,保存在SQLite3数据库文件中,也能够将保存在数据库中的数据还原成OC对象。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • 因为一些外在和个人原因,犹豫大半年后,笔者从58到家离职,从6月10日提出离职到7月10日滚蛋,将近有1个月时间...
    alivs阅读 3,986评论 7 54
  • 好久没写博客,这一阵又去面试了几家公司,所以聊一聊这大半年的面试经历,面了几家公司发现一个规律,越是出名,技术牛逼...
    王小宝wy阅读 2,310评论 0 19
  • 最近公司用到RSA数据加密传输,本人也只会使用,并不知其原理,刚好今天在csdn看到一位大牛的博客写得很到位,遂搬...
    爸比好酷阅读 1,413评论 0 1
  • YOYO成长记阅读 715评论 0 9