您的位置:首页 > 其它

蘑菇街2017校园招聘笔试题

2016-05-02 21:31 211 查看
1

设顺序循环队列Q[0: M-1]的头指针和尾指针分别为F和R.头指针F总是指向队头元素的前一位置.尾指针R总是指向队尾元素的当前位置.则该循环队列中的元素个数为()
   A、 (R-F+M)%M
B、  R-F
C、  (F-R+M)%M
D、  F-R


正确答案: A



2、算法的时间复杂度取决于()

A 待处理数据的状态
B 处理器的速度
C 问题的规模
D 程序所占空间


正确答案: A C

解析:

比如说快排,初始数据的顺序影响快排的时间复杂度。

3、

int f(int x)
return ((x>2) ? x*f(x-1) : 3);
}
int i;
I=f(f(2)):


执行如上函数后. I的值为()

A  30
B  无限递归
C  9
D  2160


正确答案: C

4、有关操作系统常用调度算法叙述正确的是()

A、FCFS调度算法不利于短作业
B、SPF调度算法不利于短作业
C、HRN调度算法不利于长作业
D、HRN调度算法既利于短作业又有利于长作业


正确答案: A D

常见的调度算法:
1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。 因此选A;
2.短作业优先调度算法 (SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。

3.最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。 因此选D;

4. 基于优先数调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

5、promise的状态有()

A 、Unfulfilled
B 、Pause
C 、Resolved
D 、Rejected


正确答案: C D

答案:

一个promise可能有三种状态:等待(pending)、已完成(fulfilled)、已拒绝(rejected)

一个promise的状态只可能从“等待”转到“完成”态或者“拒绝”态,不能逆向转换,同时“完成”态和“拒绝”态不能相互转换

promise必须实现then方法(可以说,then就是promise的核心),而且then必须返回一个promise,同一个promise的then可以调用多次,并且回调的执行顺序跟它们被定义时的顺序一致

then方法接受两个参数,第一个参数是成功时的回调,在promise由“等待”态转换到“完成”态时调用,另一个是失败时的回调,在promise由“等待”态转换到“拒绝”态时调用。同时,then可以接受另一个promise传入,也接受一个“类then”的对象或方法,即thenable对象。

6、下面的哪个选项是自底向上分析方法()

递归下降分析法
预测分析法
LL( 1)分析法
算符优先分析法


正确答案: D

解析:

自底向上分析法(bottom-up analysis method )一种语言形式分析算法.是根据形式文法的重写规则,自叶开始逐级向上归约,直到构造出表示句子结构的整个推导树为止的一种语言形式分析算法.
递归向分析法为每一个非终结符建立相应的子程序,然后模拟语法树自动向下推倒,在推倒过程中遇到终结符则检查是否匹配,遇到非终结符则调用相应的子程序处理。
预测分析法是根据客观对象的已知信息而对事物在将来的某些特征、发展状况的一种估计、测算活动。运用各种定性和定量的分析理论与方法,对事物未来发展的趋势和水平进行判断和推测的一种活动。
LL(1)分析使用显式栈而不是 递归调用 来完成分析。以标准方式表示这个栈非常有用,这样LL(1)分析程序的动作就可以快捷地显现出来。
算符优先分析法是一种简单直观、特别方便于表达式分析,易于手式实现的方法。算符优先法只考虑算符(广义为终结符号)之间的优先关系,它是一种自底向上的归约过程,但这种归约未必严格按照句柄归约。它是一种不 规范归约 法。

7、有关曼彻斯特编码叙述正确的是()

在信号位开始时不改变信号极性,表示辑”1”

模拟数据转换为数字信号

在信号位中电平从高到低跳变表示0

数字数据转换为数字信号


正确答案: B C

8、关于中间件特点的描述.不正确的是()

A 中间件运行于客户机/服务器的操作系统内核中,提高内核运行效率

B 中间件应支持标准的协议和接口

C 中间件可运行于多种硬件和操作系统平台上

D 跨越网络,硬件,操作系统平台的应用或服务可通过中间件透明交互


正确答案: A

解析:

中间件位于操作系统之上,应用软件之下,而不是操作系统内核中

9、下面关于promise的说法中,错误的是()

A、resolve()和reject都是直接生成一个进入相应状态的promise对象,其参数就是进入相应状态时传递过去的参数,可以在完成回调的参数中得到
B 、Promise.resolve(value),Promise.reject(reason)是Promise构造器上还直接提供了一组静态方法
C、在调用then方法或者catch方法时都是异步进行的,但是执行速度比较快
D、Promise构造器的prototype上还有两个方法,分别是then和catch。这两个方法的参数也是回调函数,这些函数会在Promise实例进入不同状态后被调用。Then对应到resolve,catch对应到reject


正确答案: D

10、KMP算法下,长为n的字符串中匹配长度为m的子串的复杂度为()

A 、O(N)
B、O(M+N)
C、O(M+LOGM)
D、O(N+LOGM)


正确答案: B

解析:

kmp模式匹配

private static int Bf(int[] a, int[] b) {
int i =0,j=0;
while(i<a.length&&j<b.length){
if(a[i]==b[j]){
i++;
j++;
}else{
i = i - j+1;
j=0;
}
}
if(j>=b.length){
return i - b.length+1;
}else{
return 0;
}
}


最好情况:每趟匹配不成功都是在第一个字符,即每趟都只需匹配一次就知道该趟是否匹配。O(m+n)
最坏情况:每趟匹配不成功都是在最后一个字符。时间复杂度O(m*n)

11、通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入的排序算法是()

A、归并排序
B、选择排序
C、希尔排序
D、插入排序


正确答案: D

解析:

归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。
如 设有数列{6,202,100,301,38,8,1}
初始状态:6,202,100,301,38,8,1
第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3;
第二次归并后:{6,100,202,301},{1,8,38},比较次数:4;
第三次归并后:{1,6,8,38,100,202,301},比较次数:4;
总的比较次数为:3+4+4=11,;
逆序数为14;

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r
中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r
中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r
中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:
初始序列:{ 49 27 65 97 76 12 38 }
第1趟:12与49交换:12 { 27 65 97 76 49 38 }
第2趟:27不动 :12 27 { 65 97 76 49 38 }
第3趟:65与38交换:12 27 38 { 97 76 65 49}
第4趟:97与49交换:12 27 38 49 { 97 76 65 }
第5趟:76与65交换:12 27 38 49 65 { 97 76 }
第6趟:97与76交换:12 27 38 49 65 76 97 完成

12、执行chmod 644 mm.txt后的权限是()

A、-rw-r--r--
B、rw-r--r--
C、-rwxr--r--
D、rwxr- -rw-


正确答案: A

13、下列说法正确的是()

A、二维以上的数组其实是一种特殊的广义表
B、数组一旦建立,结构的元素个数和元素间的关系就不再变化
C、数组是一种线性结构,因此只能用来存储线性表
D、数组采用顺序存储方式表示


正确答案: A B D

14、为了提高数据库的性能,需要针对系统设计基准测试进行压力测试,那么进行压力而是时需要考虑以下哪些指标()

A、可扩展性
B、响应时间
C、开发性
D、吞吐量


正确答案: A B C D

15、假如在MySQL中有存储过程proc1(员工编号,月份)用来查询员工的工资,两个参数类型均为字符类型,则下列调用存储过程的方法正确的是()

A、call Proc1(‘emp001’  ,’ 201601’ );
B、exec Proc1(‘emp001’  ,’ 201601’ );
C、call Proc1(‘emp001’  ,null);
D、call Proc1(‘emp001’  ,);


正确答案: A C

解析:

存储过程的调用用call语句: CALL 存储过程名 ( 参数列表 )
CALL 语句调用一个先前用CREATE PROCEDURE创建的程序。
CALL 语句可以用声明为OUT或的INOUT参数的参数给它的调用者传回值。
存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

16、利用时间重叠概念实行并行处理的是()

A、多处理机
B、流水处理机
C、相联处理机
D、并行(阵列)处理机


正确答案: B

17、下列关于策略处理规则描述正确的是()

A、如果子容器的某个策略被配置,则此配置值会覆盖由其父容器所传递下来的配置值
B、当组策略的用户配置和计算机配置冲突的时候,优先处理用户配置
C、组策略的配置值是有累加性的
D、系统是先处理计算机配置,再处理用户配置


正确答案: A C D

18、设哈夫曼树中的结点总数为49,若用二叉链表作为存储结构,则该哈夫曼树中总共有多少个空指针域()

51
52
50
49


正确答案: C

解析:

一共有 n个节点。那么每一个节点都有两个域,共有2n个。一共有多少个分支呢?每一个节点都有父节点(除了根节点)那么就会有n-1个分支。那么空指针的域就是2n - (n-1) = n+1;那么就会有n+1个空指针域。也就是50个。不管是不是满二叉树,这个结论都是正确的。

19、Linux中包括两种链接:硬链接(Hard Link)和软连接(Soft Link),下列说法正确的是()

A、软连接可以跨文件系统进行连接,硬链接不可以
B、当删除原文件的时候硬链接文件仍然存在,且内容不变
C、硬链接被删除,磁盘上的数据文件会同时被删除
D、硬链接会重新建立一个inode,软链接不会


正确答案: A

20、在java中重写方法应遵循规则的包括()

A、访问修饰符的限制一定要大于被重写方法的访问修饰符
B、可以有不同的访问修饰符
C、参数列表必须完全与被重写的方法相同
D、必须具有不同的参数列表


正确答案: B C

解析:

方法的重写(override)两同两小一大原则
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。

21、以下集合对象中哪几个是线程安全的()

A、LinkedList
B、ArrayList
C、Vector
D、Hashtabie


正确答案: C D

22、下列有关java构造跟使用叙述正确的是()

构造器的返回值为vold类型
如果一个源文件中有多个类,那么构造器必须与公共类同名
构造器可以有0个,1个或一个以上的参数
每个类可以有一个以上的构造器


正确答案:BCD

23、

public class Test{
static int cnt = 6;
static{
cnt += 9;
}
public static void main(string[] args){
System.out.println(“cnt =” + cnt);
}
static{
Cnt /=3;
};
}


A、Cnt=5

B、Cnt=2

C、Cnt=3

D、Cnt=6


正确答案: A

解析:

静态块中的代码按写的顺序首先依次执行,执行于方法前

24、

b = 2*a/ 4
a = "one"
print(a,b)


执行下列语句后的显示结果是什么()

A、10
B、one0.5
C、error
D、one 0


正确答案:C

25、

1.bit = input("Enter a binary digit:")
2.if bit = 0 or 1:
3.    print "your input is" ,bit
4.else
5.    print "your input is invalid"


以上程序要求用户输入二进制数字0/1并显示之,请指出程序中的错误:()

A、4
B、5
C、3
D、2


正确答案: A D

26、下列有关this指针使用方法的叙述正确的是()

A、保证基类保护成员在子类中可以被访问
B、保证基类私有成员在子类中可以被访问
C、保证基类共有成员在子类中可以被访问
D、保证每个对象拥有自己的数据成员,但共享处理这些数据的代码


正确答案: D

27、设有定义char *p[]={"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是()

A、*p[1] +3
B、*(p[1] +3)
C、*(p[3] +1)
D、p[3] [1]


正确答案: B

28、

void func(char *p)
{
p=p+1;
}
int main()
{
char s[]={‘1’,’2’,’3’,’4’};
func(s);
printf(“%c”,s);
return 0;
}


A、2
B、编译错误
C、1
D、无法确定


正确答案: C

题目似乎有错误......

29、以下字符串定义与赋值中,正确的是()

A、char s[80] = {"A", "B" ,"C"}

B、char s[80]; s = {'A', 'B','C'}

C、char s[80]; s = "ABC";

D、char s[80] ="ABC";


正确答案: D

30、在MySQL中,下列关于出发机器的描述正确的是()

A、MySQL的触发器只支持行级出发,不支持语句级触发
B、触发器可以调用将数据返回客户端的存储程序
C
C、在MySQL中,使用new和old引用触发器中发生的记录内容
D、在触发器中可以使用显示或者隐式方式开始或结束事务的语句


正确答案: A C

31、对于工资表结构如下(员工编号,姓名,部门,工资),如果要对查询的结果按照部门升序与工资降序进行排序,则下列排序正确的是()

A、order by部门,工资
B、order by部门,工资desc
C、order by部门 asc,工资desc
D、order by部门desc,工资desc


正确答案: B C

32、为了提高数据的查询效率,需要在数据库中建立索引,则下列设计索引的原则描述正确的是()

A、在频繁进行排序或分组(即进行group by 或order by操作)的列上建立索引
B、考虑列中指的分布,列的基数越大,索引的效果越好
C、在select关键字后选择列表的列上,建立索引
D、在表中,索引越多越好


正确答案: A B

33、网络地址为172.16.0.0,采用子网掩码255.255.224.0 .以下说法正确的是()

A、其中一个子网的广播地址为:172.16.32.255
B、其中一个子网的广播地址为:172.16.128.255
C、划分了8个有效子网
D、划分了6个有效子网


正确答案: C

解析:

根据子网掩码可以知道网络号有多少位,主机号有多少位!

255.255.224.0

1111 1111     1111 1111     1110  0000     0000 0000

网络号有19位,主机号有13位

网络地址:
172.16.0.0
广播地址:网络地址的主机位有13位全部变成1
1010 1100 0001 0000 0001 1111 1111 1111
即:172.16.31.255

有效子网:block size = 256-224 = 32 ;
所以第一个子网为172.16.0.0;
第二个为172.16.32.0;
第三个为172.16.64.0;
第四个为172.16.96.0;
第五个为172.16.128.0;
第六个为172.16.160.0;
第七个为172.16.192.0;
第八个为172.16.224.0;
广播地址:下个子网-1.所以第2个子网的广播地址分别是172.16.31.255.
综上所述应该选C

子网掩码前面全是1,后面为0,必须是连续的
224是1 1 1 0 0 0 0 0 0 可行
240是1 1 1 1 0 0 0 0 0 可行
248是1 1 1 1 1 1 0 0 0 可行
250是1 1 1 1 1 1 0 1 0 不可行

34、对下列常见的各种网络术语描述正确的是()

A、ADNS是一种用于TCP/IP应用程序的分布式数据库,因此它在TCP/IP体系中处于应用层
B、TFTP是一种文件传递应用程序,它使用的传输层协议是TCP
C、Ping是对两个TCP/IP系统连通性进行测试的基本工具,它利用CMP进行基本的请求的应答
D、Telnet 是标准的提供远程登录功能的应用,可以在不同OS系统的主机之间运行


正确答案: C D

35、Arthur最近搬到了新的别墅,别墅特别大,原先的桌子显得比较小,所以他决定换一张新的桌子。他买了一张特别大的桌子,桌子是由很多条桌腿进行支撑的,可是回到家之后他发现桌子不稳,原来是桌子腿长度不太相同。他想要自己把桌子修理好,所以他决定移除掉一些桌腿来让桌子变得平稳。桌子腿总共有n条腿,第i条腿长度为li,Arthur移除第i桌腿要花费代价为di。假设k条腿桌子平稳的条件:超过一半桌腿能够达到桌腿长度的最大值。例如:一条腿的桌子是平稳的,两条腿的桌子腿一样长时是平稳的。请你帮Arthur计算一下是桌子变平稳的最小总代价。

大体思路是把先把输入的腿长映射到一个106维的腿长数目数组,数组中的值为对应腿长的的数目。然后从后往前遍历
没碰到一个腿长,将比他高的腿长砍掉,同时计算还需要砍多少桌腿,对剩余的桌腿排序砍掉对应部分,然后计算最小值。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
int n;
while(cin>>n)
{
vector<int >l,d,d_cut;
int a[106]={0};
int li,di;
for(int i=0;i<n;i++)
{
cin>>li;
l.push_back(li);
a[li]++;
}
int minCost=0;
for(int i=0;i<n;i++)
{
cin>>di;
d.push_back(di);
minCost+=di;
}
for(int i=105;i>0;i--)
{
int cost=0;
d_cut.clear();
if(a[i])
{
int cutLegNum=l.size()-a[i];
for(int j=i+1;j<=105;j++)
{
cutLegNum-=a[j];
}
cutLegNum-=(a[i]-1);
for(int k=0;k<n;k++)
{
if(l[k]<i)
d_cut.push_back(d[k]);
if(l[k]>i)
cost+=d[k];
}
if(cutLegNum>0)
{
sort(d_cut.begin(),d_cut.end());
for (int k = 0; k <cutLegNum; k++)
cost+=d_cut[k];
if(cost<minCost)
minCost=cost;
}
}
}
cout<<minCost<<endl;
}
return 0;
}


36、现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。

#include <iostream>
#include <vector>

using namespace std;

classSolution
{
public:
intMinChange(vector<int>& array,intlen)
{
if(len<1)
{
return0;
}

intcount = 0;

for(inti = 0; i < len;i++)
{
for(intj = i + 1; j < len;j++)
{
if(array[i]>array[j])
{
count++;
}
}
}

returncount;
}
};
intmain()
{
intn = 0;
cin >> n;
vector<int>array;
inttemp = 0;
for(inti = 0; i < n;i++)
{
cin >> temp;
array.push_back(temp);
}

Solution s;
cout << s.MinChange(array,n);
return0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: