自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 【面经笔记】TCP流量控制、阻塞控制

流量控制:窗口控制滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送方的窗口大小由接受方确定,目的在于控制发送速度。发送端根据接收端的实际接收能力控制发送的数据量,接收端主机向发送端主机通知自己可以接收的数据的大小,发送端会发送不超过这个限度的数据。发送端会不时发送窗口探测,防止窗口更新

2017-07-30 17:49:09 1216

原创 【面经笔记】红云融通电话二面

问到各种深度学习的参数 ,需要了解参数的含义及在实际工程应用中大概值如损失,迭代次数,样本量CUDA的优化措施有哪些纹理内存,全局内存,共享内存,线程束,大核,小核 还说了一个名词,忘记了叫啥,大概含义是:内存访问延迟可以被并行计算掩盖解释一下OpenMPOpenMP是一种API,用于编写可移植的多线程应用程序,无需程序员进行复杂的线程创建、同步、负载平衡和销毁工作。什么是脏读,脏写

2017-07-30 16:48:24 758

原创 【算法题】数组分段

清洁工:假设有m个房间,清洁每个房间耗时用一个数组表示,10、20、30、40、50、60、70、80、90,安排n个清洁工,将连续的房间分成n份,每部分耗时求和,其最大值为此种分法的总耗时。求最快的耗时是多少。例如3个清洁工的话,10 20 30 40 50 | 60 70 | 80 90,此时是最快的,耗时为170。 题目:给定一个数组,和一个值k,数组分成k段。要求这k段子段和最大值

2017-07-30 11:00:24 3921

原创 【面经笔记】linux I/O模式

阻塞、非阻塞I/O阻塞I/O:进程阻塞直到操作完成,再返回非阻塞I/O:进程在内核还没准备好数据情况下立即返回,然后不断访问直到获取数据同步、异步I/O同步I/O在做IO操作时会将进程阻塞 阻塞I/O、非阻塞I/O都是同步I/O: 解释:非阻塞I/O在内核准备好数据后还是要阻塞进程,进行IO操作。异步I/O则不一样,当进程发起IO操作后,直接返回,直到内核发送信号,告诉进程说I

2017-07-29 21:13:35 319

原创 【面经笔记】TCP

确认应答当数据到达接收主机时,接收端主机会返回一个确认应答:ACK如果发送端一定时间内没有等到确认应答,认为数据丢失,并重发。没有收到确认应答有可能是因为:数据丢失 或者 应答丢失为了避免应答丢失时,接收端重复接收数据,需要能识别是否已接收数据、又能判断是否需要接收:按顺序给发送的数据的每个字节标上编号:序列号接收端查询接收数据TCP首部的序列号和包含的数据的长度,将自己下一步应该接收的序列号作为确

2017-07-29 10:52:57 721

原创 【面经笔记】网络编程

OSI(open system iterconnection)七层模型应用层表示层会话层传输层网络层数据链路层物理层协议应用层:远程登录协议Telnet、文件传输协议FTP、超文本传输协议HTTP、域名服务DNS等传输层:TCP:面向连接的可靠的传输协议。建立连接需要三次握手,提供了数据确认和数据重传的机制。应用在数据完整性要求高的场景UDP:无连接的、不可靠的传输协议。不需

2017-07-27 16:13:39 766

原创 【面经笔记】管道

进程

2017-07-27 16:13:17 280

原创 【面经笔记】MFC

MFC下多线程的APIcreatethread() 创建新线程,返回句柄closehandle() 关闭句柄,减少线程内核对象的引用计数,当线程运行结束且引用计数为0 ,系统释放内核对象。waitforsingleobject() 等待线程结束互斥锁:createmutex() 创建互斥对象,返回句柄,第二个参数指定互斥对象是否为当前线程拥有waitforsingleobject

2017-07-27 09:57:28 958

原创 【面经笔记】函数调用过程

叙述函数调用的过程_stdcall, _cdecl区别

2017-07-26 14:41:51 410

原创 【面经笔记】内存泄漏检测

参考: http://www.cnblogs.com/juncheng/archive/2009/11/12/1602165.htmlnew/new[]表达式会首先调用operator new/new[]操作运算符函数开辟内存,再调用构造函数构造对象而为了给操作运算符函数传递额外的参数:文件名与行号,需要使用定位new表达式(C++primer P729) new(void ) type

2017-07-26 10:16:32 336

