首页 > 编程知识 正文

哔哩哔哩测试面试,bilibili项目管理笔试

时间:2023-05-03 11:39:02 阅读:163229 作者:4057

一.题型单选: 30 * 2

填空:5 * 2

编程问题:3 * 15

二.题型1 1、下列关于父进程与子进程的叙述正确的是(ABC)

a、父流程和子流程有不同的流程控制块

b .父进程和子进程不能同时使用相同的关键资源

c .父进程和子进程可以同时运行

d、父进程与子进程共享虚拟地址空间

分析:父进程和子进程可以并发执行

父进程和子进程可以共享一部分资源,但不能共享虚拟地址空间在创建子进程时为子进程分配资源,如虚拟地址空间。 也就是说,d选项是错误的。

进程控制块PCB是进程存在的唯一标志

临界资源一次只能为一个进程所使用

2、对于两个并发进程,设互斥信号量为mutex(初值为1),若mutex=0,则(B )

a .表示没有进入临界区的进程

b .表明有进入临界区的进程

c .表示一个进程进入临界区,等待另一个进程进入

d .表明两个进程进入临界区域

分析: mutex=1:表示进程没有进入临界区域

3、基本数据结构知识

4、递归函数

#includestdio.hintfoo(intx,int y ) if ) y!=3x6) return 1; return3*foo(x-6,y/2 ); (intmain ) void ) { int x=12,y=20; printf(%d(n ),foo ) ) x,y ); 返回0; )结果:9 5、等价类+边界值

输入长度范围为[ 1,145 ]时:

有一个有效等价类(1=x=145 )两个无效等价类(x1和x145 )

6、数据库的 between … and

between A and B :属性值与[A,B]范围内的数据一致。

7、数据库的limit

limit s,n :返回查询结果中第s行到第n行的记录,指示第一行为0。 如果不指定s,则缺省从第一行开始。

例子:

三.题型2 1、b+2;不对任何变量赋值,相当于空语句。

#includestdio.hintmain(void ) { int a=0,b=0,c=0; c=(a-=a-5 ),) a=b,b 3 ); printf('%d,%d,%dn ),a,b,c ); 返回0; 结果: a=0,b=0,c=5 解析:

第二句是逗号表达式:c=(a-=a-5 )

为c分配值,将a -=a - 5的结果分配给c :

(a-=a-5 )=) a=a-(a-5 ) )

a=0; 得a=5;

进而,(a-=a-5 )值为5;

c=5;

接下来执行(a=b,b 3 );

其中包括逗号表达式

a=b; 因为b=0; 因此,a=0;

b+3不对任何变量赋值是指空语句

综上所述,a=0;b=0;c=5

3、运算

功能:将x转化为2进制,看含有的1的个数

注每次执行:x=x(x-1 )时,用二进制表示x时,最右边的1变为0。 因为x-1是其位)如果用二进制表示x,最右边的1 )就是0

#includestdio.hintfunc(intx ) { int countx=0; while(x )//x不为0时循环) { countx; //记录循环次数x=x(x-1 ); //通过位'和'操作。 也就是说,如果用二进制比特进行比较,则只有全部为1时才为1,否则该比特为0。 0 } return countx; //返回循环次数(intmain ) void ) { int x=9999; printf(%d(n ),func(x ) x ); 返回0; (结果)8 解析:

1、x=9999

x2=0010011100001111

(x-1 )2=0010011100001110

x (

x-1)=0010011100001110=9998
2、x=9998
x2=0010011100001110
(x-1)2=0010011100001101
x&(x-1)=0010011100001100=9996
3.x=9996
x2=0010011100001100
(x-1)2=0010011100001011
x&(x-1)=0010011100001000=9992

8、x=8192
x2=0010000000000000
(x-1)2=0001111111111111
x&(x-1)=0000000000000000=0

补: 判断一个数(x)是否是2的n次方
思路:
(1) 如果一个数是2的n次方(偶数),那么这个数用二进制表示时其最高位为1,其余位为0
(2) == 优先级高于 &。

#include <stdio.h>int func(int x){ if( (x&(x-1)) == 0 ) return 1; else return 0;} int main(){ int x = 8; printf("%dn", func(x));}

4、redo log作用

重做日志(redo log)
作用:确保事务的持久性
以防在发生故障的时间点,还有脏页未写入磁盘,在重启mysql的时候,根据redo log进行重做,从而达到事务的持久性这一特性。
内容: 物理格式的日志,记录了物理数据页面修改的信息,其redo log是顺序写入redo log file的物理文件中去的。

四、题型3

1、整数数组排序并将元素替换为序号
leetcode 1331题
补:cin.get(字符变量名)可以用来接收字符

#include <iostream> using namespace std; main () { char ch; ch=cin.get(); //或者cin.get(ch); 获取一个字符cout<<ch<<endl; }输入:123输出:1输入: d667输出: 空格

故而,输入[1,2,4,3]这种数字之间用逗号隔开的数组方法:

#include <string>#include <iostream>#include <vector>using namespace std;int main() { std::vector<int> inputs ; int t; while(cin>>t){ // t:获得第一个数字 inputs.push_back(t); if(cin.get()=='n'){// cin.get():获得第二个字符(比如空格或逗号) break; } } for(auto x:inputs) std::cout << x << " "; return 0;}输入: 4 5,6,7输出:4 5 6 7

2、打印符合规律的数列第n个数
类似yxdxwz那契数

3、罗马数字转换整数
leetcode 13题

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。