苏宁一面

1、你使用过KVO吗?说说看。

  • KVO 是 Objective-C 对观察者设计模式的一种实现。【另外一种是:通知机制
  • KVO提供一种机制,指定一个被观察对象(例如A类),当对象某个属性(例如A中的字符串name)发生更改时,对象会获得通知,并作出相应处理;【且不需要给被观察的对象添加任何额外代码,就能使用KVO机制】
  • 基本的原理:KVO 的实现依赖于 Objective-C 强大的 Runtime。当观察某对象A时,KVO机制动态创建一个对象A当前类的子类,并为这个新的子类重写了被观察属性KeyPath的Setter 方法。Setter 方法随后负责通知观察对象属性的改变状况。

答案:

2、你知道哪些加密方式?

编码方案 Base64 加密方案 MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES

追问:Base64是加密方式吗?它和MD5有什么区别,或者说MD5的特点是什么?

答案:不是。它是一种编码,类似UTF-8。MD5的特点是每次固定字符加密出来的密文都是相同的,不可逆性。

继续追问:如果我只是一个“123”字符串,使用MD5加密很容易被猜出来,如何避免呢?

答案:加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5 先加密 后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序

3、Runtime你使用过吗?都使用了哪些

答案:

image.png

4、扩展和分类有什么区别?

答案:

  • 分类只能扩充方法,不能扩展属性和成员变量(但使用Runtime可以添加属性)
  • 扩展没有名称,分类有。
  • 一般我们把私有属性以扩展的方法写在.m中

5、你怎么获取私有属性?

答案:

  • 使用KVC获取。
NSString *cat_name = [cat valueForKey:@"name"];
[cat setValue:@"大花猫" forKey:@"name"];
  • 使用Runtime
Ivar m_name = class_getInstanceVariable([Cat class], "_name");
cat_name = (NSString *)object_getIvar(cat, m_name);

6、Socket了解吗?说说它和TCP的区别。

答案:

  • Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。
  • Socket通信分为Server端和Client端,开发过程中分别对应着服务器和客户端。当连接上服务器后,Socket就会启动一个While或For无限循环,不断的异步监听Socket动静,看是否有Read或者Write动作,直到出错或者主动结束。 区别:
  • TCP 是传输层的协议;
  • Socket 是从传输层上抽象出来的一个抽象层,本质是接口。
  • Socket层只是在TCP/UDP传输层上的抽象接口层,因次一个Socket连接可以基于TCP也可以基于UDP。UDP协议是不需要建立连接过程的,不管对方收不收到消息我都发,不可靠的传输(即时通讯)所以“Socket也是基于TCP”

7、一些项目描述问题......

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android小菜鸡

时间选择器TimePickerDialog

  TimePickerDialog是一个android自带的为设置时间而提供的Dialog,使用起来简单,上手快。时常配合Canlendar一起使用。

812
来自专栏落影的专栏

iOS开发笔记(一)

前言 iOS开发笔记(一) iOS开发笔记(二) iOS开发笔记(三) iOS开发笔记(四) 《开发笔记》系列记录一些开发中遇到的问题以及思考。 本文主...

3037
来自专栏Petrichor的专栏

leetcode: 23. Merge k Sorted Lists

具体原因见我的另一篇博客:python3 调用heapq库 时遭遇 “TypeError: unorderable types”

672
来自专栏java思维导图

使用Google Guava快乐编程

链接:http://blog.51cto.com/zhangfengzhe/1912897

1214
来自专栏Fundebug

​ECMAScript正则表达式6个最新特性

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

1034
来自专栏前端杂货铺

深入node之Transform

Transform流特性 在开发中直接接触Transform流的情况不是很多,往往是使用相对成熟的模块或者封装的API来完成流的处理,最为特殊的莫过于throu...

2965
来自专栏IMWeb前端团队

node中常见的10个错误

非原创,格式不太整齐。 错误 #1:阻塞事件循环 JavaScript在 Node.js (就像在浏览器一样) 提供单线程执行环境。这意味着你的程序不能同时执行...

2306
来自专栏JackeyGao的博客

Django 进阶学习 - 动态actions

Django后台默认只有一个动作Delete selected xxxxs, 那么如果自定义动作该怎么办, 也很容易, 直接写个类似于这种的函数

822
来自专栏向治洪

微信支付实例

1,导入微信的libs包libammsdk.jar; 2,测试时使用weixinDemo中的debug_keystore; 3,需要注意应用要通过审核,并且几个...

3915
来自专栏大内老A

ASP.NET Core的路由[5]:内联路由约束的检验

当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对...

3025

扫码关注云+社区