1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 哔哩哔哩秋招技术岗(前端 运维 后端 移动端) 第二套笔试题

哔哩哔哩秋招技术岗(前端 运维 后端 移动端) 第二套笔试题

时间:2019-03-16 21:45:03

相关推荐

哔哩哔哩秋招技术岗(前端 运维 后端 移动端)  第二套笔试题

1. 有4种颜色的球,白的有13个,绿的有11个,黑的有18个,红的有25个,至少取出多少个球,才能保证有15个颜色一样(A)

A. 52

B. 53

C. 54

D. 55

解析:

理解成至少取出多少个球后,下一次取球能保证有15个颜色一样的话 答案为A

理解成至少取出多少个球后,已经取到的球中保证有15个颜色一样的话 答案为B

白球13 + 绿球11 + 黑球14 + 红球14 = 52

2. DNS是用来做什么的?(B)

A. 计算机网络相互连接进行通信而设计的协议

B. 万维网上作为域名和IP地址相互映射的一个分布式数据库

C. 完成内容分发功能

D. 网络防火墙

解析:

域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。

3. 下列程序输出结果是:(A)

#include <stdio.h>#define N 20void fun (int a[N],int n,int m) {int i,j; for (i=m;i>n;i--) a[i+1]=a[i];}int main() {int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++) {printf("%d",a[i]); } return 0;}

A. 12344

B. 23244

C. 24256

D. 21344

解析:

函数将 a[2] 之后的所有值后移一个偏移量

得到的a的值为 1 2 3 4 4 5 6 7 8 9 10

4. 接收TCP为了表明已收到源节点的SYN数据包,向源节点发送以下哪种类型的数据包?(C)

A. SYN-ACK

B. SYN-2

C. ACK

D. RESYNC

解析:

第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

由上面可以得知题目要求是说表明已收到源节点的SYN数据包,即向源节点发送确认包ack(x+1)

TCP的三次握手和四次挥手:

参考链接:/Andya/p/7272462.html

5. 以下哪个功能比较适合使用UDP协议?(A)

A. 数据多播

B. 可靠连接

C. 流量控制

D. 拥塞控制

解析:

TCP和UDP区别: /zhang6223284/article/details/81414149#26__155

6. linux中哪个命令可以将普通用户转换成超级用户?(D)

A. super

B. passwd

C. tar

D. su

解析:

passwd 更改使用者密码

tar 解压压缩包

linux常用命令大全:/ytkah/articles/linuxcommand.html

7. 下列依次为合法的二进制、八进制和十六进制数的选项是?(D)

A. 12,77,10

B. 12,80,10

C. 11,78,19

D. 11,77,19

解析:

N进制的数不存在N

8. 某一基类有构造函数A(),析构函数~A(),其派生类B的构造函数析构函数分别为B(),~B(),程序使用B的对象b时,下列说法正确的是 (B)

A. 开始时,先调用A(),再调用B(),结束时,先调用~A(),再调用~B()

B. 开始时,先调用A(),再调用B(),结束时,先调用~B(),再调用~A()

C. 开始时,先调用B(),再调用A(),结束时,先调用~A(),再调用~B()

D. 开始时,先调用B(),再调用A(),结束时,先调用~B(),再调用~A()

解析:

构造和析构相反进行,可以想象成构造从内到外构造(父类到子类),析构从外到内拆除(子类到父类)。

9. 面向对象方法的多态性是指(C)

A. 一个类可以派生出多个特殊类

B. 一个对象在不同的运行环境中可以有不同的变体

C. 针对一消息,不同的对象可以以适合自身的方式加以响应

D. 一个对象可以是由多个其他对象组合而成的

解析:

多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。 动态绑定,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 作用消除类型之间的耦合关系。

10. java中,静态变量static在不同线程的不同实例中地址是否一样?他们储存在什么区域?(C)

A. 地址一样,在堆栈区。

B. 地址不一样,在堆栈区。

C. 地址一样,在全局区。

D. 地址不一样,在全局区。

解析:

类信息、常量、静态变量等数据储存在方法区,只会在类加载的时候储存一次,地址一样。方法区又称作为Non-Heap(非堆) 静态变量是线程共享的

11. 一个无序 double 型数组(可以修改内容),长度 n,找出前 k 个最小值的算法复杂度最低的是:(C)

A. O(nLog n)

B. O(nLog k)

C. O(n)

D. O(log n)

解析:

当k=1,即找出数组的最小值,必须遍历数组所有元素,O(n)

12. 让12345依次入栈,过程中可以随时弹出栈顶元素并输出,则不可能的输出序列是:(B)

A. 12345

B. 43512

C. 54321

D. 45321

解析:

栈 先进后出 可以进行进出栈模拟

13. 已知二叉树Node定义如下, 现在需要设计一个方法交换左子树和右子树, 下列方法中, 可以实现交换的是? (D)

