网易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,则进一步查找右子树。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值