笔试错题整理

来源:2019爱奇艺秋招C++笔试题(B)

internet骨干网中的路由器通过BGP协议传输数据,BGP协议使用传输层的协议与端口有(      )

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

A.udp协议
B.tcp协议
C.端口179
D.端口169

解析:RIP协议、OSPF协议,它们是内部网关协议,本文介绍外部网关协议,即AS之间使用协议即BGP协议。

BGP属于网络层协议,在BGP中,路由器对使用179端口的半永久TCP连接来交换选路信息

下面程序输出结果为()

#include <stdio.h>
 #include <stdlib.h>
 class A
 {
 };
 int main()
 {
 printf("%d
",sizeof(class A));
 return 0;
 }
A.0
B.1
C.4
D.8

 答案:B

解析:理论上来说内存数应该为0,但是如果两个对象建立可能共享首地址,为了区分开来,让无成员的类也有了1;

下列程序的运行结果是1*2  3*4,请将横线处缺失程序补充完整()

class Test{
 public:
 Test(int a,int b) {x=a;y=b;}
 ~Test() {}
 void print(){cout<<x<<"*"<<y<<"  ";}
 private:
 int x;
 int y;
 };
 int main(){
 Test t[2]={                  };
 for(int i=0;i<2;i++)
 t[i].print();
 return 0;}
A.1,2,3,4
B.(1,2),(3,4)
C.Test(1,2),Test(3,4)
D.1234
答案:C
解析:如果B选项改成 {1,2},{3,4} 那么也是对的
 

下列程序的运行结果是B0,请将横线处缺失程序补充完整()

class B0
 { public:
 virtual void display(){cout<<"B0"<<endl;}
 };
 class B1: public B0
 {
 public:
 void display(){cout<<"B1"<<endl;}
 };
 class D1: public B1
 {
 public:
 void display(){cout<<"D1"<<endl;}
 };
 void fun(         )
 { ptr.display(); }
 int main()
 {
 D1 d1;
 fun(d1);
 }
A.B0 &ptr
B.D1 &ptr
C.D1 ptr
D.B0 ptr

答案:D

解析:因为这里用到了虚函数,所以子类实现的话,就是对该虚函数实现了重写,这个函数实质上还是属于基类,如果使用A的话,那么输出的肯定是D1,所以我们只能让他强转

来源:网易2020校招笔试-c++开发工程师(正式批)

以下哪个可能会产生编译错误?

#include<iostream>
class Foo
{
public:
    Foo(int v) :m_value(v) { } //1
    void print()
    {
        std::cout << m_value;
    }
    ~Foo() {}
     
private:
    Foo() { m_value = 0; }//2
    int m_value;
};
int main()
{
    Foo a;//3
    a.print();
    Foo b(1);//4
    b.print();
}
A.1
B.2
C.3
D.4
答案:C
解析:因为无参构造函数定义的是私有类型,是不能在外面使用的,所以第3句无法执行

有关c++语言的引用,以下选项正确的是

A.引用不需要初始化;
B.引用初始化后,可以重新绑定到另外一个对象;
C.引用本身不是一个对象,所以不能定义引用的引用;
D.引用本身不是一个对象,但是可以定义指向引用的指针;

答案:C

解析:实质是因为引用本身不是一个对象,只是一个别名,所以我们无法再定义其他东西指向它,所以C才是对的

以下C++代码输出几个"1"?

#include<iostream> 
using namespace std;
class TestClass {
private:
    int number;
public:
    TestClass(int n)
    {
        number = n;
    }
    TestClass(const TestClass& rhs)
    {
        number = rhs.number;
        std::cout << "1" << std::endl;
    }
    TestClass operator=(const TestClass& rhs) {
        number = rhs.number;
        return *this;
    }
};
int main()
{
    TestClass a(1),b(2),c(3);
    a = b = c;
    return 0;
}
A.0
B.1
C.2
D.3
E.4

答案:C
解析:这题很明显是考拷贝构造函数和重载赋值运算符,拷贝构造函数一般是在用对象初始化对象,函数传参,函数返回值几个方面,
这里只有重载了赋值运算符,有返回值,返回两次,所以调用了两次拷贝构造函数

来源:哔哩哔哩2019秋招技术岗

下面哪些项是TCP具有的能力?()

A.有连接
B.数据可靠传输
C.数据按序到达
D.端到端流量控制
答案:ABD
解析:数据只是按序发送给,但是不一定会按序到达,有可能中间的包在路上挂了

以下说法正确的是:()

A.非静态方法的使用效率比静态方法的效率高。
B.非静态方法不存在线程安全的问题。
C.非静态方法可以直接通过类名.方法名的方法来调用。
D.非静态方法中不可调用静态方法 。

答案:B
解析:因为不同线程共享的只是全局区和堆区,动态变量作用域只在自己线程内,所以安全的很

HTTP协议中的禁止访问(Forbidden)的状态码是

参考答案
(1) 403

解析:

常见HTTP状态码 
200          ok  服务器成功处理请求
301/302  重定向  请求的URL已经转移
304        未修改   客户缓存的资源是最新的 客户端使用缓存内容
403        Forbidden   禁止。服务器拒绝请求
404       NotFound      未找到资源
405   Method Not Allowed  不允许使用的方法


在SQL查询时,如果去掉查询结果中的重复组,

参考答案
(1) distinct

来源: 京东2015校园招聘技术类笔试题

关于HTTP协议的说法,以下哪些说法是不正确的()?

有状态,前后请求有关联关系
FTP也可以使用HTTP协议
HTTP响应包括数字状态码,200代表此次请求有正确返回
HTTP和TCP,UDP在网络分层里是同一层次的协议

答案   A B  D

解析:HTTP是无状态的协议 ,FTP和HTTP是不同的协议,HTTP的底层其实是用FTP实现的,HTTP有数字状态码,

常见的有200正确   301 资源(网页)永久转移到其他URL  404 网页不存在   500 内部服务器错误 

HTTP 是应用层    TCP UDP是传输层

如果将固定块大小的文件系统中的块大小设置大一些,会造成()。

更好的磁盘吞吐量和更差的磁盘空间利用率
更好的磁盘吞吐量和更好的磁盘空间利用率
更差的磁盘吞吐量和更好的磁盘空间利用率
更差的磁盘吞吐量和更差的磁盘空间利用率

答案:A

解析:磁盘吞吐量:吞取内存块的次数

磁盘空间利用率:对于需要的内存,让我们浪费的内存尽量少

因为内存中是按块存储的,如果我们提高块的大小,我们就可以尽量减少吞吐次数达到更好的吞吐量,但是我们块更大,所以我们可能会更容易浪费空间

 

在一个世世代代都重男轻女的村庄里,村长决定颁布一条法律,村子里没有生育出儿子的夫妻可以一直生育直到生出儿子为止,假设现在村子上的男女比例是1:1,

这条法律颁布之后的若干年后村子的男女比例将会()

男的多
女的多
一样多
不能确定

答案:C

解析:这其实是一个条件概率问题

"一直生育直到生出儿子为止":
(1) 说明每家生了男孩后便不再生了
(2) 每家都只有一个男孩
那么我们可以先求出每家孩子个数的期望设为X
X       P(概率)
1        0.5 //第一次就生出了男孩的概率是0.5
2        0.5^2
...
E(X) = 1*0.5+ 2*0.5^2+...= 1/0.5=2
每家孩子个数的期望是2,而且都有且只有1个男孩,那么女孩的个数也是1
所以男孩和女孩个数相等
来源:京东2019校招笔试C++开发工程师笔试题
如何在多线程中避免发生死锁?
  • 允许进程同时访问某些资源。
  • 允许进程强行从占有者那里夺取某些资源。
  • 进程在运行前一次性地向系统申请它所需要的全部资源。
  • 把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路。

答案:ABCD

解析:死锁发生的四个条件

请求与保持条件: 如果因为申请资源而堵塞,也不会释放当前已有的资源

互斥条件:   同一时间只能有一个访问

不剥夺条件:一个进程如果没有完成,那么他已有的资源不能被剥夺

循环等待条件:  进程之间产生了环  如  1要2,2要3 ,3要4,4要1,这样就会一起在等待

避免死锁:

1.破坏死锁的四个必要条件
2.加锁顺序一致
3.避免锁未释放的场景
4.资源一次性分配
 
 
 
在C++中,引用和指针的区别是()
  • 引用总是指向一个对象,指针可能不指向对象
  • 引用和指针都可以被重新赋值
  • 引用不能用const修饰,而指针可以
  • 引用创建时必须初始化,而指针则可以在任何时候被初始化

 答案: ACD

解析:引用创建必须初始化,后面代表都只是一个别名,不能更换,指针可以在任意的时候赋值修改,引用不能被const修饰,因为如果修饰的话就变成了常量,没有意义,所以编译器是不允许编译通过的

关于C++中的友元函数说法正确的是()
  • 友元函数需要通过对象或指针调用
  • 友元函数是不能被继承的
  • 友元函数没有this指针
  • 友元函数破环了继承性机制

答案:BC

解析:友元函数只是当前的那个类可以使用,友元函数不属于类的内部函数所以不能用this指针,友元函数破坏的是类的封装性,友元函数实际意义来说也就是普通的函数

原文地址:https://www.cnblogs.com/Lis-/p/12186295.html