一.题型单选: 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=99982、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) == 优先级高于 &。
4、redo log作用
重做日志(redo log)
作用:确保事务的持久性。
以防在发生故障的时间点,还有脏页未写入磁盘,在重启mysql的时候,根据redo log进行重做,从而达到事务的持久性这一特性。
内容: 物理格式的日志,记录了物理数据页面修改的信息,其redo log是顺序写入redo log file的物理文件中去的。
1、整数数组排序并将元素替换为序号
leetcode 1331题
补:cin.get(字符变量名)可以用来接收字符
故而,输入[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 72、打印符合规律的数列第n个数
类似yxdxwz那契数
3、罗马数字转换整数
leetcode 13题