一天一道面试题
文章平均质量分 75
to be a better man !
to be a bettet coder!
BIG_GENERAL_DD
好好学习,天天向上.
展开
-
面试题9: const、static、volatile关键字使用说明
关于const关键字的用法,潜意识下就会想到 修饰变量,一直没有深入挖掘。最近在面试的时候常常会被问到const、static、votaile等关键字的使用与区别。借此机会,重新复习总结关于此关键字的使用。 1、首先看一下,const与宏定义之间的比较:宏作用: 在开发中会把一些常用的变量的值定义成宏;const作用: 1.用于修饰右边变量(基本变量,指针变量) ...原创 2018-08-16 15:01:31 · 2654 阅读 · 4 评论 -
面试题8: 你思考过为什么快排比堆排序快吗?
堆排的过程:比如最大堆1. 建立最大堆(堆顶的元素大于其两个儿子,两个儿子又分别大于它们各自下属的两个儿子… 以此类推)2. 将堆顶的元素和最后一个元素对调(相当于将堆顶元素(最大值)拿走,然后将堆底的那个元素补上它的空缺),然后让那最后一个元素从顶上往下滑到恰当的位置(重新使堆最大化)。3. 重复第2步。 关键问题就在于第2步,堆底的元素肯定很小,将它拿到堆顶和原本属于最大元...转载 2018-08-02 20:18:17 · 1876 阅读 · 0 评论 -
面试题7:构造函数不能虚,析构函数建议虚
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初...转载 2018-08-02 20:01:35 · 476 阅读 · 0 评论 -
面试题6:由浅入深的进程上下文
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较低级别(用户态),在这个级别,处理器控制着对硬件的...转载 2018-08-01 10:15:32 · 488 阅读 · 0 评论 -
面试题5:头文件中的ifndef/define/endif有什么作用?
在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。方法:例如要编写头文件test.h在头文件开头写上两行:#ifndef _TEST_H#define _TEST_H//一般是文件名的大写头文件结尾写上一行:#endif这样一个工...原创 2018-08-01 09:41:25 · 23331 阅读 · 0 评论 -
面试题4:数组、指针、引用的联系区别
数组和指针???从两个方面来看,一是作为一个语言,数组是必须要支持的一种数组类型,原因很简单,数组是线性表的直接体现。而从编译器设计者的角度来看,如果为数组专门设计一套实现标准会非常繁杂(事实上,后来C++完成了这一任务,它就是标准库中的vector容器)。这一对矛盾最后以双方的相互妥协得以解决,而解决方法就是利用现有的指针来间接实现数组。编译器为了简化对数组的支持,实际上是利用指针实现了...原创 2018-08-01 09:10:53 · 850 阅读 · 3 评论 -
面试题3:Linux中的锁锁锁!!!
一、读写锁读写锁,也叫作共享式互斥锁。有3种状态:读模式的加锁状态、写模式的加锁状态、不加锁状态。写模式加锁状态:在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。读模式加锁状态:所有试图以读模式进行加锁的线程都可以得到访问权,但是任何希望以写模式对此加锁的线程都会阻塞,直到所有的线程释放他们的读锁为止。读写锁非常适合于对数据结构读的次数远大于写的情况。 二、自旋锁...转载 2018-07-31 22:17:09 · 559 阅读 · 0 评论 -
面试题2:进程间常用的通信方式有哪些?
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点: 它是半双工的(...转载 2018-07-31 22:03:19 · 5470 阅读 · 0 评论 -
面试题1:OS或者编译器怎么识别是全局变量还是局部变量
OS或者编译器怎么识别是全局变量还是局部变量. 操作系统内根本不关心你是什么变量,它只管代理运行程序,也就是进程,负责这些进程之间的调度,不过如果要说操作系统本身也是进程,那倒可以理解;编译器最终会把程序编译成可执行文件,就是对应的一条一条汇编指令,在程序运行过程中按照定义,就可以有不同的寻址方式,这个就是汇编的内容了,其实不同类型的变量就是寻址方式的不同,说到底还是存储位置不同。另...原创 2018-07-31 21:24:21 · 1397 阅读 · 0 评论