【牛客】错题集

牛客错题集

1. 执行"int x=1;int y=~x;"语句后,y的值为?

运算对象为数字的补码,而不是二进制码。当补码的符号位为1时,说明该补码对应的是负数,所以根据补码求原码的时候遵循负数的原则,补码取反加一。如果符号位为0时,则该补码对应的原码与其相同。

-3

1000 0011 (原码)

1111 1100 (反码)

1111 1101 (补码)(这是-3在计算机中的表示形式)

~(-3):

0000 0010 (补码)(~(-3)在计算机中的表示形式)

所以~(-3)=4

 

1

0000 0001 (原码,反码,补码)

~1

1111 1110 (补码)(~1在计算机中的表示形式)

1000 0010 (原码)

~1=-2

2.#include命令的功能是 (在命令处插入一个文本文件)。

预处理器发现#include后,就会寻找指令后面<>中的文件名,并把这个文件的内容包含到当前的文件中,

被包含的文件中的文本将替换源代码文件中的#include指令。

3.

在官方文档里,对于 fseek 的描述是

Move to specified position in file,移到文件的某一个特殊位置

status = fseek

(fileID, offset, origin)

fileID的意思是fopen打开时产生的整数标识,代表文件指针,大于0时,表示文件成功打开。

在文件中,offset是,相对于起始origin的位置开始移动的整数

origin有三种状态,bof,cof,eof,其分别表示文件的开始位置,当前位置,和末尾位置。

如果操作成功,则状态返回0,否则返回为-1.

 

 

 4.

5.

C的运算符有以下几类:

1.算术运算符:* - + /

2.关系运算符: > < == != >= <=

3.逻辑运算符:! && ||

4.位运算符:<< >> ~ | ^ &

5.赋值运算符:=及扩展赋值运算符

6.条件运算符:?:

7.逗号运算符:,

8.指针运算符:*和&

9.求字节数运算符:sizeof

10.强制类型转换运算符:(类型)

11.分量运算符:. ->

12.下标运算符:[ ]

13.其他:如函数调用运算符:()

注意:条件运算符是C语言中惟一一个三目(三元)运算符

6.在下列排序算法中,哪几个算法的时间复杂度与初始排序无关()

 

直接插入排序:
算法思想:将第i个记录插入到前面已经排好序的i - 1个记录中去。
算法要点:

使用监视哨r[0]临时保存带插入记录
从后往前查找应插入的位置
查找与移动用同一循环完成
算法时间复杂度:o(n^2)

折半插入排序:
算法思想:利用折半查找的思想找到需要插入的位置
算法时间复杂度:o(n^2),虽然减少了查找插入位置的次数,但是移动元素的时间仍未改变

希尔排序:
算法思想:将待排序的关键字序列分成若干个较小的子序列,对子序列进行直接插入排序,使整个待排序序列排好序。
算法时间复杂度:o(n^1.5)

快速排序:
算法思想:从待排序记录中选择一个记录为枢纽,设为K,将其余大于K的记录移动至K的后面,小于K的移动至前面,此过程称为一趟快速排序。当然就是对接下来的两个字表进行相同的操作,直到子表的长度不超过1
算法时间复杂度:o(Knlog2n),K为常数因子,且在所有O(nlogn)复杂度中,快排的K值最小

简单选择排序:
算法思想:
第一趟:从第一个记录开始,通过n-1次关键字比较,从n个记录中选出最小的并和第一个记录交换;
第二趟:从第二个记录开始,通过n-2次关键字比较,从n -1个记录中选出最小的并和第二个记录交换;
...
算法时间复杂度:o(n^2)

堆排序:
算法思想:将向量中存储的数据看成一棵完全二叉树,利用完全二叉树中双亲节点和孩子节点之间的内在关系选择关键字最小的记录。
大根堆:各节点关键字满足:a[i] >= a[2i]并且a[i] >= a[2i + 1]
小根堆:各节点关键字满足:a[i] <= a[2i]并且a[i] <= a[2i+1]
算法时间复杂度:o(nlogn)

归并排序:
算法思想:设初始序列长度为n,将这n个序列看成n个有序的子序列,然后辆辆合并,得到一个ceil(n/2)长度为2的有序子序列。
在此基础上再对长度为2 的有序子序列进行归并排序,得到若干长度为4的子序列,如此重复直到得到一个长度为n的有序子序列为止

时间复杂度:o(nlogn)

选堆快希不稳(稳定性) 选堆归基不变(时间复杂度的变化特性)

直接插入排序:
算法思想:将第i个记录插入到前面已经排好序的i - 1个记录中去。
算法要点:

使用监视哨r[0]临时保存带插入记录
从后往前查找应插入的位置
查找与移动用同一循环完成
算法时间复杂度:o(n^2)

折半插入排序:
算法思想:利用折半查找的思想找到需要插入的位置
算法时间复杂度:o(n^2),虽然减少了查找插入位置的次数,但是移动元素的时间仍未改变

