
面试相关
面试相关整理
Lailikes
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式
● 请问你用过哪些设计模式,介绍一下单例模式的多线程安全问题 参考回答: 常见的设计模式如下: 单例模式:单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有三个要素:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 工厂模式:工厂模式主要解决接口选择的...转载 2019-06-04 09:54:48 · 302 阅读 · 0 评论 -
算法与数据结构
一、树 ● 请你来说一说红黑树和AVL树的定义,特点,以及二者区别 参考回答: 平衡二叉树(AVL树): 平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。一句话表述为:以树中所有结点为根的树的左右子树高度之差的绝对值不超过1。将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只可...转载 2019-06-04 09:53:38 · 957 阅读 · 0 评论 -
Redis
● 请你回答一下mongodb和redis的区别 参考回答: 内存管理机制上:Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据(不止LRU,还有好几种淘汰策略)。MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。 支持的数据结构上:Redis 支持的数据结构丰富,包括hash、...转载 2019-06-03 14:50:14 · 253 阅读 · 0 评论 -
MySQL
● 请你说一说mysql的四种隔离状态 参考回答: Mysql主要包含四种隔离状态:(脏读是指读到未提交的写数据,幻读是指读到没有提交的插入数据) 事务隔离级别 脏读 不可重复读 幻读 读未提交(read-uncommitted) 是 是 ...转载 2019-06-03 14:42:17 · 230 阅读 · 0 评论 -
数据库基础
● 请你说一说数据库索引 参考回答: 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。 索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。 ● 请你说一说数据库事务 参考回答: 数据库事务(D...转载 2019-06-03 14:33:15 · 264 阅读 · 0 评论 -
计算机网络
● 请你说一下TCP怎么保证可靠性,并且简述一下TCP建立连接和断开连接的过程 参考回答: TCP保证可靠性: (1)序列号、确认应答、超时重传 数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是...转载 2019-06-01 16:55:05 · 2024 阅读 · 0 评论 -
操作系统(三)
● 请你来说一说协程 参考回答: 1、概念: 协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。 例如: def A() : print '1' print '2' print '3' def B() : print 'x' print 'y' print 'z' 由协程运行...转载 2019-05-31 11:11:48 · 928 阅读 · 0 评论 -
操作系统(二)
● 请你讲述一下互斥锁(mutex)机制,以及互斥锁和读写锁的区别 参考回答: 1、互斥锁和读写锁区别: 互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象。当获取锁操作失败时,线程会进入睡眠,等待锁释放时被唤醒。 读写锁:rwlock,分为读锁和写锁。处于读操作时,可以允许多个线程同时获得读操作。但是同一时刻只能有一个线程可以获得写锁。其它获取写锁失败的线程都会进入睡眠状...转载 2019-05-31 10:36:41 · 1034 阅读 · 0 评论 -
操作系统(一)
请你说一下进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的 参考回答: 基本概念: 进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发; 线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令...转载 2019-05-27 09:28:57 · 1043 阅读 · 0 评论 -
C++11
● 请问C++11有哪些新特性? 参考回答: C++11 最常用的新特性如下: auto关键字:编译器可以根据初始值自动推导出类型。但是不能用于函数传参以及数组类型的推导 nullptr关键字:nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型;而NULL一般被宏定义为0,在遇到重载时可能会出现问题。 智能指针:C++11新增了std::shared_ptr、std:...转载 2019-05-22 10:25:38 · 344 阅读 · 0 评论 -
编译与底层
● 请你来说一下一个C++源文件从文本到可执行文件经历的过程? 参考回答: 对于C++源文件,从文本到可执行文件一般需要四个过程: 预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件。 编译阶段:将经过预处理后的预编译文件转换成特定汇编代码,生成汇编文件 汇编阶段:将编译阶段生成的汇编文件转化成机器码,生成可重定位目标文件 链接阶段:将...转载 2019-05-21 09:49:10 · 660 阅读 · 0 评论 -
面向对象与泛型编程
● 请你回答一下什么是右值引用,跟左值又有什么区别? 参考回答: 右值引用是C++11中引入的新特性 , 它实现了转移语义和精确传递。它的主要目的有两个方面: 1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。 2. 能够更简洁明确地定义泛型函数。 左值和右值的概念: 左值:能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。 右值:不...转载 2019-05-21 09:10:44 · 617 阅读 · 0 评论 -
类和数据抽象
请你来说一下C++中类成员的访问权限 参考回答: 参考回答:C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。在类的外部(定义类的代...转载 2019-05-21 09:07:23 · 302 阅读 · 0 评论 -
容器和算法
● 请你来说一下map和set有什么区别,分别又是怎么实现的? 参考回答: map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调 RB-tree 的操作行为。 map和set区别在于: (1)map中的元素是key-value(关键字—值)对...转载 2019-05-16 20:52:22 · 832 阅读 · 0 评论 -
基本语言
目录 ● 说一下static关键字的作用 ● 说一下C++和C的区别 ● 说一下C++中static关键字的作用 ● 说一说c++中四种cast转换 ● 请说一下C/C++ 中指针和引用的区别? ● 给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码 ● 请你说一下你理解的c++中的smart pointer四个智能指针: shared_ptr,uni...转载 2019-05-15 10:15:15 · 1200 阅读 · 0 评论