牛客刷公司真题笔记。(选择题)

京东:

下列关于集中式总线解决方式的叙述中正确的是()

正确答案: A B D   你的答案: A B C D (错误)

集中式串行链接,查询所有部件都用一条"总线请求"线
集中式定时查询,所有部件共用一条"总线忙"线
集中式独立请求,查询所有部件都用一条"总线请求"线
集中式定时查询,所有部件都用一条"总线请求"线

集中式总线请求方案有三种,定时查询、串行连接和独立请求,定时查询和串行连接所有部件都用一条"总线请求"线,但是定时查询是由CPU去定时查询总线上的部件,而串行连接是部件去请求CPU。独立请求每个部件均有一条 "总线请求"线。

下面关于GFS集群的叙述中,正确是()

正确答案: C   你的答案: C (正确)

GFS所有的元数据都存放在chunkserver上
GFS所有的元数据都是放在硬盘上的
一个GFS集群由一个master和大量chunkserver构成
其他选项均不正确

GFS:分布式文件系统。Master是GFS的管理节点,在逻辑上只有一个,它保存系统的元数据,负责整个文件系统的管理,是GFS文件系统中的“大脑”。Chunk Server负责具体的存储工作。数据以文件的形式存储在Chunk Server上,Chunk Server的个数可以有多个,它的数目直接决定了GFS的规模。GFS将文件按照固定大小进行分块,每一块称为一个Chunk(数据 块),每个Chunk都有一个对应的索引号(Index)。Master管理了分布式文件系统中的所有元数据。文件划分为Chunk进行存储,对于Master来说,每个Chunk Server只是一个存储空间。

下列main()函数执行后的结果为()
1
2
3
4
5
6
7
8
9
10
11
12
13
int func()
    int i,j,k=0;
    for (i=0,j=-1;j=0;i++,j++)
    {
       k++;
     }
return k;
}
int main()
{
   cout<<(func());
}

正确答案: B   你的答案: C (错误)

-1
0
1
2
对于for(;;)循环体,中间的表达式一般是个判定条件,返回布尔型,表达式j=0,对于int,除了0以外的所有都是true,如if(1)之类的,

所以这里返回false,循环体一次都不执行





浮点数尾数基值rm=8,尾数长度为6,则可表示规格化正尾数的个数为多少个()

正确答案: B   你的答案: D (错误)

63
56
84
64

8^2*(8-1)/8=56




分布式事务处理的特性包括哪些()

事务四大特性(简称ACID) 

1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。

2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。

3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。




以下几种模型方法属于判别式模型的有
1)混合高斯模型
2)条件随机场模型
3)区分度训练
4)隐马尔科夫模型

判别式模型与生成式模型的区别

产生式模型(Generative Model)与判别式模型(Discrimitive Model)是分类器常遇到的概念,它们的区别在于:

对于输入x,类别标签y:
产生式模型估计它们的联合概率分布P(x,y)
判别式模型估计条件概率分布P(y|x)

产生式模型可以根据贝叶斯公式得到判别式模型,但反过来不行。

Andrew Ng在NIPS2001年有一篇专门比较判别模型和产生式模型的文章: 
On Discrimitive vs. Generative classifiers: A comparision of logistic regression and naive Bayes