希尔排序:
算法思想:将待排序的关键字序列分成若干个较小的子序列,对子序列进行直接插入排序,使整个待排序序列排好序。
算法时间复杂度:o(n^1.5)

快速排序:
算法思想:从待排序记录中选择一个记录为枢纽,设为K,将其余大于K的记录移动至K的后面,小于K的移动至前面,此过程称为一趟快速排序。当然就是对接下来的两个字表进行相同的操作,直到子表的长度不超过1
算法时间复杂度:o(Knlog2n),K为常数因子,且在所有O(nlogn)复杂度中,快排的K值最小

简单选择排序:
算法思想:
第一趟:从第一个记录开始,通过n-1次关键字比较,从n个记录中选出最小的并和第一个记录交换;
第二趟:从第二个记录开始,通过n-2次关键字比较,从n -1个记录中选出最小的并和第二个记录交换;
...
算法时间复杂度:o(n^2)

堆排序:
算法思想:将向量中存储的数据看成一棵完全二叉树,利用完全二叉树中双亲节点和孩子节点之间的内在关系选择关键字最小的记录。
大根堆:各节点关键字满足:a[i] >= a[2i]并且a[i] >= a[2i + 1]
小根堆:各节点关键字满足:a[i] <= a[2i]并且a[i] <= a[2i+1]
算法时间复杂度:o(nlogn)

归并排序:
算法思想:设初始序列长度为n,将这n个序列看成n个有序的子序列,然后辆辆合并,得到一个ceil(n/2)长度为2的有序子序列。
在此基础上再对长度为2 的有序子序列进行归并排序,得到若干长度为4的子序列,如此重复直到得到一个长度为n的有序子序列为止

时间复杂度:o(nlogn)

选堆快希不稳(稳定性) 选堆归基不变(时间复杂度的变化特性)

7.在以下协议中,那个协议与其他协议是不属于同一类的()

网络层:IP协议、ICMP协议、ARP协议、RARP协议。

传输层:UDP协议、TCP协议。

应用层:FTP(文件传送协议)、Telenet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议, SNMP协议, TFTP。

全部评论

相关推荐

头像
10-13 18:10
已编辑
东南大学 C++
。收拾收拾心情下一家吧————————————————10.12更新上面不知道怎么的,每次在手机上编辑都会只有最后一行才会显示。原本不想写凉经的,太伤感情了,但过了一天想了想,凉经的拿起来好好整理,就像象棋一样,你进步最快的时候不是你赢棋的时候,而是在输棋的时候。那废话不多说,就做个复盘吧。一面:1,经典自我介绍2,项目盘问,没啥好说的,感觉问的不是很多3,八股问的比较奇怪,他会深挖性地问一些,比如,我知道MMU,那你知不知道QMMU(记得是这个,总之就是MMU前面加一个字母)4,知不知道slab内存分配器-&gt;这个我清楚5,知不知道排序算法,排序算法一般怎么用6,写一道力扣的,最长回文子串反问:1,工作内容2,工作强度3,关于友商的问题-&gt;后面这个问题问HR去了,和中兴有关,数通这个行业和友商相关的不要提,这个行业和别的行业不同,别的行业干同一行的都是竞争关系,数通这个行业的不同企业的关系比较微妙。特别细节的问题我确实不知道,但一面没挂我。接下来是我被挂的二面,先说说我挂在哪里,技术性问题我应该没啥问题,主要是一些解决问题思路上的回答,一方面是这方面我准备的不多,另一方面是这个面试写的是“专业面试二面”,但是感觉问的问题都是一些主管面/综合面才会问的问题,就是不问技术问方法论。我以前形成的思维定式就是专业面会就是会,不会就直说不会,但事实上如果问到方法论性质的问题的话得扯一下皮,不能按照上面这个模式。刚到位置上就看到面试官叹了一口气,有一些不详的预感。我是下午1点45左右面的。1,经典自我介绍2,你是怎么完成这个项目的,分成几个步骤。我大致说了一下。你有没有觉得你的步骤里面缺了一些什么,(这里已经在引导我往他想的那个方向走了),比如你一个人的能力永远是不够的,,,我们平时会有一些组内的会议来沟通我们的所思所想。。。。3,你在项目中遇到的最困难的地方在什么方面4,说一下你知道的TCP/IP协议网络模型中的网络层有关的协议......5,接着4问,你觉得现在的socket有什么样的缺点,有什么样的优化方向?6,中间手撕了一道很简单的快慢指针的问题。大概是在链表的倒数第N个位置插入一个节点。————————————————————————————————————10.13晚更新补充一下一面说的一些奇怪的概念:1,提到了RPC2,提到了fu(第四声)拷贝,我当时说我只知道零拷贝,知道mmap,然后他说mmap是其中的一种方式,然后他问我知不知道DPDK,我说不知道,他说这个是一个高性能的拷贝方式3,MMU这个前面加了一个什么字母我这里没记,别问我了4,后面还提到了LTU,VFIO,孩子真的不会。
走呀走:华子二面可能会有场景题的,是有些开放性的问题了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务