c语言后端面试题,网易面试题(2018C++工程师)

这篇博客讨论了计算机网络中的子网划分问题,包括子网位数、子网数量和主机数目的计算。同时,文章涵盖了编程中的算法应用,如二分查找不适合的数据结构、哈夫曼树的特点、内存管理和进程控制。此外,还涉及了C++中的指针使用、类成员函数的重载和覆盖、服务监控的关键指标以及面向对象编程的基本概念。最后,文章提供了一个关于生活成本和独立生活天数的计算问题,展示了如何在C++中解决此类问题。
摘要由CSDN通过智能技术生成

1如果C类子网的掩码为255.255.255.240,则包含的子网位数、子网数目、每个子网中的主机数目正确的是( )

正确答案: C

A、2 2 2

B、3 6 30

C、4 14 14

D、5 30 6

答案:

首先C类地址掩码为255.255.255.000 。可知子网号为240(1111 0000) 。所以子网位数为4(前四位可变),对于分类的IPv4地址进行子网划分时,子网号不能使用全1和全0,所以子网数为16-2=14。又因为主机号全0表该网络地址,全1表广播地址,所以去掉这两种,子网中的主机数为16-2=14 。

2二分查找算法不能在下面哪个数据结构中使用?()

正确答案: A

A、sorted linked list

B、sorted binary trees

C、sorted linear array

D、sorted pointer array

答案:

由于链表不能随机访问,故不适与二分查找

3某指令流水线由 5 段组成,各段所需要的时间分别是:t、3t、2t、t 和 2t 。问如果连续执行 10 条指令,则吞吐率是多少 ?

正确答案: D

A、0.1428/t

B、0.2041/t

C、0.2857/t

D、0.3333/t

答案:

弄懂两个概念就好做了:流水线时间和吞吐率:

流水线线时间计算有个公式:每一条指令所需时间之和+(指令条数-1)*时间最长的指令的一段 ——>(1+3+2+1+2)t + (10-1)*3t

吞吐率也有个公式:指令条数÷流水线时间 =10÷36t

4以下意图哪个是用来描述 OBSERVER(观察者)?( )

正确答案: C

A、使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系

B、将抽象部分与它的实现部分分离,使它们都可以独立地变化

C、定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新

D、用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

答案:

A:用来描述职责链

B:用来描述桥接

C:用来描述观察者

D:用来描述原型

5下列关于哈夫曼树的说法中,错误的是________。

正确答案: A

A、哈夫曼树是一棵完全二叉树

B、哈夫曼树中没有度为1的结点

C、哈夫曼树具有最小的带权路径长度

D、同一组权值构造的哈夫曼树不唯一

答案:

哈夫曼树是利用权值来构建的,和节点大小什么没有关系

6可以通过以下哪种方式查看系统内存使用情况

正确答案: A

A、free -g

B、top

C、ps

D、df

答案:

A、free:可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

B、top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

C、ps:用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

D、df:用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

7将当前命令sh test.sh任务在后台执行,下列最优雅的的做法是

正确答案: C

A、sh test.sh &

B、nohup sh test.sh

C、nohup sh test.sh &

D、nohup sh test.sh &&

答案:

nohup :表示不挂起,在你退出账户之后,进程继续在后台运行,一般形式为: nohup command &

8shell脚本中,需求如下:如果 ls testfile 执行成功输出True,否则输出Fail,下列哪项正确

正确答案: D