(http://robotics.stanford.edu/~ang/papers/nips01-discriminativegenerative.pdf)


判别式模型常见的主要有:

Logistic Regression

SVM

Traditional Neural Networks

Nearest Neighbor

CRF

Linear Discriminant Analysis

Boosting

Linear Regression


产生式模型常见的主要有:

                      

       Gaussians

       Naive Bayes


       Mixtures of Multinomials

       Mixtures of Gaussians

       Mixtures of Experts

       HMMs

Sigmoidal Belief Networks, Bayesian Networks

Markov Random Fields

Latent Dirichlet Allocation




一进程刚获得3个主存块的使用权,若该进程访问页面的次序是1,2,3,4,1,2,5,1,2,3,4,5.当采用LRU算法时,发生的缺页此次数是()

LRU:淘汰上次使用距当前最远的页:
访问页面主存是否缺页
11是   
221
3321
4432
1143
2214
5521
1152
2215
3321
4432
5543

缺页次数是10次




ClassA *pclassa= new ClassA[5];
delete pclassa;
c++语言中,类ClassA的构造函数和析构函数的执行次数分别为()


A
Class A *pclassa=newClassA[5];  new了五个对象,所以构造5次,然后Pclass指向这五个对象
deletepclassa;  析构一次,delete[]pclassa   这样就析构5次



下面程序输出是什么
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main()
{
     bool first= true ;
     int sum=0;
     int value;
     unsigned  short i=0xFFFF;
     for (;i>=0;--i)
     {
         if (first)
         {
             value=65536;
             sum+=value%3;
             first= false ;
         }
         else {
             sum+=--value%3;
             if (value<=0)
             {
                 cout<<sum<< "," <<i;
                 break ;
             }
         }
     }
     return 0;
}

正确答案: E   你的答案: D (错误)

1,65535
65535,65535
65535,65536
65535,1
65536,65535

本题知识点

参考解析添加解析

  • 32 推荐
    True只经历一次, i=65535,sum=1,value=65536,
    False第一次循环,i=65535-1,sum=1+0 =1,value=65535,
    False第二次循环,i=65535-2,sum=1+2=3,value=65534,
    False第三次循环,i=65535-3,sum=3+1=4,value=65533,
    False第四次循环,i=65535-4,sum=4+0=4,value=65532,
    False第五次循环,i=65535-5,sum=4+2=6,value=65531, ………
    补充一点:for(;i>=0;--i)由于是unsigned无符号,所以并不是i<0退出循环,是当i=0后下一个i的值从最初的0xffff从头再开始(无法表示-1),也就是说如果for循环里没有break即死循环。-1 = 1000 0000 0000 0001B = 补码:1111 1111 1111 1111 = 无符号则为0xffff,存储方式为补码形式
    【i】value:65535~0,而i: 65534~0,(还差一次循坏),所以当value=0时i=初值0xffff=65535;
    【Sum】的规律:从false第二次开始看(循环65534~0共65535次),(组1)3,4,4, (组2)6,9,9, (组3)7,10,10…三个为一组,所以65535/3=21845…0,表示21845组第二个数值,sum=21845*3+1=65536












12
java中 String str = "hello world"下列语句错误的是?

正确答案: A B C   你的答案: C D (错误)

str+='  a'
int strlen = str.length
str=100
str=str+100


A. 'a'是字符,' a'这个是空格和a,必须要用" a"才可以;
B.String有length()方法, b应为s.length(),数组的长度是 .length,而String类型的长度表示的.length(),而集合 的长度表示.size();String 的末尾可以加数字的
C.int 无法直接转成String类型
D.尾部添加字符串”100“

今日头条:

TCP建立连接的三次握手中,第二次握手发送的包会包含的标记,最正确的描述是?

正确答案: B   你的答案: B (正确)

ACK
SYN,ACK
SYN,PSH
SYN
附上tcp建立连接的三次握手过程图(第二次握手包含的标记是SYN,ACK),所以选B:






下面这个 C++ 进程运行时,描述正确的是()

 

正确答案: A   你的答案: A (正确)

保存在堆中的数据有:*b,*obj;保存在栈中的数据有:c,lhs,rhs,obj2,aa
保存在堆中的数据有:*b,*obj;保存在栈中的数据有:str,c,lhs,rhs,obj2,aa
保存在堆中的数据有:*b,*obj2;保存在栈中的数据有:c,lhs,rhs,obj,aa
保存在堆中的数据有:*b,*obj,*str;保存在栈中的数据有:c,lhs,rhs, aa


a是全局变量,放在全局区
*str是常量字符串放在文字常量区,str指针放在全局区
*b和*obj对象都是new出来的,放在堆区,指针b和obj放在栈区
c,obj2,aa是局部变量,lhs和rhs是函数参数值,都放在栈区





下面的程序中, int32-t 表示一个有符号的 32 位整数,程序的入口是 main 函数,问最终 res 的结果是多少?

 

正确答案: D   你的答案: B (错误)

–(2^31+2^30+…+2^2+2^1+2^0)
0
-1
程序会死循环
f(1,0):  
        a=2  b=-1  
        a=3  b=-2  
        ......  
        a=127 b=-126  
        a=128 b=-127  溢出-->a=-128 b=-127     char范围:-128~127         
 return a+b:-128-127实际上是1(char范围),继续循环

而原例为int_32t,临界情况 a+b:      -2^32+(-2^32+1)=1,也继续循环。

因此死循环。





x86 CPU在实模式下解释代码时看到一个地址为2330H:5041H,请问它最终在内存中要找的地址是多少?

正确答案: A   你的答案: A (正确)

28341H
5374H
52740H
7371H

A吧,我记得实模式下的算法是cs偏移4位(16进制偏移1位)+ip,也就是2330 0 +5041

CPU用两个16位的值合成一个20位的值:将一个16位的值乘以16(相当于这个16位的值保存在20位寄存器的低16位中,然后将低16位往高位移动了4位)再加上另一个16位的值。


假设二叉排序树的定义是:1、若它的左子树不为空,则左子树所有节点均小于它的根节点的值;2、若右子树不为空,则右子树所有节点的值均大于根节点的值;3、它的左右子树也分别为二叉排序树。下列哪种遍历之后得到一个递增有序数列()

正确答案: B   你的答案: C (错误)

前序遍历
中序遍历
后序遍历
广度遍历
先序遍历:根左右
中序遍历:左根右
后序遍历:左右跟






二叉树是一种树形结构,每个节点至多有两颗子树,下列一定是二叉树的是() 

正确答案: A C   你的答案: A B C (错误)

红黑树
B树
AVL树
B+树

红黑树
(Red Black Tree) 是一种自平衡二叉查找树
B树   是一种平衡的多叉树
B+ 树  是一种树数据结构,是一个n叉树
AVL树是自平衡二叉查找树





int A[2][3]={1,2,3,4,5,6}; 则A[1][0]和*(*(A+1)+1)的值分别是()

正确答案: A   你的答案: C (错误)

4 5
4 3
3 5
3 4

A
数组A一共2行3列,第0行为123,第1行为456
A[1][0]为第1行第0列数字4
*(A+1)指向数组第1行第0个元素
*(A+1)+1指向数组第1行第1个元素
再取*则为第1行第1个元素的值5
因此为4,5





序列16 14 10 8 7 9 3 2 4 1的说法下面哪一个正确() 

正确答案: A   你的答案: B (错误)

大顶堆
小顶堆
不是堆
二叉排序树

堆实际上是一棵完全二叉树,分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key[i]>=key[2i+2]称为大顶堆,满足 Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]称为小顶堆,二叉排序树需要满足左孩子<根<右孩子,本题中,首位16为根,满足大顶堆的概念

