笔试题错题本

1.以下三条输出语句分别输出什么?

int main (void) {

char str1[] = “abc”;

char str2[] = “abc”;

const char str3[] = “abc”;

const char str4[] = “abc”;

const char* str5 = “abc”;

const char* str6 = “abc”;

cout << (str1 == str2) << endl;

cout << (str3 == str4) << endl;

cout << (str5 == str6) << endl;

return 0;

}

第一个,第二个存放的是地址   第三个是指针指向的字符串

2.已知函数fun的原型为int fun(int,int,int);下列重载函数原型中错误的是

char fun(int,int);
double  fun(int,int,double);
int fun(int,char*);
float  fun (int,int,int);函数重载和返回类型无关,参数列表不同即可3.

不同进程加载同一个动态库时,不能共享的部分是

RO段
RW段
ZI段
RW和ZI段

在ARM集成开发环境中:

    1)只读的代码段和常量被称作RO段,是程序中的指令和常量;

    2)可读写的全局变量和静态变量称为RW段,是程序中已初始化变量;

    3)RW段中要被初始化为0的变量称为ZI段,是程序中未初始化变量。

    只有只读的指令和常量可以共享。

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

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

线程独占资源:

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

堆: 是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。

栈:是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立,因此,栈是 thread safe的。操作系统在切换线程的时候会自动的切换栈,就是切换 SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放

5.请问linux系统发送信号的系统调用是

系统调用signal是进程用来设定某个信号的处理方法,系统调用kill是用来发送信号给指定进程的。

这 两个调用可以形成信号的基本操作。

后两个调用pause和alarm是通过信号实现的进程暂停和定时器,调用alarm是通过信号通知进程定时器到时。

6.在定点二进制运算器中,减法运算一般通过(   )来实现

 补码运算的二进制加法器

7.操作系统在控制和管理进程过程中,涉及到(   )这一重要数据结构,这是进程存在的唯一标志。

每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。
/usr/src/linux-headers-3.16.0-30/include/linux/sched.h文件中可以查看struct task_struct 结构体定义。其内部成员有很多,重点:

  • 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表- 示,其实就是一个非负整数。
  • 进程的状态,有就绪、运行、挂起、停止等状态。
  • 进程切换时需要保存和恢复的一些CPU寄存器。
  • 描述虚拟地址空间的信息。
  • 描述控制终端的信息。
  • 当前工作目录(Current Working Directory)。
  • umask掩码。
  • 文件描述符表,包含很多指向file结构体的指针。
  • 和信号相关的信息。
  • 用户id和组id。
  • 会话(Session)和进程组。
  • 进程可以使用的资源上限(Resource Limit)。

进程控制块(Processing Control Block),是操作系统进程中一种数据结构,主要表示进程状态。其作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位或与其它进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。 PCB通常是系统内存占用区中的一个连续存区,它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息,它使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位或一个能与其他进程并发执行的进程。

8.已知代码char* p=(char*)malloc(val);其中p在运行的时候获得了一个空指针,请列举三种可能的原因?()()()

(1) 空间太小
(2) 内存碎片
(3) val取值过大

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

进程间IPC的方法:

1. pipe 又分为匿名和命名pipe,前者用于具有一定关系的进程间的通信,(通过fork进制)后者FIFO可以用于不具有任何关系的进程通信

2. socket 其实有些平台的pipe的底层实现就是使用unix socket。

3. signal 通过信号处理机制也能使两个进程进行通信(同步)

4. message 通过消息队列,可以使任何两个进程进行通信

5. semaphore 信号量,是任意进程同步的工具

6. shared memory 其也是通信速率最快的一种方式,但是多个进程同时访问该区域,就需要读写控制,使用进程间锁或者信号量来搭配使用。

7. file       通过对一个文件的读写,来通信也是一种手段,但是需要同步控制。

10.Android四大组件是:Activity、Service、Broadcast Receiver、Content Provider

11.JAVA中,final修饰的类、成员函数、变量分别有什么特点?

类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。

将变量声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在new一个对象时初始化(即只能在声明变量或构造器或代码块内初始化),而在以后的引用中只能读取,不可修改。

将方法声明为final,则方法只能使用,而不能在子类重写。

12.java中Thread.sleep()和 Object.wait() 有什么区别?

sleep是使线程休眠一段时间。在sleep休眠时间到期后,线程不一定立即恢复执行,除非系统没有其它更高优先级的任务正在执行

wait是线程间实现同步的一种机制。调用wait的线程会主动进入等待状态,直到被其它线程唤醒或者等待超时

13.sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?从安全角度考虑一般应该用哪个函数复制字符串?

sprintf为格式化字符串函数

strcpy为字符串复制函数

strncpy也是字符串复制函数,但是可以指定最大复制长度

memcpy为内存复制函数

