常见笔试题总结

1.冒泡排序

 1     int a[5] = {96,73,12,46,98};
 2     int i = 0,j = 0,t = 0;
 3
 4     for (j = 0;j < 4;j++) {
 5         for (i = 0;i < 4 - j;i++) {
 6             if (a[i] > a[i+1]) {
 7                 t = a[i];
 8                 a[i] = a[i+1];
 9                 a[i+1] = t;
10             }
11         }
12     }

2.操作系统中,进程可以分为(系统进程)和(用户进程)两类

3.ISO七层模型是什么?TCP/UDP是属于哪一层?TCP/UDP有何优缺点?

  - 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

  - TCP/UDP属于传输层

  - TCP、UDP优缺点分析

    * TCP:全双工,点对点的连接;提供三大服务:可靠数据传输,拥塞控制,流量控制

    * UDP:无需建立连接,分组首部开销小,应用层控制数据何时发送更为精细。

4.字符串拷贝有sprintf, strcpy及memcpy函数,请问其区别,哪个效率高?

  - memcpy一次读取所有源数据,而后一次性传到目标地址,效率最高

  - strcpy需要逐个判断字符串是否结束,一字节一字节读取,比上述慢

  - sprintf需要检测输出格式的步骤,所以会更慢

5.C++语言中类成员函数的重载、覆盖和隐藏的区别?

  - 重写和重载主要有以下几点区别

    * 范围区别:被重写的和重写函数在两个类中,而重载和被重载的函数在同一个类中

    * 参数区别:被重写函数和重写函数逇参数列表一定相同,而重载函数参数列表一定不同

    * virtual的区别:重写的基类中被重写的函数必须要有virtual修饰,而重载函数都可以

  - 隐藏和重写,重载的区别

    * 范围区别:隐藏和重写一样,不在同一个类中

    * 参数区别:当参数列表不同时,无论基类是否有virtual,基类的函数都会被隐藏,而不是重写。

6.指针和引用有什么区别?传引用比传指针更安全,为什么?

  - 相同点:

    都是地址概念。指针内容为内存地址,而引用则是某块内存的别名

  - 不同点:

    * 指针是一个实体,而引用仅是别名

    * 引用只能在定义时被初始化一次,之后不可变。而指针可以改变

    * 引用不能为空,而指针可以为空

    * sizeof,自增运算符等,其意义不同

  - 安全性:引用比指针多了类型检查。

7.进程同步机制及进程间通信途径?

  - 进程同步:信号量

  - 进程间通信方式:管道,信号,系统IPC(消息队列、信号量、共享内存),SOCKET

8.静态链接和动态链接的优缺点?

  - 静态链接库优缺点:

    * 代码装载速度快,执行速度比动态链接快

    * 只需要在开发者电脑保证静态库的存在即可,程序发布后无需静态库

    * 代码体积大

    * 内存中可能存在多份相同指令,造成空间浪费

  - 动态链接库优点:

    * 节省内存空间

    * 库文件和可执行文件相互独立,当接口不改变情况下,更新库文件对可执行文件不影响

    * 节省磁盘空间

    * 程序运行时,依赖动态库文件

9.谈谈对进程,程序和线程的理解

  - 进程:作为操作系统的最小执行单元,当程序运行时,操作系统会分配一个进程的数据结构,同时分配4GB(32位机)的资源空间,包括系统环境变量区,堆区,栈区,数据区,文本区。而后期计算机的发展,为了提高CPU的利用率,将操作系统调度单元进一步细化为线程,即同一个进程包含多个线程时,就会有并发问题出现。而线程,必须依赖进程空间而存在,即一个可执行程序的执行,至少应该会分配到一个进程,一个线程资源。

  - 程序:映像文件在存储介质上的一种组织形式,由域组成。域分为加载域和运行域,运行域一般在内存地址中,而加载域在硬盘中存在。域最多由三个输出段组成,输出端包含可读写代码段RW和只读代码段RO以及ZI。

10.简述队列,栈,堆的异同

  队列和栈都是线性存储结构,但是两者的插入和删除数据的操作不同,队列是“先进先出”,栈是“后进后出”,堆区是“顺序随意”

11.谈谈对编程规范的理解或认识:

  编程规范可总结为:程序的可行性,可读性,可移植性以及可测试性

