猿系列鄙视

文章目录

  • 2020-0822的笔试题第一道编程题
  • 猿辅导2020校招笔试(一)
    • 1
    • 2
    • 3
    • 4
    • 先序中序求后序,太简单。
    • 6
    • canci
  • 猿辅导2020校招笔试(算法岗二)
    • 报道的
    • 第二道题太难了
    • 角色分组
    • canci

2020-0822的笔试题第一道编程题

  • 打印完全二叉树的边界节点!!!
//#include

#include 
#include 
#include 
#include 
#include 
using namespace std;

void print(int A[], int len)
{
	int i = 0;
	while (i < len)
	{
		cout << A[i] << " ";
		i = 2 * i + 1;
	}
	i = (i - 1) / 2;//最后一层的第一个的索引。
	int prev_start = (i - 1) / 2;
	int prev_end = i - 1;
	

	i++;
	while (i < len)
	{
		cout << A[i] << " ";
		i++;
	}
	for (int j = prev_start; j <= prev_end; j++)
		if (2 * j + 1 >= len)
			cout << A[j]<<" ";

	int j;
	if (2 * prev_end + 1 >= len)
		j = (prev_end - 2) / 2;
	else
		j = prev_end;
	//上面是判断一下倒数第二层的prev_end有没有被打印啊!!

	while (j >= 2)
	{
		cout << A[j] << " ";
		j = (j - 2) / 2;
	}
	
}

int main()
{

	int N;
	cin >> N;
	int* A = new int[N];
	for (int i = 0; i < N; i++)
		cin >> A[i];
	print(A, N);
	return 0;

}

猿辅导2020校招笔试(一)

1

猿系列鄙视_第1张图片
  • 一看0x64
  • 它和一个数字&
  • 最后两bit必然是00
  • 所以fun2最后两bit肯定是00
  • 答案就是0啊,这么简单!

2

猿系列鄙视_第2张图片

卧槽,Prim算法复杂度居然低于 n l o g n nlogn nlogn

3

  • 小猿发明了一款支持随机访问且断电丢失的存储系统,
  • 读写速度和寄存器相同,
  • 存储大小和磁盘相当。
  • 用这款存储系统的计算机设计操作系统“猿力”。
  • 不考虑经济成本,正确的是:
猿系列鄙视_第3张图片

为啥不要虚拟内存啊,虚拟内存不是让进程隔离啊,更安全呢。

  • 这题目有疑问哦

4

  • 一个全加器对两路一位数字信号的加法,

  • 输入为两路一位信号I1,I2,

  • 输出为一路两位信号O(含进位)

  • 一路任意的3位数字信号X作为输入,要求输出Y=X*5,

    • 最少需要几个全加器?
  • X 左移动两位再(变成5位了)

  • 加上自己

猿系列鄙视_第4张图片

先序中序求后序,太简单。

6

  • UDP的说法中正确的是:
猿系列鄙视_第5张图片
  • UDP和TCP均属传输层协议
  • UDP无连接,不存在建立连接需要的时延。
    • 空间上,TCP需要在端系统中维护连接状态,需要一定的开销。
    • 此连接装入包括接收和发送缓存,拥塞控制参数和序号与确认号的参数。
    • UDP不维护连接状态,也不跟踪这些参数,开销小。空间和时间上都有优势。
  • C:如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方
  • D:UDP常用一次性传输比较少量数据的网络应用,如DNS,SNMP等,因为对于这些应用,若是采用TCP,为连接的创建,维护和拆除带来不小的开销
    • UDP也常用于(如IP电话,实时视频会议,流媒体等)
    • 数据的可靠传输对他们而言并不重要,
    • TCP的拥塞控制会使他们有较大的延迟,也是不可容忍

canci

  • 添加链接描述

猿辅导2020校招笔试(算法岗二)

报道的

看链接

  • 添加链接描述

第二道题太难了

角色分组

猿系列鄙视_第6张图片
  • 一开始,我以为就是取里面三个最大的

    • 比如 4,5,6
    • 这样就禅城4个小组!
  • 其实不是这样的,你得这样:4,5,6

    • 先产生一个组
    • 然后再把3,4,5插进队列里面
    • 然后重新找最大的三个
  • 哎,这题目真是男啊!

#include 
#include 
#include 
#include 
#include 
using namespace std;

int solver(priority_queue<int>& a)
{

	int result = 0;
	int len = a.size();
	while (a.size() >= 3)
	{
		int temp1 = a.top();//最大的
		a.pop();
		//cout << temp1<
		int temp2 = a.top();//最大的
		a.pop();
		//cout << temp2 << endl;
		int temp3 = a.top();//最大的
		a.pop();
		//cout << temp3 << endl;
		if(temp1&&temp2&&temp3)
			result += 1;
		if (temp1 > 1)
			a.push(temp1-1);
		if (temp2 > 1)
			a.push(temp2 - 1);
		if (temp3 > 1)
			a.push(temp3 - 1);

	}
	return result;
}

int  main()
{
	int C;
	cin >> C;
	for (int i = 0; i < C; i++)
	{
		int size;
		cin >> size;
		priority_queue<int> a ;
		for (int j = 0; j < size; j++)
		{
			int temp;
			cin >> temp;
			a.push(temp);
		}
		cout << solver(a) << endl;
	}
}

canci

  • 添加链接描述

你可能感兴趣的:(interview)