二叉排序树需要满足,左孩子<根<右孩子,而大顶堆需要满足根>左孩子且根>右孩子






输入若已经是排好序的(升序),下列排序算法最快的是() 

正确答案: A   你的答案: D (错误)

插入排序
Shell排序
合并排序
快速排序
选择A
快速排序在元素基本无序的情况下是最好的选择,在基本递增或递减中时间复杂度是O(n^2)
归并排序时间复杂度稳定在O(nlogn)
希尔排序很难说,跟选择的增量有关,一般小于O(n^2),大于O(n)
插入排序是在序列已有序的情况下最快的,时间复杂度是O(n),另外在数数据规模较小时插入排序效果也很好。
一般不选择传统的冒泡排序,如果题目中有一个选项是冒泡排序,要想一下是否隐含着改进冒泡排序的含义。




系统中的“颠簸”是由()引起的。

正确答案: B   你的答案: B (正确)

内存容量不足
缺页率高
交换信息量大
缺页率反馈模型不正确

在操作系统课上我们一般称这种现象为“抖动”,当然这里“颠簸”是一个意思,它指的就是内存中的页面与外存频繁交换(即缺页率高),而产生的现象。





8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要()人测试? 

正确答案: B   你的答案: C (错误)

2
3
4
6
本题答案为3,主要考察10进制转二进制的技巧:
1.现将实验酒编号为0~7
2.假设有三个人分别为a,b,c,a,b,c分别表示二进制的三位,品尝了一次就记为1
3.如011就表示b和c品尝了酒,然后看二进制哪些人中毒,最后还原十进制,就知道是哪瓶是毒酒了。
          十进制:  0        1        2        3        4        5        6        7
          二进制:000    001    010    011     100    101    110    111   









一种既有利于短作业又兼顾长期作业的调度方式是() 

正确答案: D   你的答案: B (错误)

先来先服务
均衡调度
最短作业优先
最高响应比优先

最高响应比优先:
优先权 = (等待时间 + 要求服务时间) / 要求服务时间
所以等待时间越高,优先权就越高





同一进程下的线程可以共享() 

正确答案: B   你的答案: B (正确)

stack
data section
register set
thread ID

线程共享的内容包括:

1.代码段(code segment)

2.数据段(data section)

3.进程打开的文件描述符、

4.信号的处理器、

5.进程的当前目录和

6.进程用户ID与进程组ID







linux下给文件start.sh设置权限为自己可读可修改可执行,组内用户为可读可执行不可修改,其余用户没有任何权限,那么设置该文件权限的命令为()

正确答案: B   你的答案: B (正确)

chmod start.sh 706
chmod start.sh 750
chmod start.sh 705
chmod start.sh 777

linux中权限有九位二进制数表示XXX YYY ZZZ,前一个XXX表示owner的权限,YYY表示group的权限(也就是同组用户的权限),ZZZ表示other的权限(非同组用户的权限)。根据本题要求,XXX=111,YYY=101,ZZZ=000,所以是750






以下哪种http状态下,浏览器会产生两次http请求?()

