各种笔试基础知识整理

目录

    • 3.5 更新选自vivo校招C、C++题库

3.5 更新选自vivo校招C、C++题库

1、不同进程加载同一个动态库时,不能共享的部分是 RW和ZI段

在ARM集成开发环境中:
1)只读的代码段和常量被称作RO段,是程序中的指令和常量;
2)可读写的全局变量和静态变量称为RW段,是程序中已初始化变量;
3)RW段中要被初始化为0的变量称为ZI段,是程序中未初始化变量。
只有只读的指令和常量可以共享。

2、同一个进程的不同线程,哪个是不能共享的?

线程共享的进程环境包括:

  • 进程代码段
  • 进程的公有资源(如全局变量,利用这些共享的数据,线程很容易的实现相互之间的通信)
  • 进程打开的文件描述符
  • 消息队列
  • 信号的处理器
  • 进程的当前目录
  • 进程用户ID
  • 进程组ID

线程独占资源:

  • 线程ID
  • 寄存器组的值
  • 用户栈、内核栈(在一个进程的线程共享堆区(heap))
  • 错误返回码
  • 线程的信号屏蔽码
  • 线程的优先级

3、linux系统发送信号的系统调用是openkillsend、socket

信号的处理包括信号的发送、捕捉和处理,它们有各自相对应的常见函数:
● 发送信号的函数: kill()、raise()。
● 捕捉信号的函数: alarm()、pause()。
● 处理信号的函数: signal()、sigaction()。

4、在定点二进制运算器中,减法运算一般通过( 补码运算的二进制加法器 )来实现

减法5-3相当于加法 5+(-3) 被加数5的二进制代码为 0000 0101

加数-3的二进制代码为 1000 0011
-3的二进制反码为 1111 1100
-3的二进制补码为 1111 1101
即 5-3 相当于5+(-3)=0000 0101+1111 1101=0000 0010=2 其中最高位为0表示正数
最高数为1表示负数,正数的补码为其本身,负数的补码为取反加1
由此可见 减法相当于补码运算的二进制加法器

5、byte、short、char类型进行运算时会自动转化为int类型,int类型无法匹配byte型产生编译错误
6、有关线程的哪些叙述是对的

一旦一个线程被创建,它就立即开始运行。
一个线程可能因为不同的原因停止并进入就绪状态。
当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。
使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。

7、已定义以下函数:
int fun(int *p){ return *p; }
该函数的返回值是

(注意区别第2个和第3个)
1、不确定的值
2、形参p中存放的值
3、形参p所指存储单元中的值
4、形参p的地址值

8、p是一个指针,32位下为4字节,64位下为8字节
9、循环队列各种笔试基础知识整理_第1张图片
10、已知代码char * p=(char * )malloc(val);其中p在运行的时候获得了一个空指针,请列举三种可能的原因?

动态分配内存返回空指针,说明分配内存未成功,有三种可能:
(1)分配的空间太小
(2)分配的空间被当作内存碎片处理
(3)val取值过大,即分配空间过大会导致内存溢出

11、两个进程间需要交换1KB的数据,请列出三种进程间通讯的方法

进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信,交换信息的方法。根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型:
1、低级通信:控制信息的通信(主要用于进程之间的同步,互斥,终止和挂起等等控制信息的传递)
2、高级通信:大批数据信息的通信(主要用于进程间数据块数据的交换和共享,常见的高级通信有管道,消息队列,共享内存等).
(1)管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
(2)有名管道 (named pipe): 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
(3)信号量( semophore ): 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。不是用于交换大批数据,而用于多线程之间的同步.常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
(4)消息队列( message queue ): 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
(5)信号 ( signal ): 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
(6)共享内存 ( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
(7)套接字( socket ): 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

12、Android四大组件是

Android 开发的四大组件分别是:
活动(activity),用于表现功能;
服务(service),后台运行服务,不提供界面呈现;
广播接受者(Broadcast Receive),勇于接收广播;
内容提供者(ContentProvider),支持多个应用中存储和读取数据,相当于数据库。

13、如何定义C++类,阻止C++类对象的相互赋值(obj2=obj1)?
各种笔试基础知识整理_第2张图片

将拷贝构造函数重载等于号函数声明在类的Private声明域内且不实现任何代码,因为如果写出了调用拷贝构造函数或者赋值的语句,编译器会指出错误,因为外界不能调用类的私有方法。

你可能感兴趣的:(C/C++)