iOS面试题8

来源:互联网 发布:淘宝助理设置快递模板 编辑:程序博客网 时间:2024/05/23 13:17

iOS面试题8



1.多线程中栈与堆,分别是公有还是私有的(C)
A.栈公有,堆私有
B.栈公有,堆公有
C.栈私有,堆公有
A.栈公有,堆私有


【解释】
一般来说栈是私有的,堆是公有的;但是可以为特定的线程创建私有的堆


在多线程环境下,每个线程拥有一个栈和一个程序计数器。栈和程序计数器用来保存线程的执行历史和线程的运行状态,是线程私有的资源。其他的资源(比如堆,地址空间,全局变量)是由同一个进程内的多个线程共享。


堆:是大家共有的空间,分全局堆和局部堆。
全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄露。


栈:是线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立,因此,栈是线程安全的。操作系统在切换线程的时候会自动的切换栈,就是切换SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放。


2.单例类NSNotificationCenter提供信息广播通知,它采用的是观察者模式的通知机制(A)
A.对 B.错


3.判断是否为iPad设备的语句是?()
A.if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {}


B.if([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone)
    {}


C.if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
    {}


4.以下哪个算法不是对称加密算法()
A.DES  B.RC5 C.AES D.RSA


对称加密:(也叫私钥加密)
指机密和解密使用相同秘钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。


DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分成两步
1)初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0和R0两部分,每部分各长32位,其置换规则为将输入的第58位换到第1位,第50位换到第2位……,依次类推,最后一位是原来的第7位。
其置换规则见下表:
58,50,42,34,26,18,10,02
60,52,44,36,28,20,12,04
62,54,46,38,30,22,14,06
64,56,48,40,32,24,16,08
57,49,41,33,25,17,09,01
59,51,43,35,27,19,11,03
61,53,45,37,29,21,13,05
63,55,47,39,31,23,15,07


2)逆置换


经过16次迭代运算后,得到L0,R0,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。
此算法是对称加密算法体系中的代表,在计算机网络系统中广泛使用。




AES:高级加密算法(Advanced Encryption Standard)在密码学中又叫Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。


5.已知有序序列b c d e f g q r s t,则在二分查找关键字b的过程中,先后进行比较的关键字依次是()
A.f d b
B.f c b
C.g c b
D.g d b


【解释】
使用折半查找的序列必须是有序的
二分查找的重点在于记录查找区间


第一次查找 区间是[0,9]
first =0;
last =9;
中间位置middle=(first+last)/2 = 4(舍去小数点)
4对应的元素是f
我们要查找的是b而不是f,但是我们发现b比f小,序列是有序的,那么我们要找的b应该在f左边(不包括f)


第二次查找
查找区间[0 3]
middle = 1
1对应的元素是c,比b大


第三次查找
查找区间[0,0]
middle=0;
找到元素b
所以依次是f-c-b



著作权声明:本文由http://www.bestnathan.com/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
0 0