正确答案: C   你的答案: B (错误)

304
404
302
400
304未修改(表示客户机缓存的版本是最新的,客户机应该继续使用它。)
404找不到改页面
302暂时重定向
400代表客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误。

302重定向是暂时的重定向,搜索引擎会抓取新的内容而保存旧的网址。由于效劳器前往302代码,搜索引擎以为新的网址只是暂时的。





某学校获取到一个B类地址段,要给大家分开子网使用,鉴于现在上网设备急剧增多,管理员给每个网段进行划分的子网掩码设置为255.255.254.0,考虑每个网段需要有网关设备占用一个地址的情况下,每个网段还有多少可用的主机地址()

正确答案: A   你的答案: B (错误)

509
511
512
510
答案是A
      因为子网掩码为255.255.254.0,第三段最后一位置能用,第四段8个位置都能用,所以可用地址为2^9=512,除去全1和全0,然后
还要减去网关设备占用一个地址,所以为509





以下多线程对int型变量x的操作,哪个不需要进行同步()

正确答案: D   你的答案: A (错误)

++x
x=y
x++
x=1

ABC不是原子性操作,例如想x++,先获取x的值,自增一,然后再把值赋给x,三步,中间任何一步执行时都可能被其他线程访问或者修改。所以需要同步。





1
2
3
#define  A(x) x+x
int i=5*A(4)*A(6);
cout<<i;
以上程序输出是多少?

正确答案: A   你的答案: D (错误)

50
100
120
480

宏定义的A(x)全部替换为x+x,但注意不要加括号!
i=5*4+4*6+6=20+24+6=50
选A




以下关于PMF(概率质量函数),PDF(概率密度函数),CDF(累积分布函数)描述错误的是()

正确答案: A   你的答案: A (正确)

PDF描述的是连续型随机变量在特定取值区间的概率
CDF是PDF在特定区间上的积分
PMF描述的是离散型随机变量在特定取值点的概率
有一个分布的CDF函数H(x),则H(a)等于P(X<=a)

概率 质量函数 (probability mass function,PMF)是 离散随机变量在各特定取值上的概率。
概率 密度函数(p robability density function,PDF )是对  连续随机变量 定义的,本身不是概率,只有对连续随机变量的取值进行积分后才是概率。
累积分布函数(cumulative distribution function,CDF) 能完整描述一个 实数随机变量X的概率分布,是概率密度函数的积分。对於所有实数x ,与pdf相对。






一个全局变量tally,两个线程并发执行(代码段都是ThreadProc),问两个线程都结束后,tally取值范围为_______
1
2
3
4
5
int tally=0; //全局变量
   void ThreadProc(){
      for ( int i=1;i<=50;i++)
   tally+=1;
}

正确答案: A   你的答案: C (错误)

[50,100]
[100.100]
[1275,2550]
[2550,2550]

最小值的情况:(线程a,b交替读取tally值)
a线程对tally加1后,还没有更新tally在内存中的值,线程b读取tally值,执行加1,更新tally为1,然后a线程重新读取tally值,这样交替运行,最终为50
最大值的情况:

a线程对tally加到50后,更新tally在内存中的值为50,然后线程b读取tally值,再执行加50运算,结果为100;




下面四个类A,B,C,D,在32位机器上sizeof(A),sizeof(B),sizeof(C),sizeof(D)值分别为()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A{
};
class B{
     char ch;
     int x;
};
class C{
public :
     void Print( void ){}
};
class D
{
public :
     virtual void Print( void ){}
};

正确答案: C   你的答案: D (错误)

0,5,0,0
1,8,4,4
1,8,1,4
1,5,1,4
答案是C
类A空类型的实例虽然不包含任何信息,但是必须在内存中占一定的空间,否则无法使用这些实例,一般都是1
类B因为内存对齐所以为8,
类C里面虽然有函数,但是只需要知道函数的地址即可,而这些函数的地址只与类型相关,而
与类型的实例无关,编译器不会因为函数而在内存中多添加任何的额外信息.所以还是1
类D因为有虚函数,C++的编译器一旦发现一个类型中有虚函数,就会为该类型生成虚函数表,并在该类型的
每一个实例中添加一个指向虚函数表的指针.因为多了一个指针,所以在32位机器为4,64位机器为8




下列关于GIT的描述不恰当的一项是()

正确答案: C   你的答案: C (正确)

可以采用公钥认证进行安全管理
可以利用快照签名回溯历史版本
必须搭建Server才能提交修改
属于分布式版本控制工具
Github无论在本地还是远端都可以不用自己搭建服务器;
在本地,直接在磁盘上进行修改、版本管理;

发布在远端时,可以用github作为托管,并不是一定需要自己搭建服务器





