面试宝典
文章平均质量分 84
BIG_GENERAL_DD
好好学习,天天向上.
展开
-
魔术师的猜牌术
魔术师的猜牌术(一维数组)魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1,2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子转载 2017-04-15 11:05:28 · 6525 阅读 · 0 评论 -
数据库与SQL语言 知识点总结
数据库知识数据库系统DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统。一个典型的数据库系统包括数据库、硬件、软件(应用程序)和数据库管理员(DBA)4个部分。根据计算机的系统结构,DBS分成集中式、客户/服务式、并行式、分布式。 E-R模型 数据库逻辑结构设计中,将E-R模型转换为关系模型应遵循相关原则。对于3原创 2017-08-31 09:20:21 · 926 阅读 · 0 评论 -
(欧)第15章 设计模式与软件测试
软件模式设计模式关注的重点在于通过经验提取的”准则或指导方案“在设计中的应用,因此在不同层面考虑问题的时候形成了不同问题领域上的模式。模式的目标:把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式。因此,模式是个经验提取的准则,并且一次次的实践中得到验证。软件测试是指使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验软件是否满足规定的需求或弄清预期结原创 2017-08-30 10:02:18 · 431 阅读 · 0 评论 -
关于操作系统必知必会-进程与线程
1. 进程的有哪几种状态,状态转换图,及导致转换的事件。 运行状态:进程正在处理机上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态。就绪状态:进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。阻塞状态,又称等待状态:进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输原创 2017-09-09 12:05:28 · 665 阅读 · 0 评论 -
(欧) 第5章 程序设计基本概念
1 分析下列程序:#includeusing namespace std;int i=1;int main() { int i=i; cout<<i<<endl;}输出结果是0.分析:对于int i=i;这样的写法在C++中是完全合法的(但是不合理)。int i=i,i变量从声明的那一刻开始就是可见的了,main()里的i不是1,因为它和main()外的i无关,而是一个原创 2017-09-26 20:57:14 · 332 阅读 · 0 评论 -
(欧) 第6章 预处理、const与sizeof
1、分析下列程序:#include#define SUB(x,y) x-y#define ACCESS_BEFORE(element,offset,value) *SUB(&element,offset)=valueusing namespace std;int main() { int i;int array[10]={1,2,3,4,5,6,7,8,9,10}; ACCE原创 2017-09-27 13:05:31 · 615 阅读 · 0 评论 -
(欧) 第17章 数据库与SQL语言
数据库理论1 设有关系R(S,D,M),其函数依赖集F={S->D,D->M},则关系R至多满足A、1NF B、2NFC、3NF D、BCNF分析:数据库模式的4个范式问题。1NF:第一范式。如果关系模式R的所有属性的值域中每个值都是不可再分解的值,则称R属于第一范式模式。如果某个数据库模式都是第一范式的,则称该数据库模式属于第一范式的数据库模式。2NF:第二范式。如果关系原创 2017-09-03 15:54:59 · 561 阅读 · 0 评论 -
(欧) 第7章 指针与引用
指针是C++提供的一种颇具特色的数据类型,允许直接获取和操纵数据地址,实现动态存储分配、一个数据对象的内存地址称为该数据对象的指针。指针可以表示各种数据对象,如简单变量、数组、数组元素、结构体,甚至函数。1 指针和引用的区别(1)非空区别。任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。而指针可以指向空值。 不存在指向空值的引用说明使用引用的代码效率比使用指针原创 2017-09-28 14:07:16 · 330 阅读 · 0 评论 -
(欧) 第8章 循环、递归与概率
一个过程或函数直接调用自己本身或通过其他的过程或函数调用语句间接调用自己的过程或函数,称为递归过程或函数。1、递归函数用来实现统计字符串中第一个空字符前面字符长度。举例来说:char buf[]={'a','b','c','d','e','f','\0','x','y','z'};字符串buf,当输入N=10或20,期待输出为6;当输入N=3或5,期待输出结果是3或5.in原创 2017-10-14 16:19:43 · 629 阅读 · 0 评论 -
测试(测试开发)类相关面试题for互联网
(1)你对测试的看法,有哪些测试方法?测试就是为了保证可靠性,有白盒和黑盒测试,黑盒测试有边界法等等方法。(2)你在做性能测试的时候是怎样进行测试的 请简单描述一下测试的流程?答:1.准备测试的环境(网络、范围等) 2.计划 设计 方案 3.测试执行,监控 4.问题分析,调优 5. 性能报告测试流程一般测试流程:1.需求分析阶段:只要就是对业务的学原创 2018-01-11 16:39:27 · 14285 阅读 · 0 评论 -
面试题1:OS或者编译器怎么识别是全局变量还是局部变量
OS或者编译器怎么识别是全局变量还是局部变量. 操作系统内根本不关心你是什么变量,它只管代理运行程序,也就是进程,负责这些进程之间的调度,不过如果要说操作系统本身也是进程,那倒可以理解;编译器最终会把程序编译成可执行文件,就是对应的一条一条汇编指令,在程序运行过程中按照定义,就可以有不同的寻址方式,这个就是汇编的内容了,其实不同类型的变量就是寻址方式的不同,说到底还是存储位置不同。另...原创 2018-07-31 21:24:21 · 1400 阅读 · 0 评论 -
面试题2:进程间常用的通信方式有哪些?
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点: 它是半双工的(...转载 2018-07-31 22:03:19 · 5470 阅读 · 0 评论 -
面试题3:Linux中的锁锁锁!!!
一、读写锁读写锁,也叫作共享式互斥锁。有3种状态:读模式的加锁状态、写模式的加锁状态、不加锁状态。写模式加锁状态:在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。读模式加锁状态:所有试图以读模式进行加锁的线程都可以得到访问权,但是任何希望以写模式对此加锁的线程都会阻塞,直到所有的线程释放他们的读锁为止。读写锁非常适合于对数据结构读的次数远大于写的情况。 二、自旋锁...转载 2018-07-31 22:17:09 · 559 阅读 · 0 评论 -
面试题4:数组、指针、引用的联系区别
数组和指针???从两个方面来看,一是作为一个语言,数组是必须要支持的一种数组类型,原因很简单,数组是线性表的直接体现。而从编译器设计者的角度来看,如果为数组专门设计一套实现标准会非常繁杂(事实上,后来C++完成了这一任务,它就是标准库中的vector容器)。这一对矛盾最后以双方的相互妥协得以解决,而解决方法就是利用现有的指针来间接实现数组。编译器为了简化对数组的支持,实际上是利用指针实现了...原创 2018-08-01 09:10:53 · 850 阅读 · 3 评论 -
面试题5:头文件中的ifndef/define/endif有什么作用?
在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。方法:例如要编写头文件test.h在头文件开头写上两行:#ifndef _TEST_H#define _TEST_H//一般是文件名的大写头文件结尾写上一行:#endif这样一个工...原创 2018-08-01 09:41:25 · 23363 阅读 · 0 评论 -
面试题6:由浅入深的进程上下文
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较低级别(用户态),在这个级别,处理器控制着对硬件的...转载 2018-08-01 10:15:32 · 488 阅读 · 0 评论 -
面试题7:构造函数不能虚,析构函数建议虚
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初...转载 2018-08-02 20:01:35 · 477 阅读 · 0 评论 -
面试题8: 你思考过为什么快排比堆排序快吗?
堆排的过程:比如最大堆1. 建立最大堆(堆顶的元素大于其两个儿子,两个儿子又分别大于它们各自下属的两个儿子… 以此类推)2. 将堆顶的元素和最后一个元素对调(相当于将堆顶元素(最大值)拿走,然后将堆底的那个元素补上它的空缺),然后让那最后一个元素从顶上往下滑到恰当的位置(重新使堆最大化)。3. 重复第2步。 关键问题就在于第2步,堆底的元素肯定很小,将它拿到堆顶和原本属于最大元...转载 2018-08-02 20:18:17 · 1877 阅读 · 0 评论 -
操作系统面试重难点总结
面试复习重点——基础篇:操作系统、计算机网络、设计模式【山科大牛陈磊整理】操作系统面试重难点总结 一、操作系统知识点图谱二、面试问题总结参考:面试复习重点——基础篇:操作系统、计算机网络、设计模式操作系统的四个特性。操作系统的主要功能。进程的有哪几种状态,状态转换图,及导致转换的事件。4.进程与线程转载 2017-09-08 14:46:23 · 1675 阅读 · 1 评论 -
关于TCP/IP,必知必会的十个问题
关于TCP/IP,必知必会的十个问题一、TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与O转载 2017-09-07 21:19:00 · 427 阅读 · 0 评论 -
拉丁方阵
构造 NXN 阶的拉丁方阵(2=N=9),使方阵中的每一行和每一列中数字1到N只出现一次。如N=4时:1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 参考点击打开链接,可以发现:若将每 一行中第一列的数字和最后一列的数字连起来构成一个环,则该环正好是由1到N顺序构成;对于第i行,这个环的开始数字为i。按照 此规律可以很容易的写出程序。下面给出构造原创 2017-04-15 13:19:27 · 756 阅读 · 0 评论 -
第5章流程控制
1、条件语句支持嵌套,可以在条件语句和执行语句中再嵌套条件语句。2、while与 do_while区别在于,如果循环条件语句是false,while语句不执行,而do_while保证循环体执行一次。3、break语句用于结束最近的while、do_while、for或switch语句,并将程序的执行顺序传递给紧接在结束语句之后的语句。break语句可以出现在switch原创 2017-05-22 22:12:15 · 234 阅读 · 0 评论 -
第6章 输入输出
1、 C++的输入输出流是指由若干个字节组成的字节序列,这些字节中的数据按顺序从一个对象传送到另一个对象。流实际上是程序中输入或者输出设备的一种抽象表示,表示了信息从源端到目的端的运动。流中内容可以是ACII码、二进制形式数据、图形图像、数字音频等其他形式。2、内存中为每个数据流开辟一个内存缓冲区,用来存放流中的数据。流是与内存缓冲区相对应的,缓冲区中的数据就是流。标准I/O:对标原创 2017-05-22 22:48:37 · 253 阅读 · 0 评论 -
第7章 预处理以及内存管理
1、预处理是指在进行编译的第一遍扫描之前所作的工作。预处理由预处理程序负责完成,当对一个源文件进行编译时,系统将自动引用处理程序对源程序中的预处理部分做处理,处理完毕自动进入对源程序的编译。2、宏定义称为宏代换,宏替换,简称宏。宏最重要的作用就是自动产生代码。宏定义是C语言提供的3种预处理功能其中一种,这3种预处理分别是:宏定义,文件包含和条件编译。 宏定义与操作符的区别:原创 2017-05-23 09:24:44 · 360 阅读 · 0 评论 -
第8章 指针
1、指针用于控制对象的内存地址,可以直接访问和操作系统内存,合理运用指针可以让程序性能得到很好优化。 被用来操作变量地址的特殊类型的变量就是指针变量。指针可以用于数组,或者作为函数的参数,用于访问内存和堆内存的操作。 程序中的所有变量和常量都存在一个内存地址中。这个内存地址表示变量或者常量在内存中存储的位置,同样,函数也有对应的内存地址。内存地址的不同会导致程序执行时有所不同,指针原创 2017-05-23 10:54:52 · 299 阅读 · 0 评论 -
第9章 面向对象与类
面向对象主要解决3个问题:1) 软件和代码重用性比较差;2) 软件和代码的可维护性比较差;3) 软件不能满足客户的需求; 1面向对象和面向过程面向对象,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。面向对象中的任何对象都可以归属某类对象,任何对象都是某一类对象的实例。类是面向对象中描述了一组具有相同的特性原创 2017-05-23 15:17:08 · 330 阅读 · 0 评论 -
第10章 继承
1、派生类转换为基类又称为向上转换,总是隐含进行的。派生类转换为基类总是合法和自动的,即派生类总是可以转换为基类的引用类型。基类转换为派生类需要在确定安全的情况下,使用强制转换来进行转换。 2、虚成员即虚函数,虚函数是用于面向对象中实现多态的机制。核心理念就是通过基类访问派生类定义的函数。虚函数必须是基类的非静态成员函数,访问权限为protected和public,如果函数在基类中声明原创 2017-05-24 21:15:03 · 271 阅读 · 0 评论 -
第11章 函数
1、 把相关的语句组合在一起,并且赋予相应的名称,用这种方法来给程序分块,这种形式的组合就是函数,函数也叫例程或者过程。程序总是从main()函数开始启动。 函数由函数名、参数、返回值类型以及一组包含操作语句的语句块组成。函数可以支持重载,程序就是由函数组成。 2、 形参是函数定义时在形参表中定义的,并且由调用函数时传递函数的实参所初始化。形参为函数提供了已经命名的局部存储空间原创 2017-05-25 14:41:22 · 240 阅读 · 0 评论 -
第12章 模板与STL
1、 STL standard template library即标准模板库,是C++中的标准库。STL主要目的是提供通用的代码,包括:容器、迭代器和算法。 函数模板技术定义了参数化的非成员函数,使得程序能够使用不同的参数类型调用相同的函数。编译器确定了模板函数的实际类型参数,称之为模板的实例化。类模板在调用时需要明确指出使用何种数据类型,而不能有编译器自行指定。实际使用类模板之前,原创 2017-05-25 16:22:03 · 399 阅读 · 0 评论 -
第14章 软件工程
1、软件是一种逻辑产品,是逻辑的程序实现。软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件。软件特点:1)是一种逻辑实体,不是具体的物理实体。2)没有明显的制造过程。3)随着时间推移,需要对软件进行维护以适应运行和业务要求。4)受到计算机系统限制,对计算机系统有着不同程度依赖性。5)尚未完全摆脱手工艺开发方式。6)软件本身是复杂的。7)成本昂贵。原创 2017-05-25 20:41:08 · 749 阅读 · 0 评论 -
第4章C/C++语言基础 4.1~4.2
1、 C/C++中,数据类型分成2种,简单类型和结构类型。简单类型分成整数类型、字符类型、浮点类型、指针类型、枚举类型、void类型。结构类型分成:数组、字符串、记录和文件。C++的基本数据类型属于简单类型,用户可以创建的所有数据类型都是根据基本类型定义。C/C++中基础数据类型分3种:整数型、浮点型、void型。程序中不能定义void类型变量,仅仅是用于说明函数没有返回值或说明原创 2017-05-22 16:57:14 · 225 阅读 · 0 评论 -
第15章 数据库、操作系统、计算机网络
数据库1.数据库DB,是一个按照数据结构来存储和管理数据的软件系统。对数据库进行管理的软件系统成为数据库管理系统,DBMS。 关系数据库范式,指在设计关系数据库时,应当遵守设计原则。(设计一个好的关系数据库,能够避免数据冗余,节省数据存储空间和保障数据的一致性) 关系数据库的设计范式:常见有第一范式、第二范式、第三范式、第四范式、第五范式、BCNF。前三种是常见范式。前一个范式原创 2017-06-02 17:07:59 · 1913 阅读 · 0 评论 -
第4章C/C++语言基础 4.3~4.6
1、左值可以出现在赋值语句的左边或者右边,即左值可以当右值使用;右值只能出现在赋值的右边,不能出现在赋值语句的左边。左值表示程序中必须有一个特定的名字引用到这个值;右值表示程序中没有一个特定的名字引用到这个值。(左值是一个存储地址,也就是一块内存存储数据所要操作的地址。而右值是一个具体的数据或者数值。)变量是左值,可以出现在赋值语句的左边;数字是右值,不能被赋值; 2、C++支原创 2017-05-22 20:48:54 · 264 阅读 · 0 评论 -
计算机网络知识点总结
网络体系结构SAP(访问访问点),OSI参考模型中上层协议实体与下层协议实体之间的逻辑接口叫作服务访问点。两个相邻层间的信息交换,实际上是由两层间的实体通过服务访问点相互作用的。接口以一个或多个服务访问点SAP的形式存在,并通过服务访问点来实现其功能。SAP位于N层和N+1层的逻辑交界面上,是N层实体向N+1层实体提供服务的地方,或者N+1层实体请求N层服务的地原创 2017-08-24 22:52:34 · 5612 阅读 · 0 评论 -
(欧) 第18章 计算机网络及分布式系统
网络结构OSI参考模型中,物理层的作用:透明的传输比特流。对等实体在一次交互作用中传送的信息单位为协议数据单元,包括 控制信息和用户数据。上下层实体之间的接口称为服务访问点SAP,网络层的服务访问点称为IP网络地址,通常分为网络号和主机地址两部分。OSI模型与TCP/IP参考模型物理层:涉及在信道上的传输的原始比特流。比特流。数据链路层:主要任务是加强物理层传输原创 2017-09-03 18:59:37 · 1180 阅读 · 0 评论 -
(欧) 第16章 操作系统
进程1 解释操作系统中的作业、进程、线程、管程各自定义。作业:用户在一次解题或一个事物处理过程中要求计算机系统所做工作的集合。作业是一系列有序步骤组成的。进程:一个程序在一个数据集合上的一次运行过程。所以一个程序在不同数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。线程:线程是进程的一个实体,是被系统独立调度和执行的基本单位。管程:定义了一个数据结构和在该原创 2017-08-30 15:49:13 · 655 阅读 · 0 评论 -
约瑟夫问题
约瑟夫问题的两个O(log n)解法这个是学习编程时的一个耳熟能详的问题了:n个人(编号为0,1,...,n-1)围成一个圈子,从0号开始依次报数,每数到第m个人,这个人就得自杀,之后从下个人开始继续报数,直到所有人都死亡为止。问最后一个死的人的编号(其实看到别人都死了之后最后剩下的人可以选择不自杀……)。这个问题一般有两种问法:给出自杀顺序。不少数据结构初学书原创 2017-04-15 09:19:23 · 713 阅读 · 0 评论 -
面试题9: const、static、volatile关键字使用说明
关于const关键字的用法,潜意识下就会想到 修饰变量,一直没有深入挖掘。最近在面试的时候常常会被问到const、static、votaile等关键字的使用与区别。借此机会,重新复习总结关于此关键字的使用。 1、首先看一下,const与宏定义之间的比较:宏作用: 在开发中会把一些常用的变量的值定义成宏;const作用: 1.用于修饰右边变量(基本变量,指针变量) ...原创 2018-08-16 15:01:31 · 2654 阅读 · 4 评论