iOS笔试知识点集锦

这篇博客汇总了iOS笔试中常见的知识点,涉及内存管理、HTTP协议、iOS开发、C++语言特性、数据结构、算法等多个方面。讲解了如何减少内存碎片、HTTP URL组成部分、iOS非ARC环境下代码执行结果、C++语言描述的正确选项、代码运行结果分析等,并通过例题解析加深理解。适合准备iOS笔试的读者参考学习。
摘要由CSDN通过智能技术生成

参考自:《鹅厂实习生客户端笔试》

1.下列减少内存碎片的方法有哪些是正确的?

增加实际申请和释放的次数
频繁调用的子函数尽量使用栈内存
系统申请一大块内存,自己实现内存分配和释放,定时清理内存
降低虚拟内存的大小

解答:

答案2,3是正确的。属于操作系统中内存管理的问题。

C/C++中的malloc/free是从堆中动态申请和释放内存的,是非常耗时的;
栈内存速度比堆内存快,因为栈结构简单,只需要弹出或者入栈就可以移动指针了,而在堆中,需要查找空闲内存,申请内存等操作,所以比较慢;
分配一大块内存池,然后自己进行管理,有经验的程序员是可以做到的,比如在nginx中,它就首先分配了很多的内存,然后再重写malloc/free进行自主管理的;
关于虚拟内存,肯定是越多越好啊,升级64位最显著的优势就是可以使用64EB的内存。

考点:Stack与Heap的区别:

这里写图片描述

考点:虚拟内存(Virtual memory)

在32位Unix下,进程启动后,可以获取到4GB的虚拟内存,其中内核占用1G,用户占用3G,虚拟内存是通过物理内存(physical memory)与交换空间(swap)进行分配的,它对于进程是透明的,系统通过地址转换功能(比如MMU,内存管理单元)进行虚拟内存与实际内存的转换。

什么是内存碎片?

内部碎片: 线程占用内存而不利用或者释放的内存空间。
外部碎片: 内存空间太小以至于无法分配的内存空间。

2.以下哪些是HTTP协议里面定义的URL组成部分:

schema
path
port
host
query-string
解答:

这道题答案是除第一个以外。考的是实际中对网络编程的理解。

URL实际上就是是对资源的一种描述:

<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]<query-string>

scheme 指协议类型,常见的协议类型有market,http,content,media,file,当然协议类型也可以自定义,比如简书中使用的就是 jianshu作为默认URL的。
注意这里的 scheme 不是 schema

比如HTTP-GET的例子:

http://www.blackswift.com:8080/api/v2/getimagelist?limit=10

很显然,这个HTTP例子中除了HTTP本身已经有了,其它所有的组成都有体现。

3.已知人脸检测器的检出率(人脸图被检测为人脸的概率)为90%,误检率(非人脸被检测为人脸的概率)为1%. 请问当一张被人脸检测器识别为人脸时,该图为人脸图的概率是多少?若给定一个图片集中,其中20%的图片为人脸图,80%的图为非人脸图,当该集合中的某一张图被人脸检测器检测为人脸时,该图为人脸的概率又是多少?

  1. 无法确定, 45/47
  2. 90/91, 45/47
  3. 无法确定,90/91
  4. 90/91,90/91
    解答:

选择1;

第一问,

A = P(图片是人脸);
B = P(机器检测出人脸);

P(B|A) = 90%;
P(B|~A) = 1%;

P(B) = P(B|A)xP(A) + P(B|~A)* P(~A) = 0.9A + 0.01(1-A);

根据贝叶斯公示:

P(A|B) = P(B|A) * P(A)/P(B)
= 0.9 * P(A)/(0.89A + 0.01)
A为止,所以无法确定。

第二问,

P(A) = 0.2,代入完成。

4.iOS开发中,非ARC下这段代码执行的结果是什么?

//类似于Java,用注解定义接口
@interface OCObject : NSObject
-(void)printDescription;
@end

//接口的实现
@implementation OCObject
-(void)printDescription{
NSLog(@”OCObject printDescription!”);
}
@end

//手动分配内存,alloc并init
OCObject *obj = [[OCObject alloc]init];
//执行方法,performSelector类似于Java中的反射,也是在运行时找的。
[obj performSelector:@selector(printDescription) withObject:nil afterDelay:60];
[obj release];
1. 不会打出任何消息
2. 会输出OCObject printDesc

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值