A、ls testfile; [[ $# -eq 0 ]] && echo True || echo Fail

B、ls testfile; [[ $* -eq 0 ]] && echo True || echo Fail

C、ls testfile; [[ $0 -eq 0 ]] && echo True || echo Fail

D、ls testfile; [[ $? -eq 0 ]] && echo True || echo Fail

答案:

$?:包含前一个命令的退出状态,正常在返回0,繁殖非0

9有时候因为磁盘空间快满了,我们需要删除一些log文件,但是忘记停止程序了,日志删除后,发现磁盘空间并没有释放,这时候我们通常使用以下哪种方式查找已删除文件的进程占用

A、ps

B、lsof

C、top

D、df

10以下关于ACID说法正确的是?

正确答案: A

A表示原子性,要么全部执行,要么全部不执行,不会存在部分执行

C表示完整性,是数据操作前后的约束

I表示读写操作的隔离性

D表示持久性,一旦事务提交,则其所做的修改不会发生变化

答案:

原子性(Atomicity)

事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。

一致性(Consistency)

数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。

隔离性(Isolation)

一个事务所做的修改在最终提交以前,对其它事务是不可见的。

持久性(Durability)

一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。可以通过数据库备份和恢复来实现,在系统发生奔溃时,使用备份的数据库进行数据恢复。

11下面指针所指向的内存,哪一块是可以修改的()

正确答案: C

A、const int* a

B、int const* b

C、int* const c

D、const int* const d

答案:

const int */a ,int const* /b :指针所指向的内容是常量不可变;(const在斜线左边)

int * /const c: 指针本身是常量不可变;(const在斜线右边)

const int* const d:两者都不可变

const int* a 和 int const* b都是底层const,代表指针所指的变量是常量

int* const c 是顶层const,代表指针本身是常量,但是不针对所指对象,所以可以改变

const int* const d 是指向常量的常量指针,不管是指针本身,还是所指内存中的内容,都不可以改变

12以下C语言和C++语言比较中错误的是()

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

A、C语言绝大部分语法适用于C++

B、C语言和C++的struct意义和用法一致

C、C语言不能使用继承技术,但C++可以

D、C++是面向对象的语言,C语言是面向过程的语言

13关于类成员函数的重载、覆盖和隐藏,下面说法错误的是()

正确答案: B

A、重载函数必须要在同一个类中

B、派生类函数覆盖基类函数,基类函数最好不要有virtual关键字

C、如果派生类的函数与基类的函数名相同,通过派生类的实例也只能调用到派生类的函数。

D、重载函数不能使用virtual关键字修饰

14下面代码在32位计算机中输出的结果是( )

struct TEST_TYPE

{

int a;

int b;

};

int testSize(struct TEST_TYPE val[10])

{

return sizeof(val);

}

正确答案: A

A、4

B、8

C、10

D、80

答案:

数组名作为形参传入函数时,退化为指针。32位系统中,指针占4字节(32/8)

15以下属于服务监控最核心关注点的是:

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

A、错误异常

B、响应延迟

C、吞吐量

D、都是

16下列代码的时间复杂度是多少()(^符号是幂的意思)

int func(int N)

{

int cnt = 0;

for(int i=1;i<=N;i++)

for(int j=1;j<=N;j+=i)

cnt+=(i+j);

return cnt;

}

正确答案: B

A、O(N)

B、O(NlogN)

C、O(N^1.5)

D、O(N^2)

答案:

里面的for循环

N/1+N/2+N/3+…N/N

调和级数 1+1/2+1/3+1/4+…+1/n= ln(n+1)+r(r为常量)

所以为NlogN

17假如N是由一棵有序树T转换而来的二叉树,那么T中的节点的后序遍历顺序是N节点的()

正确答案: B

A、先序遍历

B、中序遍历

C、后序遍历

D、层次遍历

答案:

将树转换为二叉树后,树的先根序列等于对应二叉树的先序序列,树的后根序列等于对应二叉树的中序序列。

18小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。

第一种情况:如果小易带的水果足够多,钱用了,水果还没吃完,那钱只有付房租就行,不用买水果;

则对应代码为:

if(d / x <= f)

cout << d / x << endl;

第二种情况:如果小易带的水果不多,水果吃完了,钱还有剩余,则最后钱还得付房租和买水果,设最多能生活D天,则有以下方程:

Dx + (D-f)p<=d

化简得:

D <= (d + f*p) / (x + p)

以下是完整代码:

#include

using namespace std;

int main()

{

long long x, f, d, p;

cin >> x >> f >> d >> p;

if(d / x <= f)

cout << d / x << endl;

else

cout << (d + f*p) / (x + p) << endl;

return 0;

}

标签:面试题,子网,const,正确,int,C++,sh,2018,答案

来源: https://blog.csdn.net/ShawnWang1994/article/details/98100446

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值