牛课做题笔记一




2012-2015网易有道笔试题总结


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,求行走两步后离坐标原点距离的期望。

牛课做题笔记一_第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 


  • 结点带权路径长度=该结点到根的路径长度×该结点权
  • 哈夫曼树:给定叶子权值和叶子数 可以构造出不同结构的二叉树 其中带权路径长度最小的二叉树称为最优二叉树 哈夫曼树是一种最优二叉树
  • 哈夫曼树算法
  1. 根据n个权值构造具有n棵二叉树的森林---森林中的每颗二叉树都只有一个根结点 结点的数据域为一个权值 该结点左右子树都是空
  2. 在森林中选出2棵根结点权值最小的树A B(这样的树不止2棵---任选2棵)---创建一个新结点作为A B的根结点 A B分别作为根结点的左右孩子(权值小的在左边大的在右边 这样规定 哈夫曼树就唯一了)---将A B的权值相加作为根结点的权值---森林中产生一颗新树C(:~有左右孩子各1)
  3. 在森林中继续选出2棵根结点权值最小的树(2.中产生的C也在选择范围内)---重复2.的过程 直到将森林中所有的数合并成一颗二叉树---这颗二叉树就是哈夫曼树
刘放
























a. 成员函数被重载的特征:
 1 )相同的范围(在同一个类中);
 2 )函数名字相同;
 3 )参数不同;
 4  virtual 关键字可有可无。
b. 覆盖是指派生类函数覆盖基类函数,特征是:
 1 )不同的范围(分别位于派生类与基类);
 2 )函数名字相同;
 3 )参数相同;
 4 )基类函数必须有 virtual 关键字。
c.“ 隐藏  是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
 1 )如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。
 2 )如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)




  • 百科: 纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义。凡是含有纯虚函数的类叫做 抽象类  。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了抽象类,不能实例化对象。
    发表于 2015-12-14 16:00:33 回复(0)
  • 2
    丁一一
    声明纯虚函数的类是抽象类,不能实例化
    基类被虚继承才是虚基类
    发表于 2015-12-02 22:25:05 回复(0)
  • 0
    牛客486089号头像 牛客486089号
    选项D我的理解是空函数的概念
    比如int fun(int x ,int y){}这叫做空函数,也就是花括号中为空;
    而纯虚函数的定义是virtual int fun(int x int y)=0.和空函数还是有点不一样的

刘放

a. 成员函数被重载的特征:

 1 )相同的范围(在同一个类中);

 2 )函数名字相同;

 3 )参数不同;

 4  virtual 关键字可有可无。

b. 覆盖是指派生类函数覆盖基类函数,特征是:

 1 )不同的范围(分别位于派生类与基类);

 2 )函数名字相同;

 3 )参数相同;

 4 )基类函数必须有 virtual 关键字。

c.“ 隐藏  是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

 1 )如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。

 2 )如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

你可能感兴趣的:(牛课做题笔记一)