已知下面的class层次,其中每一个class都定义有一个default constructor和一个virtual destructor;
1
2
3
4
5
class X{...};
class A{...};
class B: public A{...};
class C: public B{...};
class D: public X, public C{...};
下面()执行dynamic_cast会失败

正确答案: C   你的答案: C (正确)

A *pa=new D;X *px=dynamic_cast<X*>(pa);
D *pd=new D;A *pa=dynamic_cast<A*>(pd);
B *pb=new B;D *pd=dynamic_cast<D*>(pb);
A *pa=new C;C *pc=dynamic_cast<C*>(pa);
向上转换一定成功,向下转换不一定成功。向下转换必须存在虚函数,不然 编译错误

假如集成关系如下:
1
A <- B <- C
变量定义如下:
1
2
3
A *a =  new B;   // 本来new了个B,向上转换为A
B* b =  dynamic_cast <B*> (a);  // 从A再转换为B,因为本质是B,回到自身,所以成功
C* c =  dynamic_cast <C*> (b);  // 将本质是B的东西,转变为子类对象,所以失败。即c=0.

更灵活一点:
1
2
3
4
5
A <- B <- C <- D <- E
 
A* a =  new C;  // 本质
B* b =  dynamic_cast <B*> (a);  // 成功,因为B是C的父类
E* e =  dynamic_cast <E*> (a);  // 失败,因为E是C的子类








某一系统功能,需要一次性加载N(N在1000左右)个随机数,后续只对该集合进行遍历.最宜采用哪种结构存放?

正确答案: C   你的答案: B (错误)

Hash表
二叉树
链表
随机数,未经排序,二叉树不适合;
需要遍历,hash表不适合;
不强调数据之间的关系,图不适合;
随机数数据类型不一致,数组不适合。
综上所述,链表最适合。




将一颗多叉树存储在一个txt文件中,格式如下:
id1,parentld1,weight1
id2,parentld2,weight2
id3,parentld3,weight3
.....
其中,一行表示一个节点,id表示节点的序号,parentld表示节点对应父节点的序号,weight表示该节点的权重,
根节点的parentld是自身id.请实现一个函数,输入是一个多叉树节点的数组和长度,要求打印出每一个节点的总权重
(总权重=节点自身权重+节点对应所有子节点的权重).自定义需要的数据结构,说明时间和空间复杂度(要求时间复杂度优先,空间复杂度尽量低)






局域网的网络地址192.168.1.0/24,局域网络连接其他网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是?

正确答案: C   你的答案: C (正确)

route add default 192.168.1.0 netmask 172.168.1.1 metric 1
route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
route add -net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
route add -net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
C
route add -net [目的子网] gw [网关地址] netmask [子网掩码] metric [路由跳数]
这里添加的静态路由信息应该是从网关192.168.1.1到达目的子网172.16.1.0所需路由跳数为1跳。






在给定文件中查找与设定条件相符字符串的命令为?

正确答案: B   你的答案: D (错误)

gzip
grep
sort
find

答案:B. A选项:gzip是解压缩命令 B选项:grep命令可以查找文件内容的字符 C选项:sort是排序命令 D选项:find命令是查找对应的文件名,并不能查找文件内容






关于 java 的异常处理机制的叙述哪些正确?

正确答案: A B   你的答案: B (错误)

不论程序是否发生错误及捕捉到异常情况,都会执行finally部分
当try区段的程序发生异常时,才会执行catch区段的程序
catch部分捕捉到异常情况时,才会执行finally部分
其它选项都不正确

题目有争议,记住就行啦





对于函数中以下代码,
1
char * p= new char [100]; 
正确的是()

正确答案: D   你的答案: D (正确)

p和new出来的内存都在栈上
p在堆上,new出来的在栈上
p和new出来的内存都在堆上
p在栈上,new出来的在堆上
所有的局部变量在栈区,所以p在栈上,栈区是动态存储区,自动分配内存、自动回收;
堆区:人工分配、释放,所以new出来的在堆上;






下列选项中,降低进程优先级的合理时机是?

正确答案: B   你的答案: C (错误)

进程刚完成I/O,进入就绪列队
进程的时间片用完
进程从就绪态转为运行态
进程长期处于就绪队列中
答案是B
          进程时间片用完可以降低其优先级,完成I/O的进程应该提升其优先级,处于就绪队列等待调度的进程一般不会改变其优先级。

   





1
std::vector::iterator
没有重载下面哪个运算符

正确答案: D   你的答案: D (正确)

==
++
*
>>

迭代器可以看成一个指针,指针没有移位运算