class Node {public:Node* left;Node* right;char content;Node(char content);private:Node(const Node&);Node& operator=(const Node& node);};

A.

void swap(Node root) {

Node* temp = root.left;

root.left = root.right;

root.right = temp;

}

B.

void swap(Node& left, Node& right){

Node temp = left;

left = right;

right = temp;

}

C.

void

swap(Node* left, Node* right) {

Node* temp = left;

left = right;

right = temp;

}

D.void swap(Node*& left, Node*&

right) {

Node* temp = left;

left = right;

right = temp;

}

解析:

Node *left,Node *right都是一个指针类型,想要修改指针类型的数值,必须用到二级指针

14. 阿凡提骑驴过桥,他共有甲、乙、丙、丁 4头驴,骑甲驴过桥要20分钟,乙驴过河要30分钟,丙驴过河要40分钟,丁驴最磨叽过河要50分钟。每次只能赶2头驴过桥,请问要把 4头驴都赶过桥去,最少要多少分钟? (D)

A. 190

B. 170

C. 180

D. 160

解析:

赶驴时的耗时由最慢的那头驴决定

第一次过去 甲驴20 + 丁驴50 耗时50分钟

第一次回来 甲驴20 耗时20分钟

第二次过去 甲驴20 + 丙驴40 耗时40分钟

第二次回来 甲驴20 耗时20分钟

第三次过去 甲驴20 + 乙驴30 耗时30分钟

总耗时 50 + 20 + 40 + 20 + 30 = 160分钟

15. HTTP定义了与服务器交互的不同方法,最基本的方法有4种 (A)

A. GET,POST, PUT, DELETE

B. GET, POST, PUSH, PULL

C. GET, POST, UPDATE, REMOVE

D. GET,POST, UPLOAD, DOWNLOAD

解析:

GET -> 查询

POST -> 增加

PUT -> 修改

DELETE -> 删除

16. 在24×24的网格中用点描出一个汉字,存储1024个汉字需要多少字节?(B)

A. 64KB

B. 72KB

C. 96KB

D. 128KB

解析:

点阵就是一个二进制位表示一个点,于是24*24点阵需要24*24个二进制位,一个字节是8个位,所以一个汉字需要24*24/8=72字节, 你有1024个汉字,那当然就是((24*24)/8)*1024

17. 当前页面为, 以下有几个请求属于跨域?(C)

A. 1

B. 2

C. 3

D. 4

解析:

同源策略:是指协议,域名,端口都要相同,其中一个不同则为跨域

18. HTTP CODE中403代表什么含义?(C)

A. 服务器当前无法处理请求

B. 服务器不能或不会处理该请求

C. 服务器收到请求但拒绝提供服务

D. 服务器无法回应且不知原因

解析:

400 (错误请求) 服务器不理解请求的语法。

401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

403 (禁止) 服务器拒绝请求。

404 (未找到) 服务器找不到请求的网页。

405 (方法禁用) 禁用请求中指定的方法。

406 (不接受) 无法使用请求的内容特性响应请求的网页。

19. 属于非专用网络的IP段是?(D)

A. 10.0.0.0–10.255.255.255

B. 172.16.0.0–172.31.255.255

C. 192.168.0.0–192.168.255.255

D. 127.0.0.0–127.255.255.255

解析:

127地址为回环地址,既不属于公网也不属于私网

20. 以下那些是HTTP2.0加入的新特性?(C)

A. keep-alive

B. Pipelining

C. server push

D. SSL/TSL

解析:

HTTP2.0和HTTP1.X相比的新特性:

1、新的二进制格式(Binary Format)

2、多路复用(MultiPlexing)

3、header压缩

4、服务端推送(server push)

参考链接:/J_crdry/article/details/88077955

21. 当一个进程执行系统调用而陷入内核代码中执行时,我们就称进程处于内核态

解析:

内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。

用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。

内核态和用户态参考链接:/maxigang/p/9041080.html

22. drop、delete与truncate分别在什么场景之下使用?不再需要一张表的时候用drop。想删除部分数据行时候用(delete)。保留表而删除所有数据的时候用truncate

解析:

1.drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.

2.truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。

3.delete (删除表中的数据):delete 语句用于删除表中的行。

23. 请将这串二进制数字 101000011010011111,转换为十六进制:2869f

16进制的1位由4个2进制位组成,原二进制数字的位数若不是4的倍数,则在高位补0,使之成为4的倍数。然后每4位划分成16进制的1位。

原二进制数字转化为0010|1000|0110|1001|1111

二进制0010 转换为16进制的 2

二进制1000转换为16进制的 8

二进制0110转换为16进制的 6

二进制1001转换为16进制的 9

二进制1111转换为16进制的 f(15)

24. TCP三次握手时,客户端发送SYN报文给服务器端,服务器端收到SYN报文,回应一个SYN,客户端收到服务器端的SYN报文回应一个ACK,最终进入Established状态。

