欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网易2018实习生招聘笔试题-ios开发实习生(10道)

程序员文章站 2024-03-12 15:55:02
...

不得不说自己的算法实力可能是真的没有锻炼太多,还有数据结构,操作系统这部分知识刚刚结束不久也不记得了…

下面就简单的介绍下这些题目

1、

MyClass *ref1 = [MyClass new];
__weak MyClass *ref2 = ref1;
MyClass *ref3 = ref1;
__unsafe_unretained MyClass *ref4 = ref1;
ref2 = nil;
以上代码执行完 MyClass 实例的引用计数是几?

网易2018实习生招聘笔试题-ios开发实习生(10道)

2、

以下哪个布局方式不是iOS原生支持的

网易2018实习生招聘笔试题-ios开发实习生(10道)

3、

Xcode Instruments不包含以下哪个工具

网易2018实习生招聘笔试题-ios开发实习生(10道)

4、

关于UIView和CALayer下列说法错误的是:

网易2018实习生招聘笔试题-ios开发实习生(10道)

5、算法题

为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。

这道题目我用了快排和二分法自己测试了数据感觉没问题,但是结果还是错的…

网易2018实习生招聘笔试题-ios开发实习生(10道)
网易2018实习生招聘笔试题-ios开发实习生(10道)

下面就附上其中的一种解题步骤

#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

网易2018实习生招聘笔试题-ios开发实习生(10道)
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协议

网易2018实习生招聘笔试题-ios开发实习生(10道)

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,那么:
网易2018实习生招聘笔试题-ios开发实习生(10道)

9、对于以下关键字{55,26,33,80,70,90,6,30,40,20},增量取5的希尔排序的第一趟的结果是:

增量为5的话,那么26会和6互换,然后33和30互换,然后80和40互换,然后20和70互换

网易2018实习生招聘笔试题-ios开发实习生(10道)

10、设二叉排序树中关键字由1到999的整数构成,现要查找关键字为321的节点,下面关键字序列中,不可能出现在二叉排序树上的查找序列是

二叉排序树的特点就是

  • 若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值

  • 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值

  • 左、右子树也分别为二叉排序树

看B选项的最后两个数,321 和 362 比较以后,明显321< 362 ,必然会去寻找362的左子树,此时应该去寻找362的左子树,但是366大于362肯定不是左子树

二叉排序树的算法就是

首先将待查关键字key与根节点关键字t进行比较:
a.如果key = t, 则返回根节点指针。
b.如果key < t,则进一步查找左子书。
c.如果key > t,则进一步查找右子树。

网易2018实习生招聘笔试题-ios开发实习生(10道)