对于std::vector::iterator
1)++、--用于双向迭代,迭代器最基本的功能
2)*用于复引迭代器,用于引用迭代器对应的元素,也是基本操作
3)==用于判断两个迭代器是否相等,迭代的时候需要判断迭代器是否到某个位置



下列关键字序列中,()是堆。

正确答案: B   你的答案: B (正确)

16,72,31,23,94,53
16,23,53,31,94,72
94,23,31,72,16,53
16,53,23,94,31,72

把这个序列看成数组型的二叉树,若根节点是i,左子树是2*i,右子树是2*i+1。

堆分成最大堆和最小堆

1、 最大堆中所有父节点都比左子树、右子树大

2、 最小堆中所有父节点都比左子树、右子树小。





下面程序的运行结果是:
1
2
3
4
5
6
7
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
     printf ( "%d\n" ,NUM);
}

正确答案: C   你的答案: D (错误)

4
9
8
6

宏定义只是简单的文本替换,(2+1+1)*2+1/2=8





C++中,能作为函数重载判断依据的是?

正确答案: B C D   你的答案: A C (错误)

返回类型
const
参数个数
参数类型

为什么返回值不能作为重载依据? 编译器在编译时,不会去判断函数的返回类型,也就是说,你的返回值虽然不同,函数只有调用后,编译器才会去验证类型,所以返回值不能做为重载依据。

c,d不用说 对b,重载[]运算符时,有没有const区别是:有const只读。没有const读写都可以



建立一条TCP连接需要()个步骤,关闭一个TCP连接需要()个步骤。

正确答案: B   你的答案: D (错误)

4,4
3,4
3,3
4,3

tcp建立连接需要经过三次握手的过程,tcp释放连接需要经历四次挥手的过程





C++ 中,关于 new 运算符的 错误 的描述是?

正确答案: A B   你的答案: A C D (错误)

使用new运算符创建的对象使用完成后会自动销毁并回收
使用运算符new创建对象数组时必须定义初始值
使用运算符new创建对象时,会调用类的构造函数
运算符new可以用来动态创建对象和对象数组
AB
new创建的对象需要使用delete进行释放
new创建对象不一定需要定义初始值
new会调用构造函数
new可以用来创建对象和对象数组,且调用构造函数



以下开源软件中经常被用作队列的是哪个:

正确答案: A B   你的答案: A B (正确)

kafka
Redis
MongoDB
Memcached

Redis提供了两种方式来作消息队列





从以下四个选项中选出不同的一个?

正确答案: D   你的答案: C (错误)