解析:

三次握手: 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

25. 假设某一虚拟存储系统采用先进先出页面淘汰算法,有一个进程在内存中占3页 开始时内存为空,当访问如下页面序列号后1,2,3,1,2,4,2,3,5,3,4,5,6会产生 6次缺页

解析:

页面淘汰算法参考链接:/qq_37283570/article/details/79063441

26. LRU的cache长度为3,初始为空。依次访问元素 A,A,B,C,A,D,C,E 后,cache里的内容是 E,C,D

解析:

访问A cache中为A

访问A cache中为A

访问B cache中为B,A

访问C cache中为C,B,A

访问A cache中为A,C,B

访问D cache中为D,A,C

访问C cache中为C,D,A

访问E cache中为E,C,D

最近最少使用算法(Least-Recent-Used,LRU)。当页满的时候,而新引用又不在页中,即发生缺页错误,需要根据LRU从现有页中选择一个进行置换。注意LRU并不统计使用次数,而是通过维持一个与页的帧数大小相同的栈来确定该被置换的引用。LRU机制通常用于缺页置换。

LRU实现:最大为页的帧数大小的栈,若是新引用,且栈不满,新引用放到栈顶,已有引用保持相对顺序下移;若是已有引用,则从栈中删除该引用后将该引用放到栈顶。若是新引用且栈满,选择栈底引用删除,将新引用放到栈顶。即栈顶为最近使用引用,而栈底为最近最少使用引用。每次需要置换时,选择栈底引用进行置换。

栈与页对应:注意栈中顺序与页中储存的对应,若A置换B,那么在页中将A存放到原先存放B的位置,而栈中,从栈底删除B,将A放到栈顶。

这道题的CACHE指LRU栈的大小,并且没有问缺页置换后页中的存放位置,而只是问栈中元素的顺序,所以只看栈中顺序即可,不需要确定页中的存储位置。

27. 请写出以下java代码的输出内容

public class TestCount {public static void main(String args[]) {Count count = new Count( );count.count(count.getCount( )).getCount( ); new Count( ).count(count.getCount( ));}public static class Count {volatile Integer count = ;public Count count(Integer count) {System.out.println(++count);return this;}public Integer getCount( ) {System.out.println(++count);return count;}}}

解析:

count.getCount( ) =

count.count(count.getCount( )) =

count.count(count.getCount( )).getCount( ) =

new Count( ).count(count.getCount( )) 中 count.getCount( ) =

new Count( ).count(count.getCount( )) =

getCount()方法修改的是 volatile Integer count的值

synchronized可以保证原子性、有序性和可见性。而volatile却只能保证有序性和可见性。

深入理解Java中的volatile关键字参考链接:/archives/2648

28. git操作:退回到commit 16a14245 并丢掉所有改动

git reset --hard HEAD 116a14245

解析:

Git常用命令使用大全:/Gxiaopan/p/6714539.html

29. 写一个正则去除字段串两端的空格,正则为 /^\s+|\s+$/g

解析:

/^ 以某个规则开头

\s 空白字符 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。

\s+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。

\s+$ 以某个规则结尾

/g 全局匹配 返回匹配到的所有值

30. 以下样式中的h1的实际font-size为 64px;

html {font-size: 32px;}body {font-size: 16px;margin: auto;padding: 0;width: 10rem;}h1{font-size: 2rem;}

解析:

rem是CSS3新增的相对长度单位,是指相对于根元素html的font-size计算值的大小。简单可理解为屏幕宽度的百分比。

假设根元素html的font-size都是16px的。如果想要设置12px的字体大小也就是12px/16px = 0.75rem

所以h1的实际font-size = 2 * html.font-size = 64px

31. 22娘和33娘接到了小电视君的扭蛋任务:一共有两台扭蛋机,编号分别为扭蛋机2号和扭蛋机3号,22娘使用扭蛋机2号,33娘使用扭蛋机3号。扭蛋机都不需要投币,但有一项特殊能力:扭蛋机2号:如果塞x(x范围为>=0正整数)个扭蛋进去,然后就可以扭到2x+1个扭蛋机3号:如果塞x(x范围为>=0正整数)个扭蛋进去,然后就可以扭到2x+2个22娘和33娘手中没有扭蛋,需要你帮她们设计一个方案,两人“轮流扭”(谁先开始不限,扭到的蛋可以交给对方使用),用“最少”的次数,使她们能够最后恰好扭到N个交给小电视君。

输入样例: 10

输出样例:233

Java代码:

import java.util.Scanner;public class Main{public static void main(String[] args) {String res = "";int num = new Scanner(System.in).nextInt();while (num > 0){if (num % 2 == 0){res += "3";num = (num - 2) / 2;}else{res += "2";num = (num - 1) / 2;}}System.out.println(new StringBuilder(res).reverse().toString());}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。