C/C++常考面试题(一)
这算是一个系列吧,记录一下在准备秋招期间,所准备的C++面试题,望秋招顺利。所有的面试题均来源于各大论坛,网络。
C/C++常考面试题(一)
- 常用的C++数据结构有哪些?
- vector,序列式容器,相当于数组,顺序表;
- list, 双向链表
- deque,双端队列,queue,队列,stack,栈,priority_queue,优先级队列
- map,set,multimap,multiset
- hashtable,散列表
- 图,树等等
- 什么是虚函数,多继承有什么问题
- 被virtual关键字修饰的成员函数,就是虚函数
- 多继承可能会发生重复继承的情况,从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致的问题,二义性的问题。解决办法虚继承
- 为什么要用虚析构函数,什么是多态
- 在多态中,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生
- 多态可以简单地概括为“一个接口,多种方法”,在程序运行的过程中才决定调用的函数。多态性是面向对象编程领域的核心概念。多态性是允许你将父对象设置成为和它的一个或更多的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单地说就是一句话,允许将子类类型的指针赋值给父类类型的指针。多态性在C++中都是通过虚函数(Virtual Function)实现的。
- 进程和线程的区别和联系
- 定义
- 进程是程序的一次执行,是程序在一个数据集合上运行的过程,是一个动态概念,是系统进行资源分配和管理的基本单位。
- 线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位,也称为轻型进程,是可执行的实体单元。
- 区别
- 地址空间和其他资源:进程间相互独立,同一进程的各线程间共享。某进程的线程在其他进程中不可见。
- 每一个进程都有一个自己的地址空间,即进程空间。进程空间的大小只与机器位数有关。一个进程崩溃后,在保护模式下不会对其他进程产生影响。而线程只是一个进程中的不同执行路径,每一个线程有自己的堆栈和局部变量,但是没有自己独立的地址空间,每个线程共享其所属进程的资源。一个线程死掉等于整个进程死掉,所以多进程的程序要比多线程的程序健壮。
- 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信,但是需要相关同步和互斥手段的辅助,以保证数据的一致性。
- 调度和切换:线程的上下文切换比进程的上下文切换快得多。
- 一个程序至少有一个进程,一个进程至少有一个线程
- 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
- 地址空间和其他资源:进程间相互独立,同一进程的各线程间共享。某进程的线程在其他进程中不可见。
- 定义
C/C++常考面试题(一)的更多相关文章
- Java常考面试题
Java常考面试题 1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行 ...
- C/C++常考面试题(二)
网上看到的面经,说是dynamic_cast的实现,和RTTI的相关,这才发现原来对这个概念这么模糊,所以作了这个总结. C/C++常考面试题(二) RTTI(Runtime Type Informa ...
- C++常考面试题汇总
c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...
- C++常考面试题汇总(持续更新中)
c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...
- 变量和关系符和JAVA基本类型笔记与常考面试题
变量的类型:数值型:整型(byte,short,int,long).浮点型(float,double)非数值型:布尔类型(boolean),字符型(char),字符串类型(String),其他引用型 ...
- .net常考面试题
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...
- vue常考面试题
组件中 data 什么时候可以使用对象? 这道题其实更多考的是 JS 功底: 组件复用时所有组件实例都会共享 data,如果 data 是对象的话,就会造成一个组件修改 data 以后会影响到其他所有 ...
- javaScript ES5常考面试题总结
js的六种原始值 boolean null undefined number string symbol 坑1: 首先原始类型存储的都是值,是没有函数可以调用的,比如 undefined.toStri ...
- Mybatis常考面试题汇总(附答案)
1.#{}和${}的区别是什么? #{}和${}的区别是什么? 在Mybatis中,有两种占位符 #{}解析传递进来的参数数据 ${}对传递进来的参数原样拼接在SQL中 #{}是预编译处理,${}是字 ...
随机推荐
- 搭建windows环境下(nginx+mysql+php)开发环境
搭建windows环境下(nginx+mysql+php)开发环境 1. 所需准备应用程序包 1.1 nginx 程序包nginx-1.0.4.zip或其他版本(下载地址: http ...
- Playground 你不知道的小技巧, CoreData 的使用
Playground 的出现无疑是大大的提高了开发效率,可以节省大量的编译时间. 这里介绍在 Playground 中使用 CoreData 的小技巧. 我们新建一个工程 iOS 项目工程. 点击Fi ...
- Contains Duplicate II leetcode
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...
- Thrift序列化与反序列化的实现机制分析
Thrift是如何实现序死化与反序列化的,在IDL文件中,更改IDL文件中的变量序号或者[使用默认序号的情况下,新增变量时,将新增的变量不放在IDL文件的结尾,均会导致Thrift文件的反序列后无法做 ...
- Python中的日期和时间
感觉C语言作为一门编程的入门语言还是很好的,相比较之下,Python为代表的一些语言,适合很多非计算机专业的编程入门学习. Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换 ...
- Python Number(数字)
---Number类型的细节,其包含的基本数字类型 ---Number基本数字类型之间的数值转换 ---Number上面的数学函数,有些可以直接调用,有些需要导入库 参见http://www.runo ...
- 解决Chrome动画”卡顿”的办法
为动画DOM元素添加CSS3样式-webkit-transform:transition3d(0,0,0)或-webkit-transform:translateZ(0);,这两个属性都会开启GPU硬 ...
- Session的两种实现
1.若果浏览器支持cookies,则可以使用临时cookies 2.若不支持,则使用request.encodURL();重写url
- iOS开发之KVC
1.KVC概述 KVC(Key-value coding)是一套利用字符串标识符间接访问对象属性和关系的机制.Cocoa Programming中,Core Data,Application Scri ...
- 认识J2SE
1. J2SE的定义 J2SE:全称为Java 2 Standard Edition.Java 2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本. J2SE主要包括UI. ...