从安全角度应该选strncpy,不易出现越界异常

14.算法 最长公共子串

function findSubStr(s1,s2){

  var S=sstr= "" ,L1=s1.length,L2=s2.length;

  if (L1>L2){ var s3=s1;s1=s2,s2=s3,L1=s2.length;}

  for ( var j=L1;j> 0 ;j--)

    for ( var i= 0 ;i<=L1-j;i++){

      sstr = s1.substr(i,j);

      if (s2.indexOf(sstr)>= 0 ) return sstr;

    }

  return "" ;

}

document .writeln(findSubStr( "aaa3333" , "baa333cc" )); //aa333

document .writeln(findSubStr( "aaaX3333--" , "baa333ccX3333333x" )); //X3333

 


原文地址:https://www.cnblogs.com/mengmengya/p/9472341.html

时间: 2024-10-17 14:51:32

笔试题错题本的相关文章

2015考研 杭电 计算机学院 复试笔试题第一题 JAVA语言解法

杭电 2015年考研 计算机学院 复试笔试第一题 JAVA解法 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /* 杭电2015年 计算机学院 复试 笔试题第一题 JAVA解答 * author 刘汪洋 QQ 605283073 * 求出:字符串如:"34223abd#34SB-11--" * 中整数的和 其中-在数字前表示负号,否则为字符 */ pub

XX公司在线笔试题编程题之一

题目: #include <iostream> #include <vector> #include <string> #include <list> #define N 1000005 using namespace std; bool prime[N]={0}; vector<int> ps; // 存放1到N内所有素数 void fenjie(vector<int> & suyinzi, int x){ // 素因子分解

2015阿里实习线上笔试题-附加题1

随机数生成器 计算机使用的随机数生成器往往是伪随机的,为了达到统计意义上的真随机数,可以需要引入系统 外的变量等作为随机种子(如UNIX系统中熵池).假设有一天出现了上帝的投硬币函数: int G(); 由于这里用到的上帝硬币可能不均匀.但可以保证是G()可以x概率返回1,1-x的概率返回0,其中x为未知常数(且x不等于0或1). 请实现目标函数: int F(double p); 要求 F函数以概率p返回1,以1-p返回0. 除了G之外,不使用的任何库函数. PS:定义宏UINT_MAX=0x

java笔试题刷题错误笔记

一.以下哪一个不是赋值符号? A.+=      B.<<=       C.<<<=     D.>>>= 备注:+=是先加后赋值符号 <<=是左移   >>>表示无符号右移,没有<<<符号 二.ArrayList  list=new ArrayList(20);中list扩展了几次?答案:0次 备注:ArrayList有三个构造函数 &a:ArrayList() 构造了一个初始容量为10的空列表;

美团2015校招哈尔滨站笔试题--第二题

有一组随机排列的字母数组,请编写一个时间复杂度为O(n)的算法,使得这些字母安装字母从小到大顺序排好.说明:字母区分大小写,相同的字母,排序后小写排在大写前.例如:R,B,B,b,W,W,B,R,B,w排序后:b,B,B,B,B,R,R,w,W,W1)描写思路(2分)2)请用你熟悉的编程语言编写代码实现(8分) /** * * @author 无心流泪 * 空间换时间 */ public class InterviewExercise { public void mySort(char[] st

大众点评笔试题编程题

用最快的方法判断所有string2的字母在string1中是否存在,如:string2="abx",string1="abcdef",ab在string1中,x不存在 提交试卷时间还没到,嘿嘿嘿嘿,不能提交,等着考完再提交吧 #include <stdio.h> #include <stdlib.h> int convert(char *str) { int A=0; char s; int pos=0; while(*str!='\0')

初级试题错题库

1.下图子类会自动调用父类构造器无参的构造方法 class Example1{ public Example1(){ System.out.print(1); } } class Example2 extends Example1{ public Example2(){ System.out.print(2); } } class Example3 extends Example2{ public Example3(){ System.out.print(3); } } public class

前端试题-2016年阿里前端开发工程师笔试题6,7,8题的解法

2016年阿里前端开发工程师笔试题(只有题,没有答案): http://www.cnblogs.com/sdgf/archive/2015/08/18/4740698.html 第6题:请在____处填写答案,从而达到题目的要求 var arr = [1, 2, 3, 4, 5]; var result = arr.sort(_______________________________).join("+"); console.log(result); 解答:在排序当中,如果需要按照某

2018春招-今日头条笔试题-第三题(python)

题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出'1234567890',对于输入表达试获得对应的结果利用python内置函数eval()即可以实现.利用5个字符串来表达'1234567890',如下(为了好看,里面加了tab空格符) '66666 ....6 66666 66666 6...6 66666 66666 66666 66666 66666''6...6 ....6 ....6 ....6 6...6 6.... 6