CVS
SVN
GIT
SSH
CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。 
SVN(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。 
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 

SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装!




从以下四个选项选出不同的一个。

正确答案: A   你的答案: A (正确)

LVS
Nginx
Lighttpd
Apache
答案:a
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。 

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。





从四个选项选出不同的一个。

正确答案: D   你的答案: C (错误)

JQuery
Node.js
Prototype
CommonJS
答案:d
Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器。
Node.js是一套用来编写高性能网络服务器的JavaScript工具包。 
在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。
prototype表示该函数的原型,也表示一个类的成员的集合。prototype.js是由Sam Stephenson写的一个javascript类库。 

CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。



从四个选项选出不同的一个。

正确答案: C   你的答案: A (错误)

XML
JSon
Base64
YAML





下面有关虚函数和非虚函数的区别说法错误的是?

正确答案: C   你的答案: D (错误)

子类的指针访问虚函数访问的是子类的方法
子类的指针访问非虚函数访问的是子类的方法
父类的指针访问虚函数访问的是父类的方法
父类的指针访问非虚函数访问的是父类的方法
答案 C
应该是: 父类的指针访问虚函数访问的是子类的方法






说明一下++p 与 p++ 的区别。

正确答案: B   你的答案: D (错误)

没有区别
++p更好一些
p++更好一些
和编译器有关
可以看出p++需要3步,++p需要2步,而且修改p的值是不一样的,看出++p的效率比p++的高。

故选B





下面有关css选择器的说法错误的是?

正确答案: C   你的答案: B (错误)

.intro --- 选择 class="intro" 的所有元素。
#firstname --- 选择 id="firstname" 的元素。
div>p --- 选择所有 <div> 元素和所有 <p> 元素
p --- 选择所有 <p> 元素

C是错误的 div>p 选择的是所有父元素为div的p元素,如果一个p元素的父元素不是div,那么这个p元素是不会被选择的





ArrayList和LinkList的描述,下面说法错误的是?

正确答案: D   你的答案: C (错误)

LinkedeList和ArrayList都实现了List接口
ArrayList是可改变大小的数组,而LinkedList是双向链接串列
LinkedList不支持高效的随机元素访问
在LinkedList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在ArrayList的中间插入或删除一个元素的开销是固定的
答案:D
这个说法说反了
Arraylist的内存结构是数组,当超出数组大小时创建一个新的数组,吧原数组中元素拷贝过去。其本质是顺序存储的线性表,插入和删除操作会引发后续元素移动,效率低,但是随机访问效率高
LinkedList的内存结构是用双向链表存储的,链式存储结构插入和删除效率高,不需要移动。但是随机访问效率低,需要从头开始向后依次访问





void swap( int &a, int &b)
{
      int temp;
      temp=a;
      a=b;
      b=temp;
      cout<<a<<’ ‘<<b<<’\n’;
}
 
int main(){
     
     int x= 1 ;
     int y= 2 ;
     swap(x,y);
     cout<<x<<’ ‘<<y<<’\n’;
     return 0 ;
}
上面程序输出的是?

正确答案: B   你的答案: A (错误)

2 1 1 2
2 1 2 1
1 2 2 1
1 2 1 2
答案:选B
调用函数swap(x, y);传给被调用函数void swap(int &a, int &b )的是x、y的引用,所以在被调用函数里面交换相应的也会交换实参,所以都是输出2 1








class Base {
     public :
     Base( int j): i(j)  {}
     virtual ~Base() {}
     void func1() {
         i *= 10;
         func2();
     }
     int getValue() {
         return   i;
     }
     protected :
     virtual void func2() {
         i++;
     }
     protected :
     int i;
};
class Child:  public Base {
     public :
     Child( int j): Base(j) {}
     void func1() {
         i *= 100;
         func2();
     }
     protected :
     void func2() {
         i += 2;
     }
};
int main() {
     Base * pb =  new Child(1);
     pb->func1();
     cout << pb->getValue() << endl;  delete pb; }

正确答案: C   你的答案: D (错误)

11
101
12
102

Base * pb = new Child(1), 首先创建子类对象,初始化为1;
func1()不是虚函数,所以pb->func1()执行的是基类的func1函数,i= 10,然后调用func2()函数;
这里的func2是虚函数,要往下派生类寻找,找到后执行派生类中的func2(),此时,i = 12;
最后执行pb->getValue(),结果为12
故选C





写出一下程序的输出
1
2
3
4
5
6
7
8
int main( void )
{
  char num;
  for (num =  0 ; num <  255 ; )
  num += num;
  printf( "%d\n" ,num);
  return 0 ;
}

正确答案: D   你的答案: B (错误)

254
255
256
死循环







写出一下程序的输出
1
2
3
4
5
6
7
8
int main( void )
{
  char num;
  for (num =  0 ; num <  255 ; )
  num += num;
  printf( "%d\n" ,num);
  return 0 ;
}

正确答案: D   你的答案: B (错误)

254
255
256
死循环

这个题目的考察初衷不是这样让num一直为0,应该是char类型的范围:下面这段程序任然是死循环。signed char 用于到不了255;除非明确给出unsigned char。
intmain(void)
{
 charnum;
 for(num = 1; num < 255; )
 num += num;
 printf("%d\n",num);
 return0;
}





下面名词解释错误的是: 

正确答案: C   你的答案: A (错误)

SQL结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
TCP 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议
QoS 服务质量,是网络的一种安全机制。QoS是局域网的一个重要的需求。
STL 标准模板库

C,QoS应用于广域网,不是局域网。




关于测试驱动开发,描述错误的是

正确答案: C   你的答案: C (正确)

测试驱动开发式是一种敏捷开发方法
TDD需求开发人员学习测试相关知识
测试驱动开发不适合使用CMM/CMMI方法
测试驱动开发可以和结对编程结合使用




C++类体系中,不能被派生类继承的有?

正确答案: A B D   你的答案: B D (错误)

构造函数
静态成员函数
非静态成员函数
赋值操作函数
答案选A。
编译器总是根据类型来调用类成员函数。但是一个派生类的指针可以安全地转化为一个基类的指针。这样删除一个基类的指针的时候,C++不管这个指针指向一个基类对象还是一个派生类的对象,调用的都是基类的析构函数而不是派生类的。如果你依赖于派生类的析构函数的代码来释放资源,而没有重载析构函数,那么会有资源泄漏。所以建议的方式是将析构函数声明为虚函数。
也就是delete a的时候,也会执行派生类的析构函数。
一个函数一旦声明为虚函数,那么不管你是否加上virtual 修饰符,它在所有派生类中都成为虚函数。但是由于理解明确起见,建议的方式还是加上virtual 修饰符。

构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。

如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。

构造原则如下:

    1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。

    2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。

    3. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数,则会调用父类的默认无参构造函数。

    4. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类自己提供了无参构造函数,则会调用父类自己的无参构造函数。

    5. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类只定义了自己的有参构造函数,则会出错(如果父类只有有参数的构造方法,则子类必须显示调用此带参构造方法)。

    6. 如果子类调用父类带参数的构造方法,需要用初始化父类成员对象的方式,比如:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
class animal
{
public :
     animal( int height,  int weight)
     {
         cout<< "animal construct" <<endl;
     }
};
class fish: public animal
{
public :
     int a;
     fish():animal( 400 , 300 ), a( 1 )
     {
         cout<< "fish construct" <<endl;
     }
};
void main()
{
     fish fh;
}





从运行层面上来看,从四个选项选出不同的一个。

正确答案: B   你的答案: C (错误)

JAVA
Python
objectC
C#




四个选项选出不同的一个。

正确答案: D   你的答案: A (错误)

Eclipse
VS2012
Aptana
Emacs




从四个选项选出不同的一个。

正确答案: B   你的答案: B (正确)

Mysql
MongoDB
DB2
PostgreSQL



从四个选项选出不同的一个。

正确答案: A   你的答案: D (错误)

fiddler
firebug
httpwatch
IETester



从四个选项选出不同的一个。

正确答案: C   你的答案: C (正确)

<nav>
<footer>
<meta>
<canvas>





a和b两个人每天都会在7点-8点之间到同一个车站乘坐公交车,a坐101路公交车,每5分钟一班【7:00,7:05……】,b坐102路公交车,每10分钟一班【7:03,7:13…】,问a和b碰面的概率是多少?( )

正确答案: C   你的答案: A (错误)

1/8
41/400
143/1200
199/1800
431/3600






模块A给部署在多台机器上的模块B采用轮询的方式发起查询请求,请问这样做优势是什么? 
1.减少请求模块B的频率 2.减少系统的故障率 3.减少模块A所在机器的网络IO 4.减少模块A等待结果的时间

正确答案: C   你的答案: B (错误)

(1、2、3、4)
(2、3)
(2、4)
(3、4)
C.(2、4)
1.模块A对模块B请求的频率取决于模块A的业务,轮询B并不能降低频率;2某一台模块B不能工作的情况下整个系统仍旧正常运行,减少故障率;3,同1,并不能降低;4,有效提高模块B的并发,减少A的等待时间





下面span标签中Hello World字体的颜色是:()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<style type= "text/css" >
span {
     color: green;
}
.red {
     color: red;
}
#blue {
     color: blue;
}
</style>
 