原创 【读书笔记】构造、析构、赋值(Effective C++)

介绍所有的构造函数C++默默编写了哪些函数?默认构造函数、拷贝构造函数、赋值运算符函数、析构函数为什么不要在构造、析构函数中调用虚函数?C++的构造函数可以为虚函数吗?如果构造函数是虚函数,那么就需要通过vtable 来调用,但此时面对一块 raw memeory,到哪里去找虚函数表指针呢?毕竟,虚函数表指针是在构造函数中才初始化的啊,而不是在其之前。因此构造函数不能为虚函数。 inline 是构

2017-07-25 10:06:32 338

原创 【面经笔记】链表归并排序

#include <iostream>using namespace std;class Node{public: Node(){ next = NULL; val = 0; }; Node(int i){ next = NULL; val = i; }; Node* next; int val;};Node* merge(Node* pleft, Node*

2017-07-24 21:17:18 239

原创 【面经笔记】访问私有变量

有一个类里面只有一个私有int类型成员变量,也有一个类对象,怎么访问这个变量class A{public: A(int lhs) :i(lhs){ }; virtual void func(){};private: int i;};int main(){ A a(1); int * b = (int *)&a; cout << *(b+

2017-07-24 19:47:37 260

原创 【面经笔记】排序算法的空间、时间复杂度

直接选择排序时间复杂度:O(n2)O(n^2) 空间复杂度:O(1)O(1) 稳定性:不稳定插入排序时间复杂度:O(n2)O(n^2) 空间复杂度:O(1)O(1) 稳定性:稳定折半插入排序 折半插入排序是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法

2017-07-24 17:17:41 434

原创 【面经笔记】范围搜索/最近邻搜索

例1:平面上百万个点,设计数据结构求每个点最近的k个点例2:游戏中打怪时已经各个小怪的坐标,你放一个技能是圆形范围,快速求能打到的小怪KD树:http://www.cnblogs.com/v-July-v/archive/2012/11/20/3125419.html最近邻搜索: k近邻搜索:参考: http://blog.csdn.net/dark_scope/article/detai

2017-07-24 16:15:31 1842

原创 【面经笔记】线程、多线程 - 死锁、读写、消费者问题、TLS【续2】

死锁:定义:一组相互竞争资源或进行通信的进程间的永久阻塞。死锁条件:互斥、占有并等待、不可剥夺、(循环等待)死锁预防:解除死锁的必要条件,排除发生死锁的可能性。互斥:不可禁止占有并等待:要求进程一次性请求所有资源,阻塞直到所有请求满足不可剥夺:进程若进一步请求被拒绝,则需释放最初占有的资源;优先级高的进程可以抢占优先级低的进程资源。死锁避免:允许三个发生死锁的条件,但是通过明智的策略,确

2017-07-23 20:30:17 633

原创 【面经笔记】线程、多线程【续1】

各种锁pthread中提供的锁有:pthread_mutex_t, pthread_spinlock_t, pthread_rwlock_t。pthread_mutex_t是互斥锁,同一瞬间只能有一个线程能够获取锁,其他线程在等待获取锁的时候会进入休眠状态。因此pthread_mutex_t消耗的CPU资源很小,但是性能不高,因为会引起线程切换。pthread_spinlock_t是自旋锁,同

2017-07-22 22:36:21 177

原创 【面经笔记】线程、多线程

多线程方式、threadlocal,各种锁,synchronized和lock , 多线程中的wait和sleep区别,notify的作用 , 线程池对线程的管理方式,包括初始化线程的方法、线程创建后的管理、指派任务的方式 线程池的了解、优点、调度处理方式和保护任务队列的方式 多线程可以使用多核吗 多线程同步、 线程池、 无锁编程: 有锁编程的问题与解决方法:阻塞(效率下降)、死锁、

2017-07-22 11:43:24 444

原创 【面经笔记】lib dll区别

http://www.cppblog.com/amazon/archive/2009/09/04/95318.html两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库 一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库共有两种链接方式: 动态链接使用动态链接库,允许可执行模块(.dl

2017-07-20 21:49:46 364

原创 【面经笔记】哲学家进餐问题

哲学家进餐问题场景:5个哲学家,5把叉子,5盘意大利面(意大利面很滑,需要两把叉子才能拿起)大家围绕桌子,进行思考与进食的活动。哲学家的活动方式为:要么放下左右手刀叉进行思考,要么拿起刀叉开始吃饭(刀叉拿起时,必须拿两把,而且只能左右手依次拿,先左手拿左边,后右手拿右边,或者先右手拿右边,左边拿左边)。其只有这两种交替状态。哲学家们面临的问题为:如何安排哲学家们一致的行动逻辑,保证他们至少有人且尽可

2017-07-17 12:02:20 745

原创 【面经笔记】析构函数一般写成虚函数的原因

为多态性质的基类声明虚析构函数:继承类对象经由一个基类指针被删除,若基类是非虚的析构函数,继承类的成分没有被销毁,造成局部销毁对象,形成资源泄漏,败坏数据结构。当一个类不被当做基类、或者不具有多态性时,令其析构函数为虚函数是多余的,浪费内存。

2017-07-17 10:37:05 1176

原创 【面经笔记】STL(续)

hashset(散列集合)、hashmap(散列映射表)的实现方式:hashtable(散列表)map、set、multiset、multimap的实现方式:红黑树

2017-07-16 21:19:05 373

原创 【面经笔记】STL

空间配置器:为什么不说allocator是内存配置器:空间不一定是内存,空间也可以是磁盘或其他存储介质,你可以写一个allocator直接向硬盘取空间。SGI STL的配置器名为alloc,是缺省的空间配置器。 虽然也定义了一个符合部分标准的allocator配置器,但只是把C++中new和delete简单包装而已,性能不佳。 SGI std::alloc:new包含了:operator

2017-07-16 21:10:37 706

原创 【面经笔记】STL库的介绍

STL库的介绍STL**六大组件**简介1、容器(Containers):各种数据结构,如Vector,List,Deque,Set,Map,用来存放数据,STL容器是一种类模板。2、算法(Algorithms):各种常用算法如Sort,Search,Copy,Erase,从实现的角度来看,STL算法是一种函数模板。3、迭代器(Iterators):扮演容器与算法之间的胶合剂,是所谓的“泛型指针”,

2017-07-15 22:39:03 559

原创 【面经笔记】struct与class的区别

http://blog.csdn.net/yuliu0552/article/details/6717915C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!!有很多人应该已经知道这样一个事实,但总有些不知道的人,看到这些会

2017-07-15 21:26:53 291

原创 【面经笔记】Bloom过滤器处理大规模问题

Bloom过滤器处理大规模问题时的持久化,包括内存大小受限、磁盘换入换出问题 http://www.360doc.com/content/13/1226/18/15234639_340327658.shtml由于BF所用的空间非常小,所有BF可以常驻内存,Key-Value系统中Value 保存在磁盘中,使用布隆过滤器可以快速判断某个Key对应的Value是否存在,因此可以避免很多不必要的磁盘

2017-07-15 21:03:33 1710

原创 【面经笔记】哈希表

http://blog.csdn.net/xxpresent/article/details/55806298哈希表几种方法:直接定址法:取关键字key的某个线性函数为散列地址 Hash(key) = A*key+B除留取余法 :关键值除以比散列表长度小的素数所得的余数作为散列地址 Hash(key) = key % p;字符串:BKDR哈希算法(字符串哈希算法) size_t BKDRH

2017-07-15 18:25:54 509

原创 【面经笔记】TCP超时等待

IP协议的不可靠性:IP协议仅仅负责数据的运输,可以说就是一个运输工; 非常无脑地送数据包,不管包中的数据是否出现错误,也不管数据包送的顺序等等,就算丢包了也不管,就是无脑送。TCP/IP是分工协作的,是互补的: IP只负责运送数据,TCP协议负责数据安全; TCP会在IP收到数据包后丢数据包进行检查,保证确认无误才接受,否则就会通知发送端重新发送那个数据包

2017-07-14 21:43:20 1184

原创 【面经笔记】TCP/IP

位码即tcp标志位,有6种表示:SYN(synchronous 建立连接)ACK(acknowledgement 表示响应、确认)PSH(push 表示有DATA数据传输)FIN(finish 关闭连接)RST(reset 表示连接重置)URG(urgent 紧急指针字段值有效)三次握手:第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第

2017-07-14 20:54:36 505

原创 【面经笔记】cuda、gpu概念

与CUDA相关的几个概念:thread,block,grid,warp,sp,sm。 sp: 小核(流处理器)最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理 sm: 大核(流多处理器)多个sp加上其他的一些资源组成一个sm, streaming multiprocessor. 其他资源也就是存储

2017-07-13 11:55:12 1720

原创 【面经笔记】 MFC消息机制

MFC消息映射机制的具体实现方法:在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,即消息映射表。在消息映射表中,消息与对应的消息处理函数指针是成对出现的。某个类能处理的所有消息及其对应的消息处理函数都列在类所对应的静态表中。当有消息需要处理时,程序只要搜索该消息静态表,查看表中是否含有该消息,如果能处理该消息,则调用对应的消息处理函数。

2017-07-13 11:54:25 473

原创 【面经笔记】C、C++内存管理

C内存管理存储时:执行程序在存储时(没有调入到内存)分为代码区(text)、数据区(data)和未初始化数据区(bss)3个部分。1 代码区(text segment)存放CPU执行的机器指令(machine instructions)。通常,代码区是可共享的(即另外的执行程序可以调用它),因为对于频繁被执行的程序,只需要在内存中有一份代码即可。代码区通常是只读的,使其只读的原因是防止程序意外地修改

2017-07-12 20:33:57 570

原创 【面经笔记】进程间通信方式、线程同步机制

线程进程的区别:进程是资源分配的基本单位、线程是调度的基本单位一个进程可包含多个线程线程又称轻量级进程:进程间切换代价大,线程间切换代价小进程有独立的资源,如内存空间,IO资源等,进程中线程共享这些资源进程间通信常用有4种方式,以下从简单到复杂:1.管道(pipe) 匿名/无名管道: http://blog.csdn.net/shltsh/article/details/4652

2017-07-12 16:58:07 800

原创 【面经笔记】动态规划的原理与本质

与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶

2017-07-12 10:12:00 1300

原创 【面经笔记】红黑树的特性与其在C++ STL中的应用

AVL树和红黑树适合内部存储应用,B树适合外部存储应用AVL树和红黑树都是用旋转保持平衡,AVL树对每个插入操作最多需要两次次旋转(单/双旋),对每个删除操作最多需要O(logn)次旋转;而红黑树对每个插入和删除操作,任何不平衡都会在三次旋转之内解决。查找、插入、删除的时间均为log(n),红黑树的算法时间复杂度和AVL相同,但红黑树的统计性能要好于平衡二叉树,但极端性能略差。平衡二叉树/AVL树:

2017-07-11 22:08:55 3224

原创 【面经笔记】堆排序与topk问题

最大堆的数组实现维持堆函数:h为新元素位置,假设h的两个孩子树已经是最大堆1、 如果D[h]为D[h]、左孩子、右孩子中的最大值,则结束调整。 2、 否则,将X[h]与孩子中的最大值互换,更新h值,返回上一步void KeepHeap(int * array, int len, int h){ int lagest = h; int leftchild = (h << 1)

2017-07-11 11:53:03 1094

原创 【面经笔记】持久化数据结构,序列化与反序列化时机

可持久化数据结构 就是使数据结构可以返回历史版本一般的实现方法是新建有修改的点 其他点与上一版本共用 这样做到空间复杂度带上一个或两个log序列化:将程序中的对象或者数据结构转换成二进制串的过程。反序列化:将在序列化过程中所生成的二进制串转换成对象或者数据结构的过程序列化与反序列化对应于ISO-OSI七层参考模型的表示层,对应到TCP/IP协议栈则是应用层。

2017-07-09 21:48:08 666

原创 【面经笔记】面向对象

面向对象的三大基本特征:封装、继承、多态封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 实现多态,有二种方式,覆盖,函数重载面向对象设计的六大原则单一职责原则(Single-Resposibility

2017-07-09 20:44:30 381

原创 【面经笔记】trie树/字典树

字典树构造及其优化与应用字典树的核心就是空间换时间,利用字符串的公共前缀来避免无谓的字符串比较,降低查询时间。对于统计/查询单词的问题,可将哈希表改进为字典树提升效率。性质: - 根结点不包含字符,除了根结点每个结点都包含一个字符 - 从根结点到某一结点的路径经过的字符连接起来就是该结点对于的字符串 - 查询和建树可以同时进行例:有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16

2017-07-09 20:09:56 1064

原创 【面经笔记】B树、B+树

原文: https://www.nowcoder.com/discuss/27739?type=2&order=1&pos=30&page=2B树、B+树、存储模型参考: http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html http://blog.csdn.net/v_JULY_v/art

2017-07-09 11:33:41 904

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除