文本描述
应聘 应用研发工程师 测试题
考试时间:120分钟
姓名 学校 学历 联系电话
答题指引:
1、请在空白处作答。
2、选择感兴趣的方面作答。
软件开发基础
1、面向对象的三个基本特征是什么,请简单描述?
三个基本特征是:封装、多态、继承
封装:主要是将客观事物抽象成类,其目的是为了保护和隔离。
多态:分为静态多态和动态多态。其作用是为了隐藏实现的细节,使代码模块化,实现代码重用。也保证任一类的实例的某一项属性的正确调用。
实现方式:用虚函数实现(virtual)
继承:是在已有的类的基础上生成新的类。
2、请阐述线程与进程的区别?线程间同步方式有哪些?
进程是操作系统资源分配的基本单位,
线程是处理器任务调度和执行的基本单位。
区别:
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。
线程间同步方式主要有:临界区、互斥量、信号量、事件。
3、简述并发与并行并发:
指宏观上看起来两个程序在同时运行,但是从微观上看,两个程序的指令是交织着运行的,你的指令之间穿插着我的指令,我的指令之间穿插着你的,在单个周期内只运行了一个指令,这种并发不能提高计算机的性能,只能提高效率。并行:
指严格物理意义上的同时运行,比如多核cpu,两个程序分别运行在两个核上,两者之间互不影响,单个周期内,每个程序都运行了自己的指令,也就是运行了两条指令,这样说来并行的提高了计算机的效率,所以现在的cpu都是往多核方面发展。
4、简述内存分页的概念
虚拟地址空间划分成称为页的单位,相应的物理地址空间也被进行划分,单位是页帧。
一个在磁盘,一个在内存,页和页桢的大小必须相同。
在32位地址的机器,虚拟地址范围从0~0xFFFFFFFF(4G)
页式分为:
静态页式管理、:静态分页管理的第一步是为要求内存的作业或进程分配足够的页面
动态页式管理:动态页式管理是在静态页式管理的基础上发展起来的。
5、简述用户空间与系统空间
Kernel?space是Linux?内核的运行空间
User?space是用户程序的运行空间。
为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响
C++应用软件
简述C++语言中关键字static的作用
C ++中 sta ti c 用 来 修 饰 局 部 静 态 变 量 和 外 部 静 态 变 量 、 函 数 。还 用 来 定 义 类 的 成 员 变 量 和 函 数 。 即 静 态 成 员 和 静 态 成 员 函 数 。
STL包含哪几个部分,什么是迭代器,迭代器与指针的异同
STL分为容器、迭代器、空间配置器、配接器、算法、仿函数六个部分
迭代器适用于确定元素位置的数据对象,可以用来遍历容器中的元素,通过迭代器可以读取修改它指向的元素,它的用法和指针类似,每一种容器都定义了一种迭代器。
迭代器:
迭代器不是指针,是类模板,表现的像指针。
(2)迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使用*取值后的值而不能直接输出其自身。
(3)在设计模式中有一种模式叫迭代器模式,简单来说就是提供一种方法,在不需要暴露某个容器的内部表现形式情况下,使之能依次访问该容器中的各个元素
指针:
指针能指向函数而迭代器不行,迭代器只能指向容器;指针是迭代器的一种。
指针只能用于某些特定的容器;
迭代器是指针的抽象和泛化。所以,指针满足迭代器的一切要求。
虚析构函数的作用
如果一个基类的析构函数被说明为虚析构函数,则它的派生类中的析构函数也是虚析构函数,不管它是否使用了关键字virtual进行说明。
说明虚析构函数的目的在于在使用delete运算符删除一个对象时,能保析构函数被正确地执行。因为设置虚析构函数后,可以采用动态联编方式选择析构函数。
什么是仿函数,编写一个仿函数的简例
仿函数是“smart functions”(智能型函数),一般来说我们让一个函数保存状态。使得每次调用函数会因状态不同而执行效果不同
如果我们在一