网易2018实习生招聘笔试题-ios开发实习生(10道)
不得不说自己的算法实力可能是真的没有锻炼太多,还有数据结构,操作系统这部分知识刚刚结束不久也不记得了…
下面就简单的介绍下这些题目
1、
MyClass *ref1 = [MyClass new];
__weak MyClass *ref2 = ref1;
MyClass *ref3 = ref1;
__unsafe_unretained MyClass *ref4 = ref1;
ref2 = nil;
以上代码执行完 MyClass 实例的引用计数是几?
2、
以下哪个布局方式不是iOS原生支持的
3、
Xcode Instruments不包含以下哪个工具
4、
关于UIView和CALayer下列说法错误的是:
5、算法题
为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。
这道题目我用了快排和二分法自己测试了数据感觉没问题,但是结果还是错的…
下面就附上其中的一种解题步骤
#include <iostream>
#include <algorithm>
#include <map>
#include <cstring>
typedef struct Job{
//难度
int di;
//报酬
int pi;
};
//排序函数
bool compare(Job a,Job b)
{
return a.di > b.di;
}
using namespace std;
int main(int argc,char *argv[])
{
//N为工作数量,M为小伙伴数量
int n,m;
map<int,int> topPay;
//输入N和M
cin>>n>>m;
Job Jobs[n];
int A[m],B[m];
//输入难度和报酬
for (int i=0; i<n; i++) {
cin>>Jobs[i].di>>Jobs[i].pi;
}
//输入能力值
for (int i=0; i<m; i++) {
cin>>A[i];
}
//进行排序
sort(Jobs, Jobs+n, compare);
/*这里就是套路了,Jobs是按照难度进行降序排列的,也就是说难度高的工作都在前面
那么我们可以进行设置酬劳,如果说满足了前面的设置*/
for (int i=n-2; i>=0; i--) {
Jobs[i].pi = Jobs[i].pi > Jobs[i+1].pi ? Jobs[i].pi:Jobs[i+1].pi;
}
//从A当中拷贝数据到B当中
memcpy(B, A, sizeof(A));
//进行默认升序排序,能力最高的在后面
sort(A, A+m);
int j = m-1;
for (int i=0; i<n; i++) {
//下面判断就是从能力最高的和难度最高的开始比较
if (Jobs[i].di <= A[j] && j>=0) {
topPay[A[j]] = Jobs[i].pi;
--j;
--i;
}
}
//进行输出
for (int i=0; i<m; i++) {
cout<<topPay[B[i]]<<endl;
}
}
6、
关于http协议以下说法不正确的是:
1.304表示临时重定向
2.range请求响应一定是用http状态码206表示成功
3.http的header分割符是\r
4.请求参数如果包含%,需要进行encode
302才是代表暂时重定向,304代表的是如果客户端发送的是一个条件验证(Conditional Validation)请求,则web服务器可能会返回HTTP/304响应,这就表明了客户端中所请求资源的缓存仍然是有效的,也就是说该资源从上次缓存到现在并没有被修改过,range请求就是请求资源的部分内容(不包括响应头的大小),单位是byte如果服务器能够正常响应的话,服务器会返回 206 Partial Content 的状态码及说明,range请求一般用来做断点下载
以及http的header分割符是\r\n
7、
关于计算机网络,以下说法正确的是
(1)在向下的过程中,需要添加下层协议所需要的首部或者尾部
(2)在向上的过程中不断拆开首部和尾部
(3)在向上的过程中,需要添加下层协议所需要的首部或者尾部
(4)在向下的过程中不断拆开首部和尾部
(5)SMTP属于TCP协议
(6)POP3属于UDP协议
(7)DNS属于TCP协议
(8)Telnet属于UDP协议
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。
DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议
8、已知一棵树具有10个节点,且度为4,那么:
9、对于以下关键字{55,26,33,80,70,90,6,30,40,20},增量取5的希尔排序的第一趟的结果是:
增量为5的话,那么26会和6互换,然后33和30互换,然后80和40互换,然后20和70互换
10、设二叉排序树中关键字由1到999的整数构成,现要查找关键字为321的节点,下面关键字序列中,不可能出现在二叉排序树上的查找序列是
二叉排序树的特点就是
若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值
若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值
左、右子树也分别为二叉排序树
看B选项的最后两个数,321 和 362 比较以后,明显321< 362 ,必然会去寻找362的左子树,此时应该去寻找362的左子树,但是366大于362肯定不是左子树
二叉排序树的算法就是
首先将待查关键字key与根节点关键字t进行比较:
a.如果key = t, 则返回根节点指针。
b.如果key < t,则进一步查找左子书。
c.如果key > t,则进一步查找右子树。
下一篇: C语言实现某年某月某日是某年的第几天