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

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 
#define N 20
void 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的三次握手和四次挥手:
参考链接:https://www.cnblogs.com/Andya/p/7272462.html

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

A. 数据多播
B. 可靠连接
C. 流量控制
D. 拥塞控制

解析:
TCP和UDP区别: https://blog.csdn.net/zhang6223284/article/details/81414149#26__155

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

A. super
B. passwd
C. tar
D. su

解析:
passwd 更改使用者密码
tar 解压压缩包
linux常用命令大全:https://www.cnblogs.com/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. 当前页面为http://www.bilibili.com, 以下有几个请求属于跨域?(C

哔哩哔哩2019秋招技术岗(前端、运维、后端、移动端) 第二套笔试题_第1张图片
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)
参考链接:https://blog.csdn.net/J_crdry/article/details/88077955

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

解析:
内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。
用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。
内核态和用户态参考链接:https://www.cnblogs.com/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  次缺页

解析:
哔哩哔哩2019秋招技术岗(前端、运维、后端、移动端) 第二套笔试题_第2张图片
页面淘汰算法参考链接:https://blog.csdn.net/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栈的大小,并且没有问缺页置换后页中的存放位置,而只是问栈中元素的顺序,所以只看栈中顺序即可,不需要确定页中的存储位置。
哔哩哔哩2019秋招技术岗(前端、运维、后端、移动端) 第二套笔试题_第3张图片

27. 请写出以下java代码的输出内容  2019 2020 2020 2021 2022  
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 = 2018;      
		public Count count(Integer count) {
			System.out.println(++count);
			return this;
		}
        
		public Integer getCount( ) {
			System.out.println(++count);
			return count;
		}
    }
}

解析:
count.getCount( ) = 2019
count.count(count.getCount( )) = 2020
count.count(count.getCount( )).getCount( ) = 2020
new Count( ).count(count.getCount( )) 中 count.getCount( ) = 2021
new Count( ).count(count.getCount( )) = 2022
getCount()方法修改的是 volatile Integer count的值
synchronized可以保证原子性、有序性和可见性。而volatile却只能保证有序性和可见性。
深入理解Java中的volatile关键字参考链接:https://www.hollischuang.com/archives/2648

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

git    reset --hard HEAD   116a14245

解析:
Git常用命令使用大全:https://www.cnblogs.com/Gxiaopan/p/6714539.html

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

解析:
/^ 以某个规则开头
\s 空白字符 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
\s+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。
\s+$ 以某个规则结尾
/g 全局匹配 返回匹配到的所有值

30. 以下样式中的h1的实际font-size为   64  px;
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());
    }
}

你可能感兴趣的:(笔试面试题)