2.选择:ping的协议
3.选择:Java虚拟机和操作系统
4.填空:堆排序建堆的复杂度
O(n)
5.填空:概率题:52张扑克牌,4个人,每人13张,你看了两个人的牌,知道有两张牌在另外两个人手中。这两张牌在同一个人手中的概率是()。
6.填空:给出二叉树的前序遍历和中序遍历,求后续遍历。
7.编程题:链表的顺序调整:给定n0->n1->...>nn,让输出n0->nn->n1->nn-1->...
8.编程题:字符串中有*,*可以用0和1替换,输出所有的字符串;
9.算法题:叠罗汉问题
马戏团设计了这样一个节目:叠罗汉。一群人往上叠,每个人都踩在另一个人的肩膀上。 要求上面的人要比下面的人矮而且比下面的人轻。给出每个人的身高和体重, 写一个函数计算叠罗汉节目中最多可以叠多少人?
例子:
输入(身高 体重):(65, 100) (70, 150) (56, 90) (75, 190) (60, 95) (68, 110)
输出:最多可叠人数:6 (从上到下是:(56, 90) (60,95) (65,100) (68,110) (70,150) (75,190))
2014
一套卷子,共10道小题,3道编程大题
一、填空&选择
1、选择:给了一个递归求Fibonacci的代码,问算法复杂度
2、选择:忘记了,应该不难
3、选择:给你52张除掉大小王的扑克,任意抽取8张,求和,问下列哪个答案的概率最大
4、填空:著名的蒲丰投针概率问题,在一个平面上有无线条间距为H的平行线,一根针长度为h(H>h),投掷这根针,使之落在平面上,问,针与线有交点的概率
5、填空:一棵树,n1个节点度为1,n2个节点度为2,...,nk个节点度为k,求叶子节点个数
6、选择:指针跟引用的用法问题
7、选择:C++和Java中虚函数的区别
8、填空:给了一段递归代码的函数,求算法复杂度
9、填空:a,b,c,三个数均匀分布在(0,1)之间,求a+b+c之和在(0,1)的概率
10、填空:三个人按顺序射击比赛,各自有各自的概率命中(已知的概率),有人命中比赛即结束,问第三个人获胜的概率
二、编程题
1、实现两个整数的求和,整数存在单链表之中,整数的高位数字存在头结点,以此类推,返回一个链表
2、实现next_permutation的函数,即下一字典序列。输入输出都是string
3、给一个矩阵A(5*5),一个整数n,求A^n的每个元素模13的值,返回一个5*5矩阵
2013
1.编程题:字符串处理,特殊字符串要进行转义,直接一次扫描输出即可。
2.编程题:next_permutation
3.算法题:直方图中最大矩形面积,leetcode上的原题
2012
1.填空题:设x可以用n个5和m个7相加表示,x=5n+7m。求x的最小值,使得大于等于x的数都可以用5和7表示。
2.填空题:从坐标原点(0.0)出发,360°都可以行走,每次行走距离为1,求行走两步后离坐标原点距离的期望。
3.填空题:unix操作系统中进程间通讯的四种机制
管道\消息\共享存储区\信号\ 信号量
主要的四个是前4个:
(1)信号是用于通知发生一个进程同步事件的软件机制。信号类似于硬件中断,但没有优先级,即内核平等地对待所有的信号。对于同时发生的信号,一次只给进程一个信号,而没有特别的次序。进程间可以互相发送信号,内核也可以在内部发送信号。信号的传递是通过修改信号要发送到的进程所对应的进程表中的一个域来完成的。由于每个信号只保存为一位,因此不能对给定类型的信号进行排队。只有在进程被唤醒继续运行时,或者进程准备从系统调用中返回时,才处理信号。unix SVR4中定义的信号有:sighup(阻塞;当内核设想该进程的用户正在做无用工作时发送给进程)sigint(中断)sigbus(总线错误)等。
(2)管道是一个环形缓冲区,允许两个进程以生产者/消费者的模型进行通信。先进先出队列,由一个进程写,另一个进程读。创建一个管道后,它的大小是固定的字节数。当一个进程试图往管道中写时,如果有足够的空间,则写请求被立即执行;否则该进程被阻塞。类似的,如果一个进程试图读取多于当前管道中的字节数时,它也被阻塞,否则读请求被立即执行。操作系统强制实施互斥,即一次只能有一个进程可以访问管道。管道分有名管道和无名管道。只有“血缘“关系的进程才可以共享无名管道,而不相关的进程只能共享有名管道。
(3) 消息是有类型的一段文本。UNIX为参与消息传递的进程提供msgsnd和msgrcv系统调用。每个进程都有一个与之相关联的消息队列,其功能类似于信箱。消息发送者指定发送的每个消息的类型,类型可以被接收者用做选择的依据。当进程试图给一个满队列发送消息时,它将被阻塞;当进程试图从一个空队列读取时也被阻塞;如果一个进程试图读取某一特定类型的消息,但由于现在还么有这种类型的消息而失败时,该进程不会阻塞。
(4)共享存储区:UNIX提供的进程间通信速度最快的形式是共享存储区。这是被多个进程所共享的虚存中的一个公共内存块。进程读写共享存储区所使用的机器指令与读写虚存的其他空间所使用的指令相同。每个进程有一个只读或读写的权限。互斥约束不属于共享存储区机制的一部分,但必须由使用共享存储区的进程提供。
(5)信号量semWait和semSignal原语的基础上进行推广。一个信号量包含以下元素:信号量的当前值\在信号量上操作的最后一个进程的进程ID\等待该信号量的值大于当前值的进程数\等待该信号量的值为0的进程数。与信号量相关联的是在该信号量上阻塞的进程队列。信号量实际上是以集合的形式创建的,一个信号量集合有一个或多个信号量 。
4编程题:给定扑克牌中的序列(123456789TJQKA),1代表1,T代表10(十进制)A代表14(十进制),求相应十进制表示的字符串序列。我理解的就是14进制转换为10进制,其中数都是用字符串表示,且14进制给定的数序列中没有0.
5.编程题: 图G用邻接矩阵表示,求图G的联通子图
广度或者深度遍历图,当遇到栈空或者队列为空时,一个联通子图找到,再找图中没有遍历过的点,继续。
6.算法题:给定一个单词,在字典中求其兄弟单词,数据结构和算法。若单词改成汉语短语(长度小于5)该如何求解,需要哪些改变?
a. 成员函数被重载的特征:
( 1 )相同的范围(在同一个类中);
( 2 )函数名字相同;
( 3 )参数不同;
( 4 ) virtual 关键字可有可无。
b. 覆盖是指派生类函数覆盖基类函数,特征是:
( 1 )不同的范围(分别位于派生类与基类);
( 2 )
a. 成员函数被重载的特征: ( 1 )相同的范围(在同一个类中); ( 2 )函数名字相同; ( 3 )参数不同; ( 4 ) virtual 关键字可有可无。 b. 覆盖是指派生类函数覆盖基类函数,特征是: ( 1 )不同的范围(分别位于派生类与基类); ( 2 )函数名字相同; ( 3 )参数相同; ( 4 )基类函数必须有 virtual 关键字。 c.“ 隐藏 ” 是指派生类的函数屏蔽了与其同名的基类函数,规则如下: ( 1 )如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。 ( 2 )如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)
a. 成员函数被重载的特征:
( 1 )相同的范围(在同一个类中);
( 2 )函数名字相同;
( 3 )参数不同;
( 4 ) virtual 关键字可有可无。
b. 覆盖是指派生类函数覆盖基类函数,特征是:
( 1 )不同的范围(分别位于派生类与基类);
( 2 )函数名字相同;
( 3 )参数相同;
( 4 )基类函数必须有 virtual 关键字。
c.“ 隐藏 ” 是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
( 1 )如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。
( 2 )如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)