美团点评2018秋招笔试题
很感谢牛客这个平台让我见识了许多题目,现在我也要来分享一下自己做过的美团点评笔试题啦~~
21、下列程序的运行结果是A::A()&B::()&A::~A()&,请为横线处选择合适的程序( B )
#include<iostream>
#include<string>
using namespace std;
Class A
{
Int *a;
public:
A(int i)
{
a = new int(i);
cout<<”A::A()”<<”&”;;
}
~A()
{
delete a;
cout<<”A::~A()”<<”&”;
}
};
class B:public A
{
public:
B(int i,string s):A(i)
{
b = ;
cout<<”B::B()”<<”&”;
}
~B()
{
delete[]b;
cout<<”B::~B()”<<”&”;
}
private:
string *b;
};
void fun(A *a)
{
delete a;
}
int main()
{
A *a=new B(0,”China”);
fun(a);
}
A. new char(s)
B. new string(s)
C. new string[s]
D. new char[s]
22、下列不属于虚拟机转移类指令的是( D )
A. call
B. goto
C. ifrelop
D. break
23、除了1和它本身之外,不能被其他数整除的整数称为素数。以下程序将50~100的所有素数存放到数组b中,并依次输出他们。下列横线处应填写的内容是( D )
int main()
{int b[50],n, i, j=0;
for(n=50;n<=100;n++)
{
for(i=2;i<n;i++)
if( [1] )break;
if( [2] )b[j++]=n;
}
count<<”这些素数是:”<<endl;
for(i=0;i< [3] ;i++)cout<<b[i];
return 0;
}
A. [1]n%i==0
[2]i<n
[3]j-1
B. [1]n%i>0
[2]i<n
[3]j
C. [1]n%i>0
[2]i>=n
[3]j-1
D. [1]n%i==0
[2]i>=n
[3]j
24、如果想要完全封装隔离具体实现,让外部只能通过接口来操作封装体,应该选择何种设计模式:( B )
A. 策略模式
B. 简单工厂
C. 装饰模式
D. 访问者模式
25、数据流图和程序流程图的区别是( B )
A. 数据流图适合描述系统中某个加工的执行细节,而程序流程图适合宏观地分析一个组织的业务概况
B. 数据流图中的箭头是数据流,程序流程图中的箭头是控制流
C. 数据流图就是传统意义上的程序流程图
D. 一般在数据流图中和程序流程图中,都能看出加工的执行次序
26、以下有关测试(testing)与排错(或称调试,debugging)的说法,正确的是( B )(这题好像都不对)
A. 测试时必须了解对象细节,而排错时刻忽略对象细节
B. 测试和排错的结果都不可预测
C. 先进行排错,后进行测试
D. 测试与排错都是相同的活动
27、TCP通道中,假设窗口为65535字节,往返时间RTT为0.1秒,那么最大吞吐量为(B )
A. 13.107
B. 5.2428Mbps
C. 10.4856Mbps
D. 6.5535Mbps
28、在Java中,以下声明哪些是合法的( C )
A. string c = ni
B. char a = ‘ni’
C. char b = ‘你’
D. float d = 1.1
29、以下程序的运行结果是( A )
int a = 10;
System.out.println(“a=”+((a<10)?9.9:10));
A. a= 10.0
B. 编译出错
C. a=9.9
D. a=10
30、
<c:set var=”Test” scope = “Session” > ${1+1}</c:set>
<c:out value = ${Test}/>
以上代码在浏览器中的输出是( D )
A. 2
B. 1+1
C. null
D. $(1+1)
31、
class Employee{
private double salary;
…
public double getSalary(){
}
}
class Manager extends Employee
{
private double bonus;
…
public void setBonus(double b){
bonus = b;
}
public double getSalary()
{
…
}
}
如有上未完成程序,试问如何设计Mannager类的getSalary方法来实现Mannager的薪水为薪水和奖金的总和:( A )
A. double baseSalary = super.getSalary();
return baseSalary + bonus
B. double baseSalary =getSalary();
return baseSalary + bonus
C. return getSalary() + bonus
D. return salary + bonus
32、对关键字{30,25,28,40,15,10,38,35,20,26}序列进行希尔排序,依次取增量d=3时,希尔排序的结果是( A )
A. 26,15,10,30,25,20,38,35,28,40
B. 30,25,10,38,15,20,40,35,28,26
C. 30,15,10,38,25,20,40,35,28,26
D. 26,25,10,30,15,20,38,35,28,40
33、以下说法不正确的是( D )
A. Sherwood算法是减少或消除好的和坏的之间的差别
B. Monte carlo算法总能求的问题的一个解,但该解未必正确
C. 数值概率算法一般是求数值计算问题的近似解
D. Las vegas算法一定能求的问题的正确解
34、一个石头堆里有27个石子,小明一次可以拿走3个、6个或者10个石子,问小明最少多少次可以将石头取完( D )
A. 9
B. 7
C. 8
D. 5
35、
#include<bits/stdc++.h>
using namespace std;
int solve(int x){
if(x == 0){
return 0;
}
if(x%2) ==0){
return 2 + solve(x -1);
}
else{
return 1 + solve(x - 1);
}
}
int main(){
int n = 10;
int ans = solve(n);
cout<<ans<<endl;
return 0;
}
上述程序的输出为( C )
A. 10
B. 5
C. 15
D. 20
36、以下程序运行时会出现错误,请根据行号找出错误的位置( D )
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct list
{
string no;
string name;
};
int mian()
{
sruct list s;
string num;
fstream infile(“test.txt”,ios::out); //1
cin>>s.no>>s.name; //2
infile<<s.no<<” “<<s.name<<end; //3
long posend = infile.tellp(); //4
infile.seekg(0,ios::beg); //5
cin >>num;
do
}
infile.read((char *)&s,sizeof(list)); //6
}while(s.no! = num&&infile.tellg()!=posend); //7
if(s.no == num) //8
cout<<s.no<<” “<<s.name<<endl;
else
cout<<”error”<<endl;
infile.close();
return 0;
}
A. 6
B. 8
C. 4.5
D. 7
37、设F={AB->D,A->B,D->BC,C->B},则F的最小覆盖Fmin为( C )
A. Fmin={A->D,C->B,A->B,D->C}
B. Fmin={A->D,A->B,D->B,C->B,D->C}
C. Fmin={A->D,C->B,D->C}
D. Fmin={AB->D,A->B,D->BC,C->B}
38、一棵树有63个节点,那么它有( )条边,最多有( )个叶子节点 B
A. 62 62
B. 62 32
C. 63 32
D. 63 62
39、在一个请求分页系统中,采用LRU页面置换算法时,假如有一个作业的页面走向为1,2,1,5,4,1,3,4,2,4。当分配给该作业的物理块数为3时,访问过程中发生的缺页次数为( D )
A. 3
B. 5
C. 4
D. 6
40、设字母表,下列哪个文法G[Z],使其生成的语言为L = {anbncm|n≥1,m≥0}( C )
A. Z->AB
A->aAb|ab
B->cB|Ԑ
B. Z->AB
A->Ab|ab
B->cB|Ԑ
C. Z->AB
A->aAb|a
B->cB|Ԑ
D. Z->AB
A->aAbc|ab
B->cB|Ԑ
41、设某二叉树的前序遍历序列为ABDEFCGHIJ,中序遍历序列为EFDBAGCIHJ,则该二叉树的后序遍历序列为( D )
A. ABDFECGIJH
B. DEFBIJHCGA
C. ACHJIGBDEF
D. FEDBGIJHCA
42、
#include<bits/stdc++.h>
using namespace std;
struct point{
int val;
point(int x = 0):val(x){}
bool operator < (const point &x) const{
return x.val<val;
}
bool operator + (const point &x) const{
return val-x.val;
}
}a[10];
int main(){
int n = 5;
for(int i = 1;i<=n;++i){
a[i] = point(i);
}
sort(a+1,a+1+n);
cout<<(a[1]+a[2]<<endl;
return 0;
}
上述程序的输出为( D )
A. 3
B. 9
C. -1
D. 1
43、以下程序运行的运行结果是(A )
#include<iostream>
using namespace std;
class B0
{
public:
B0(int n)
{
n1=n;
}
int n1;
void fun()
{
cout<<”B0”<<endl;
}
};
class B1:virtual public B0
{
public:
B1(int a);B0(a){}
int n2;
};
class B2:virtual protected B0
{
public;
B2(int a):B0(a){}
int n3;
};
class D1:private B1,private B2
{
public:
D1(int a):B0(a),B1(a),B2(a){}
int n4;
void fun()
{
cout<<”D1”<<endl;
}
};
int main()
{
D1 d1(0);
d1.n4=3;
d1.fun();
}
A. D1
B. 无输出结果
C. B0
D. 程序有错误,不能产生输出结果
多选题
1、用例在UML建模中是最重要的一个元素,一个完整的用例应该有哪几个部分组成( ABCD )
A. 场景
B. 后置条件
C. 前置条件
D. 参与者
2、下列说法正确的是(ABCD )
A. 正整数n>1,则n是一个素数当且仅当(n-1)!-1(mod n)
B. 如果p是一个素数,且0<x<p,则方程x^21(mod p)的解x=1 , p-1
C. 如果p是一个素数,且0<a<p,则a^(p-1)(mod p)
D. 设T[1:n]是一个含有n个元素的数组。当|{i|T[i]=x}|>n/2时,称元素x是数组T的主元素
5、下面有关线索二叉树的说法正确的是( AD )
A. 含有N个结点的线索二叉树中含有N+1个空指针域
B. 在线索二叉树中,p所指结点没有左子树的充要条件是p->left=NULL
C. 含有N个结点的线索二叉树中含有N个空指针域
D. 在线索二叉树中,p所指结点没有左子树的充要条件是p->ltag=1
6、下列说法正确的是( A D )
A. 在物理层可以用中继器实现连接功能
B. 在Windows中,用pconfig可以获取本地MAC地址
C. 其他选项全错
D. 域名在服务器上存放有internet主机的域名和IP地址
7、在互斥模型中,下列说法正确的是( BC )
A. 对同一信号的PV操作在同一进程
B. 对同一信号的PV操作在不同进程
C. 信号量S初始为1
D. 信号量S初始为0
编程题:
被 7 整除
时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
小萌非常喜欢能被 7 整除的数字,比如 7,21,121996,等等。有一天他得到了 n 个正整数,她想用这些数制造出更多的能够被 7 整除的数。于是她从这 n 个数中选出两个数,然后将一个数写在另一个数的前面,以此得到一个新的数。按这种方法她一共可以得到个数,她想知道在这些数中,有多少个是能被 7 整除的。
输入
第一行包含一个整数n。2 ≤n≤ 105
第二行包含n个正整数ai。1 ≤ai≤109
输出
输出对应的答案。
样例输入
3
127 1996 12
样例输出
4
Hint
一共有 4 种组合方式,其中:把 12 写在 1996 前面得到 121996;把 127 写在 12 前面得到12712;把 1996 写在 12 前面得到 199612;把 1996 写在 127 前面得到 1996127;都是可以被 7 整除的,其余的组合方式不能被 7 整除。
关灯游戏
时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
在 Alice 生日的那天,Bob 送给了她 n 个灯泡。他们决定用这些灯泡玩一个游戏:他们把这些灯泡从左往右排成一行,在初始时,有些灯泡是点亮的,有些灯泡是熄灭的。接下来,他们轮流进行操作,Alice 首先操作。在每一次操作中,轮到操作的人需要选择一个点亮的灯泡,然后把它以及它右边的所有灯泡的状态进行一次改变,即把点亮的灯泡熄灭,把熄灭的灯泡点亮。如果在某一个人操作完之后,所有的灯泡都变成了熄灭状态,那么那个人就赢得了游戏。Alice 和 Bob 都想赢得游戏,在他们都足够聪明的情况下,最后谁会赢呢?
输入
第一行包含一个整数n,表示灯泡的个数。1≤n≤105
第二行包含n个 0 或 1,表示初始时灯泡的状态,0 表示熄灭,1 表示点亮。
输出
如果最后 Alice 能赢,输出 Alice,或则输出 Bob。
样例输入
3
0 1 1
样例输出
Alice
Hint
Input Sample 2
5
1 1 1 0 0
Output Sample 2
Bob
#春招##笔试题目#