面试题
Lawrence_121
千里之行,始于足下
展开
-
面试题之斐波那契数列
简介: 斐波那契数列是意大利著名的数学家,他最重要的研究成果是在不定分析和数学论方面,他的斐波那契数列成为世人热衷研究的问题。*:面试此题的几率也很大。特点: a1,a2已知 a(n)=a(n-1)+a(n-2) n>=3应用: 兔子繁殖问题,树枝问题,上楼方式问题,蜂房问题,声音问题,花瓣问题。。。。。详解:原创 2017-11-01 09:31:15 · 713 阅读 · 2 评论 -
面试:快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!
/**********************************************************************将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0;因此问题可以转化为判断1后面是否跟了n个0就可以了。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去...转载 2018-09-21 09:42:15 · 997 阅读 · 0 评论 -
Linux详解
一、常用操作以及概念 快捷键 求助 关机 PATH sudo 包管理工具 发行版 VIM 三个模式 GNU 开源协议 二、磁盘 磁盘接口 磁盘的文件名 三、分区 分区表 开机检测程序 四、文件系统 分区与文件系统 组成 文件读取 磁盘碎片 block inode 目录 日志 挂载 目录配置 ...转载 2018-10-06 20:16:13 · 324 阅读 · 0 评论 -
Socket
一、I/O 模型一个输入操作通常包括两个阶段:等待数据准备好 从内核向进程复制数据对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。Unix 有五种 I/O 模型:阻塞式 I/O 非阻塞式 I/O I/O 复用(select 和 poll) 信号驱动式 I/O...转载 2018-10-17 22:29:58 · 125 阅读 · 0 评论 -
计算机操作系统总结
一、概述基本特征1. 并发并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。并行需要硬件支持,如多流水线或者多处理器。操作系统通过引入进程和线程,使得程序能够并发运行。2. 共享共享是指系统中的资源可以被多个并发进程共同使用。有两种共享方式:互斥共享和同时共享。互斥共享的资源称为临界资源,例如打印机等,在同一时间只允许一个进程访问,...转载 2018-10-07 22:52:16 · 860 阅读 · 0 评论 -
设计模式
一、概述设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。源码以及 UML 图二、创建型1. 单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。...转载 2018-10-18 18:44:40 · 166 阅读 · 0 评论 -
已知前序(先序)与中序输出后序
已知前序(先序)与中序输出后序:前序:1, 2, 3, 4, 5, 6(根左右)中序:3, 2, 4, 1, 6, 5(左根右)分析:因为前序(根左右)最先出现的总是根结点,所以令root为前序中当前的根结点下标(并且同时把一棵树分为左子树和右子树)。start为当前需要打印的子树在中序中的最左边的下标,end为当前需要打印的子树在中序中最右边的下标。递归打印这棵树的后序,递归出口为star...转载 2018-10-18 19:46:46 · 218 阅读 · 0 评论 -
C++中的类所占内存空间总结
类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的。摘抄部分: 成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的...转载 2018-10-19 22:53:49 · 230 阅读 · 0 评论 -
设有两个事务T1,T2,其并发操作如下所示,下面评价正确的是()
设有两个事务T1,T2,其并发操作如下所示,下面评价正确的是()步骤 T1 T21 读A=1002 读A=1003. A=A+10写回4. A=A-10写回 正确答案: D 你的答案: C (错误)...原创 2018-10-20 09:24:11 · 39518 阅读 · 4 评论 -
下列哪个IP地址可以分配给一台计算机?
下列哪个IP地址可以分配给一台计算机? 正确答案: D 你的答案: B (错误)256.1.3.4197.3.11.0199.5.8911.15.33.235ip 地址是由网络地址和主机地址组成的,如一个C类网络地址的前3个字节用来表示网络号,只有一个字节被用来表示主机地址:网络.网络.网络.主机(192.168.100.102)有效的主机ID:将所有...原创 2018-10-20 10:26:45 · 12471 阅读 · 0 评论 -
HTTP的会话有四个过程,请选出不是的一个()
1.HTTP的会话有四个过程,请选出不是的一个(D)A.建立连接B.发出响应信息C.发出请求信息D.传输数据分析:HTTP协议客户端连上web 服务器后,若想获得 web 服务器中的某个 web 资源,需遵守一定的通讯格式, HTTP 协议用于定义客户端与 web 服务器通迅的格式。WEB浏览器与 WEB 服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是 ...转载 2018-10-20 17:39:28 · 7216 阅读 · 0 评论 -
1024! 末尾有多少个0?
将1024!看做是一个很长的乘式,根据乘法的结合律,可以找出所有小于1024的数中相乘结果末尾为0的因子。 可以想到末尾为0的数与其他数相乘、5的倍数与2的倍数相乘,都会得到末尾为0的数; 进一步想末尾为0的数包含在5的倍数中,所以只要找出所有5的倍数与2的倍数相乘就能得到0; 2的倍数的个数是远远大于5的倍数的,所以只要找出长乘式中的所有5的个数就能解决问题; ...转载 2018-10-20 23:58:31 · 749 阅读 · 0 评论 -
操作系统之死锁
下述解决死锁的方法中,属于死锁预防策略的是?正确答案: B 你的答案: A (错误)A.银行家算法B.资源有序分配法 C.资源分配图化简法D.撤消进程法出现死锁的原因对资源的争夺会导致死锁,造成资源争夺有多方面的原因,比如资源本身数量有限、错误的使用锁和信号量控制有以下四个必要条件 互斥使用(资源独占):一个资源在某一时间点只能给一个进程使用 占有资...转载 2018-10-21 16:21:24 · 296 阅读 · 0 评论 -
C和C++的联系与区别
面向过程的思路:分析解决问题所需的步骤,用函数把这些步骤依次实现。面向对象的思路:把构成问题的事务分解为各个对象,建立对象的目的,不是完成一个步骤,而是描述某个事务在解决整个问题步骤中的行为。从上述描述可以看出,其实面向对象和面向过程是两种思考解决问题的方式,其差异主要在于思考的角度。C语言是面向过程的编程,它最重要的特点是函数,通过main函数来调用各个子函数。程序运行的顺序都是程序...转载 2018-10-29 22:32:57 · 565 阅读 · 0 评论 -
数据库系统原理
一、事务概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 ACID1. 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 2. ...转载 2018-10-27 22:02:31 · 174 阅读 · 0 评论 -
定义结构体时的初始化默认值
结构体变量定义时的初始化问题:默认值同变量一样,int型的为0,指针型的为“NULL”------------并不是整个结构体为NULL,其中的int型还是有值0的,只是指针型的为NULL#include <iostream>using namespace std;struct{ int a; int b; int *c;}t = { 1 };...转载 2018-11-06 22:31:44 · 26102 阅读 · 0 评论 -
C语言中的六个避坑糖,吃了再也不怕长蛀牙
1.在C语言中,不正确的int类型(默认是在16位机器中)的常数是(A) A.32768 B.0 C.0xAF D.037 解析: 我们常常看到int取值范围为-32768~32767,实际上int的取值范围依赖于计算机系统,在16位机器中,int占16位,取值范围为前面所说的-32768~32767(-2^16~2^16-1)。 ...原创 2018-11-10 10:24:01 · 752 阅读 · 0 评论 -
类型转换引发的思考
题目:下面 程序的结果是多少?#include <iostream>using namespace std;int main(){ float a = 1.0f; cout << (int)a << endl; cout << &a << endl; cout << (int&)a &a原创 2018-09-20 17:58:23 · 153 阅读 · 0 评论 -
C++中assert的作用
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运...原创 2018-09-10 15:18:41 · 227 阅读 · 0 评论 -
重点掌握-----快速排序
快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。思想: 1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素; 2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边; 3.对左右两个分区...原创 2018-03-29 15:10:12 · 579 阅读 · 0 评论 -
TCP协议详解
TCP的主要特点:TCP是面向连接的运输层协议。也就是说应用程序在传送数据前,必须建立连接。 每一条TCP连接只能有两个端点,即(一对一),每个端点由二元组(IP,端口号)唯一标识。注(IP,端口号)也叫socket TCP提供全双工通信。 TCP提供可靠交付的服务。TCP连接传送的数据无差错,不丢失,不重复,并且按序到达。 面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字...原创 2018-05-07 21:20:11 · 324 阅读 · 0 评论 -
用户在浏览器中输入www.taobao.com直到看到页面之间发生了什么?
1.浏览器向DNS请求解析出www.taobao.com的IP地址(60.28.242.250)2.浏览器发起HTTP请求(http使用了面向连接的TCP作为传输层协议)3.web服务器接受并解析请求信息,查找指定资源,可能访问数据库,返回http响应消息4.浏览器接收到解析内容,并显示。...原创 2018-06-14 10:46:47 · 3068 阅读 · 0 评论 -
全面了解MySql中的事务
数据库的四个特性: ⑴ 原子性(Atomicity) 原子性是指事务是数据库的逻辑工作单位,不可分割,事务中包含的各操作要么都做,要么都不做⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,...转载 2018-06-10 10:28:41 · 196 阅读 · 0 评论 -
进程和线程的区别
概念: 进程:正在运行的程序。专业点说,进程是程序执行时的一个实例。 线程:线程是进程的一个实体。区别:进程是资源分配的最小单元,线程是程序执行的最小单元。其实它们主要区别在每个进程有自己地址空间,线程则共享地址空间。基于第二点,实际上只有进程间需要通信(进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制),同一个进程的线程共享地址空间,没有...原创 2018-06-10 11:47:52 · 171 阅读 · 0 评论 -
sizeof和strlen的区别
sizeof和strlen的区别strlen计算字符串的长度,以'\0'为字符串结束标志sizeof是分配的数组实际所占的内存空间大小,不受里面存储内容,计算栈中分配的大小例如char *str = "1111111abcd";char str1[9] = {1};sizeof(str) = 4; //是指指针所占的字节大小,在c/c++中一个指针占4个字节(32位系统)...原创 2018-07-24 12:00:32 · 141 阅读 · 0 评论 -
typedef和#define的区别
1.typedeftypedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名。typedef的作用主要有两点:1.1 简化复杂的类型声明简化复杂的类型声明,或给已有类型起一含义明确的别名;如:typedef bool (*FuncPointer)(int,...转载 2018-07-24 19:59:52 · 163 阅读 · 0 评论 -
const char *p,char const *p和char *const p区别(面试题常见)
请看下面三种定义:const char *p;char const *p;char * const p;请问三者有什么区别?先看第一种,先看p,根据优先级它和*结合,是指针,指向char类型,但是char前面有一个const修饰,所以p所指向的内容为const类型不可修改。 第二种:由于没有const *的运算,若出现const *的形式,则const实际上是修...原创 2018-07-27 18:23:01 · 51591 阅读 · 5 评论 -
在单链表的第i个位置后插入一个节点(面试题)
/* 思路: 面对这题,我们首先要冷静。 可以先从常规想,既然要插入一个结点,可以把它分成两大类:之前有无节点,如果有,根据判断条件,将其插到符合节点的后面,但你又的思考,插入位置是头部还是中间。 第二大类:就是如果之前没提供节点,那么插入的节点就是这个链表唯一的节点,切记还有一种情况。 ...原创 2018-08-01 16:24:53 · 13724 阅读 · 0 评论 -
猴子选大王
题目: 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用环形链表实现思路: 对于链表题,我们要先定义它的结构体,比如像这道题,既然要排号,我们将该定义一个id,保存编号信息。 提示中要求用环形链表,我们就要想何为环形链表,对于单链表而言,无非就...原创 2018-08-03 15:55:06 · 209 阅读 · 0 评论 -
linux C/C++服务器后台开发面试题总结
一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网开发公司的主流web后台开发语言,主要框架为mvc模型,如smarty,yaf,升级的PHP7速度较快,对服务器的压力要小很多,在新浪微博已经有应用,对比很明显。2)C/C++开发语言,C语...转载 2019-07-14 18:21:49 · 583 阅读 · 1 评论 -
同步、异步与阻塞与非阻塞的区别
开场白: 异步就是异步 网上有许多I/O模型的相关文章,主要涉及四个概念,同步,异步,阻塞,非阻塞。有些文章将这四个作了两两组合,于是就有了:异步阻塞和异步非阻塞,可以明确的说,这完全是牵强之理解,无论<Unix网络编程>一书中所列的I/O模式,还是POSIX标准,都没有提这两个概念。异步就是异步!只有同步才有阻塞和非阻塞之分。 ...转载 2018-08-21 17:31:26 · 7510 阅读 · 5 评论 -
c++经典面试题之String类的实现
//mystring.h#include<iostream>using namespace std;class String{ char *str; int len; enum{CINLIM=90}; //输入字符不能超过90public: String(const char *s); String(); String(...原创 2018-09-04 19:29:43 · 1105 阅读 · 0 评论 -
Test b() 还是Test b?
见下面一段代码,问语句1、2、3、4中,在编译时哪一句会报错?#include<iostream>using namespace std;struct Test{ Test(int){} Test(){} void fun(){ cout<<"fun"<<endl; }};int main(){ Test a(1); //...转载 2018-09-06 11:17:02 · 441 阅读 · 0 评论 -
绝不能让构造函数为虚
构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。2 虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期...原创 2018-09-10 11:12:43 · 130 阅读 · 0 评论 -
尽量使用内联函数,避免使用#define
C的宏定义可以带参数,很多短小的函数都用宏定义来实现。例如:#define DIV(x,y) ((x)/(y))C++中用inline函数来取代C语言中类似函数的宏定义。区别: 在调用一个内联函数时,编译器像处理普通函数一样首先做类型安全检查和自动类型转换,如果检查通过,内联函数的代码就会直接替换函数调用,就像宏展开一样。而C语言的宏定义在预处理时只会盲目地做宏展...原创 2018-09-10 11:24:22 · 508 阅读 · 0 评论 -
归并排序
基本思想: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而之)。分而治之 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采...转载 2018-11-08 11:18:17 · 122 阅读 · 0 评论