<span id= "blue" class = "red" style= "color:black;" >Hello World</span>
 
    

正确答案: D   你的答案: D (正确)

green
red
blue
black

D
因为最后是有“
1
style= "color:black;"

”所决定的。

权重 :内联 权重1000 , ID 选择器 权重:100, 类 伪类 属性选择器 权重:10 ,类型选择器 权重:1 除!important ,内联权重最大!





以下程序的打印结果是()
1.#include<iostream>
2. using namespace std;
3.
4. void swap_int( int a ,  int b)
5.{
6.     int temp = a;
7.    a = b;
8.    b = temp;
9.}
10.
11. void swap_str( char *a ,  char *b)
12.{
13.     char *temp = a;
14.    a = b;
15.    b = temp;
16.}
17.
18. int main( void )
19.{
20.     int a = 10;
21.     int b = 5;
22.     char *str_a =  "hello world" ;
23.     char *str_b =  "world hello" ;
24.    swap_int(a , b);.
25.    swap_str(str_a , str_b);
26.     printf ( "%d %d %s %s\n" ,a,b,str_a,str_b);
27.
28.     return 0;
29.}

正确答案: A   你的答案: D (错误)

10 5 hello world world hello
10 5 world hello hello world
5 10 hello world world hello
5 10 world hello hello world

wap_str(&str_a,&str_b),把指针的地址传进去,把该地址里的内容(即指针,也就是两个字符串的地址)互相交换才行。题目上只是把字符串的地址传进去了,在函数中形成了局部变量而已。



linux下查看磁盘使用情况的命令是?

正确答案: B   你的答案: D (错误)

dd
df
top
netstat





linux下查看磁盘挂载状态的命令式?

正确答案: B   你的答案: A (错误)

rpm
mount
netstat
df





某网站的数据库有一个成绩表myscore,希望找出成绩表中平均得分小于90的所有试卷。

正确答案: B   你的答案: D (错误)

select paper_id from myscore where sum(score) < 90 group by paper_id
select paper_id from myscore group by paper_id having avg(score) <  90
select paper_id from myscore where avg(score) <  90
select paper_id from myscore where avg(score) <  90 group by paper_id
WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。 相反,HAVING 子句总是包含聚集函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值