12.写一个“标准”宏MIN

  #define  MIN(a, b)  ((a) <= (b)? (a):(b)) 

13.typedef和define有什么区别?

  - 用法不同

  - 执行时间不同:typedef是编译过程的一部分,带类型检查,define在预编译部分

  - 作用域不同

  - 对指针的操作不同

14.static作用?

  static在C中主要用于定义全局静态变量,定义局部静态变量,定义静态函数。

15.如何避免“野指针”?

  - 指针变量声明没有被初始化

  - 指针p在被free之后,没有置为NULL

  - 指针操作超越了变量的作用范围

16.中断处理函数:

  - 不能有返回值

  - 不能传递参数

  - 避免做浮点运算

  - pirntf经常有重入和性能上的问题

17.构造函数是否为虚函数?

  不能。并且不能在构造函数中调用虚函数,因为这样执行的是父类的对应函数,因为其本身还没有构造好。析构函数可以是虚函数。

时间: 2024-12-13 08:29:54

常见笔试题总结的相关文章

C#常见笔试题

1.产生20个不同的两位整数的随机数,并且对它们进行由小到大的排序.特别提醒:程序要自动生成20个不同的整数,而且这些整数必须是两位的,如:3不是两位整数,58是两位整数 List<int> numbers= new List<int>(); Random rnd = new Random(); int i = 0; while (i < 20) { int s = rnd.Next(10, 100); //注意s的值大于等于10小于100 if (!numbers.Cont

web前端常见笔试题总结

一.常见javascript笔试题 1.  var a = 1; delete a; console.log( typeof a); //number 显示生命的全局变量不能被删除 如果是 a = 1;   delete a; console.log(typeof a) //undefined; 隐式声明的全局变量可以删除 2.用一行代码实现字符串翻转 如: str="abcdefg",翻转后str="gfedcba"; var a = str.split('').

js作用域之常见笔试题,运行结果题

笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = 10; } alert(a);//Error a is not defined 由于a是函数内部定义的局部变量,根据作用域关系,外层(全局环境)访问不到局部变量.因此会报错 var a=10; function aaa(){ alert(a); } function bbb(){ var a=20;

[转] C语言常见笔试题大全1

点击阅读原文 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365UL) [此处对原文有改动]我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的.3). 意识到这个表达式将使一个16位机的整型数溢

常见笔试题(三)

11.面向对象的三大特征,并作简单的介绍. 面向对象的三个基本特征是:封装.继承.多态. 封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的 数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.隐藏对象的属性和实现细节,仅对外公开接口,提高代 码安全性,封转程度越高,独立性越强,使用越方便. 继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过 继承创建的新类称为"子类&q

数据结构与算法常见笔试题

一.算法的基本概念计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法.1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报.2.算法的基本要素:算法中对数据的运算和操作.算法的控制结构.3.算法设计的基本方法:列举法.归纳法.递推.递归.减半递推技术.回溯法.4.算法设计的要求:正确性.可读性.健壮性.效率与低存储量需求二.算法的复杂度1.算法的时间复杂度:指执行算法所需要的计算工作量2.算法的空间复杂度:执行这个算法所需要的内存空间三.数据结构的定义1.数据的逻辑结构:反映数

java常见面试题——java常见笔试题

注:转载自http://www.cnblogs.com/yhason/archive/2012/05/08/2489932.html,版权归其所有! 5.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.为了提高效率节省空间,我们应该用StringBuffer类 6.int 和 Integer 有什么区别 Ja

Java常见笔试题&lt;四&gt;

1.以下Json格式数据,错误的是: A.{company:4399} B.{"company":{"name":[4399,4399,4399]}} C.{[4399,4399,4399]} D.{"company":{[4399,4399,4399]} E.{"company":{"name":4399}} 参考答案:AC 分析:A:Json对象要求属性必须有双引号:C:Json必须有一组有序的键值对组

常见笔试题(二)

6.用obj-c写一个冒泡排序 -(void)mySort:(NSMutableArray *)mutArray { id tmpObj = nil; unsigned long flag = mutArray.count-1;//flag :最大脚标 while (flag > 0) { int k = flag; flag = 0; for (int j = 0 ; j < k ; j++) { int order = NSOrderedAscending;// 或 NSOrderedDe