我去的时候一堆北大和中大的,倍感压力,不过这份题出的真心有水平。。。我真心不是偷题的,我认认真真把会作的作了,才有印象回来写这个回顾的,也当是查缺补漏了。java
1.sizeof计算字节是在何时?python
答:编译时
2.请问下列哪本书最厚(这题我也是醉了)
A.c++ prime
B.Head First
C.Effective c++
D.windows内核编程linux
答:应该是c吧 = =其余c++几本都挺厚
3.Linux哪一个命令是。。。记不得题目了,反正是这几个命令:c++
cat 显示整个文件 more 以百分比形式查看文件(会分页) less 和more差很少 head 从文件头开始查看 tail 尾开始查看文件
4.一个盒子里有5个颜色的小球,小球视为无限多,每一个人一次能够从里面拿出2个来,那么问:能够最多多少人来拿小球,能够保证有两我的拿出来的球中有相同颜色?git
答:应该是6吧,考虑前五我的拿出的每一对都是一样颜色 (例:A:红红 B:黄黄 C:绿绿 D:白白 E:蓝蓝 那么第六我的, 无论拿到什么颜色都会和其中一我的有一样颜色)
5.死锁是如何产生的?github
答:是指两个或两个以上的进程在执行过程当中, 因为竞争资源或者因为彼此通讯而形成的一种阻塞的现象, 若无外力做用,它们都将没法推动下去。此时称系统处于死锁状态 或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 (等待~关键词)
6.我有20块钱,若是一瓶可乐1块(好便宜= =),两个空瓶子能够换1瓶新可乐,那么请问你最多能够喝到多少瓶?web
答:20——>10——>5——>2——>1(这些是兑换的过程)38瓶, 而后5——>2时手头上有一个多的空瓶子,加上最后喝的一瓶能够换多一瓶 +1, 因此是最多39瓶。
7.栈和队列有什么共同点?面试
答:只容许在端点处删除或插入的顺序表。 堆和队列都是先进先出,栈是先进后出。
还有3题不太记得了。。不过能够能看出,这些知识点考察的基本都是最基础的知识点算法
1.冒泡排序法的时间复杂度数据库
答:O(n^2)
2.如何用程序判断一个float类型变量x是否是为0
答:这题当时没想到,好像直接用了个if去判断= =,后来以为本身好sb啊。 if(x>0.0000000 && x< -0.0000000) printf("x是0")
3.在执行main函数以前,编译器会运行什么代码?
答: (1)设置栈指针 (2)初始化static静态和global全局变量,即data段的内容 (3)将未初始化部分的全局变量赋初值 (4)运行全局构造器,估计是C++中构造函数之类的吧 (5)将main函数的参数,argc,argv等传递给main函数,而后才真正运行main函数 (网上google下,有人说是start函数)
4.结构struct定义时默认其成员是_____,类class定义时默认成员为_____.
默认的访问权限不一样。struct默认为public ,class默认为private; 默认的继承权限不一样。struct的继承默认为public继承,class的继承默认为private继承。
5.TCP在请求链接时进行__次握手,断开时是__次挥手。
答:3 ,4
6.下列IP地址的书写格式正确吗?为何?
(1)162.21.045.22 对 (2)142.23.274.13 错,子网号不可能大于255 (3)168.51.233.25.55 错,主机号以后没东西了,ip是32 位的只有4段 (4)10001111.41.235.12 错,ip地址要不纯用2进制,要不纯用十进制, 能够用ping来检测该ip无效
1.简述事务的四个特性
事务是控制并发的单位,用户定义操做的一个序列。 A:原子性(Atomicity) 事务是数据库的逻辑工做单位,事务中包括的诸操做要么全作,要么全不作。 B:一致性(Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另外一个一致性状态。 一致性与原子性是密切相关的。 C:隔离性(Isolation) 一个事务的执行不能被其余事务干扰。 D:持续性/永久性(Durability) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
2.DDos是什么?
分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于 客户/服务器技术,将多个计算机联合起来做为攻击平台,对一个或多个目标发动 DDoS攻击,从而成倍地提升拒绝服务攻击的威力。
3.用SQL语句编程,有A,B,C三个列,若是A比B大,那么输出A,若是B比C大输出B(不太记得了,也不知道这个题目是什么意思。。。)
4.请简述浅拷贝与深拷贝,c++中的拷贝构造函数是什么拷贝?
在有指针的状况下,浅拷贝只是增长了一个指针指向已经存在的内存,而深拷贝就是 增长一个指针而且申请一个新的内存,使这个增长的指针指向这个新的内存,采用深 拷贝的状况下,释放内存的时候就不会出如今浅拷贝时重复释放同一内存的错误! 固然是深拷贝。
5.当你在浏览器输入cc.163.com ,浏览器会打开网易cc语音的主页,请问这个过程计算机作了些什么?
(这个就是web的工做原理,扯了一堆分层、TCP三次握手之类的东西) 具体能够参考《按下google.com时实际发生了什么》:
https://github.com/skyline75489/what-happens-when-zh_CN
6.Linux哪一个命令是查看当前进程
ps查看进程。 最经常使用的方法是ps aux,而后再经过管道使用grep命令过滤查找特定的进程, 而后再对特定的进程进行操做。 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。
7.如何编程判断CPU是大端仍是小端?
答:明白大端和小端的区别,实现起来就很是简单: Big-endian是一种大值的一端(序列中更典型值)存在前面(在最小的存储地址) 的顺序。Little-endian是一种小值的一端(序列中较不典型的值)存储在前的 顺序。好比,在Big-endian的电脑中,须要两个字节把十六位数4F52看成4F52 存在存储器中(若是4F存在存储地址1000中,好比说,52将存在1001中)。 在little-endian系统里,将被存为524F(52存在存储地址1000中,好比说, 4F将存在1001中)。
#include <stdio.h> int main() { union ut{ short s; char c[2]; }u; if(sizeof(short) == 2) { u.s = 0x0102; if(u.c[0] == 1 && u.c[1] == 2){ printf("big enidan/n"); } else if(u.c[0] == 2 && u.c[1] == 1){ printf("little endian./n"); } return 0; } }
一、学校有个教务系统,里面有三个表
Student(sno,sname,sex,grade,class) Teacher(tno,tcourse,tname) Course(cno,cname,ctime)
用SQL语句做答:
(1)找出选了“计算机编程”课程的同窗名字和学号。
(2)找出和“谭维维”同窗有关的全部课程
(3)(不太记得了)
二、编写一个简单函数add(a,b) ,目的为了计算a和b的和。
条件:已知a和b都为正整数,不考虑溢出,若a的百位数字为0,那么函数直接输出0;反之则计算两个数的和;例如(a=1001,b=31,那么直接输出0; a=123,b=2,输出125)
答:我当时想的比较复杂。。。
正解:直接用a除以100,再%10: 即(a/100)%10==0
3.写出堆排序的伪代码(若是能够写代码,能够用本身喜欢的语言)
PS:这份卷子能够用c++、java、c或者python写
void HeapAdjust(int array[],int i,int nLength) { int nChild; int nTemp; for(;2*i+1<nLength;i=nChild) { //子结点的位置=2*(父结点位置)+1 nChild=2*i+1; //获得子结点中较大的结点 if(nChild<nLength-1&&array[nChild+1]>array[nChild])++nChild; //若是较大的子结点大于父结点那么把较大的子结点往上移动,替换它的父结点 if(array[i]<array[nChild]) { nTemp=array[i]; array[i]=array[nChild]; array[nChild]=nTemp; } else break; //不然退出循环 } } //堆排序算法 void HeapSort(int array[],int length) { int i; //调整序列的前半部分元素,调整完以后第一个元素是序列的最大的元素 //length/2-1是最后一个非叶节点,此处"/"为整除 for(i=length/2-1;i>=0;--i) HeapAdjust(array,i,length); //从最后一个元素开始对序列进行调整,不断的缩小调整的范围直到第一个元素 for(i=length-1;i>0;--i) { //把第一个元素和当前的最后一个元素交换, //保证当前的最后一个位置的元素都是在如今的这个序列之中最大的 array[i]=array[0]^array[i]; array[0]=array[0]^array[i]; array[i]=array[0]^array[i]; //不断缩小调整heap的范围,每一次调整完毕保证第一个元素是当前序列的最大值 HeapAdjust(array,0,i); } } int main() { int i; int num[]={9,8,7,6,5,4,3,2,1,0}; HeapSort(num,sizeof(num)/sizeof(int)); for(i=0;i<sizeof(num)/sizeof(int);i++) { printf("%d ",num[i]); } printf("\nok\n"); return 0; }
四、(压轴)滑雪问题(动态规划)
大概就是说,例如给你一个二维数组,aryR ,好比 R=5,C=5,里面的元素是从1到R*C的,也就是1到25都有,并且只会出现一次。
eg:
INPUT: R=5,C=5 ,以及二维数组每个元素(任意导入的,多是乱序,可是最大数确定是R*C,最小是1),以下:
1 4 5 6 10 2 3 7 8 13 15 25 20 23 24 21 9 11 14 12 19 18 17 16 22
OUTPUT:(输出该数组的最大滑雪落差)
25
编写程序,输入滑雪的“地图”,给出该地图的最大滑雪落差。
分析: 其实,你能够把上面这个例子的数组这个样子看做是从上到下的俯视图(海拔图), 每个数视为一个点,数值便是这个点的高度,好比20这个点,上有7, 下有11,左是25,右边是23 若是你要“从20这么高滑雪冲下去”那么确定要找个比20要低的点吧, 题目规定,你只能从一个点滑倒上下左右四个点的其中一个。例如20, 你只能选择滑到7或者11,那么,例如你滑到了7那么“高”,那么你能够 继续“往下滑”,就是滑倒3,3再到2,2再到1;那么最大滑雪落差就是 20-1+1=19+1=20 (由于你在1后要回到地面,默认+1) 本例子的25就是这样来的:25--->15--->2--->1
(注意:不必定是从最大数值那个高度滑下来能够到达最大落差,由于你可能到了某一个点就没有办法继续“往下”了)
例如:这是个8行 8列的二维数组,若是你选了最大值64,那么你会发现,64滑倒邻点的高度差明显不是最大的。最大的高度差是63--->7--->1
45 52 3 4 22 8 51 13 64 48 56 1 12 9 41 19 4 3 59 63 7 11 15 2 答:考虑动态规划
总结:这份试卷主要考察了操做系统,c++,SQl,Linux,计算机等基础知识,不能说难。可是考察的很全面,就算不进面试。也算学到东西了,最后舍友进了面试,拿了offer后和我一块儿去了鹅肠