
面试题
文章平均质量分 68
xiaxzhou
这个作者很懒,什么都没留下…
展开
-
欢迎使用优快云-markdown编辑器
数据结构算法记录数据结构与算法的面试题原创 2017-05-02 15:38:30 · 376 阅读 · 0 评论 -
【面经笔记】函数调用过程
叙述函数调用的过程_stdcall, _cdecl区别原创 2017-07-26 14:41:51 · 447 阅读 · 0 评论 -
【面经笔记】内存泄漏检测
参考: 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 · 365 阅读 · 0 评论 -
【面经笔记】访问私有变量
有一个类里面只有一个私有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 · 292 阅读 · 0 评论 -
【面经笔记】Windows下的动态链接(DLL)
使用DLL的优点共享、模块化,可方便的组合,重用,升级基地址和RVA当一个PE文件装载时,其进程地址空间中的起始地址就是基地址,对于可执行文件exe,一般为0x400000,对于DLL文件一般为0x10000000。若该地址被占用,则会选用其他空闲的地址,RVA就是一个地址相对于基地址的偏移。声明可以通过_declspec(dllexport)表示该符号是从dll导出的符号,_declspec(dl原创 2017-09-05 11:59:50 · 1743 阅读 · 0 评论 -
【语法】sizeof和strlen
http://blog.youkuaiyun.com/niushuai666/article/details/7677210一、sizeofsizeof(…)是运算符,而不是一个函数。其值在编译时即计算好了。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下: 数组——编译时分配的数组空间大小; 指针——原创 2017-08-31 10:50:18 · 138 阅读 · 0 评论 -
【读书笔记】同步设备I/O与异步设备I/O
同步IO最方便和常用的对设备数据进行读写的函数时ReadFile和WriteFile。 打开设备时如:CreatFile、WSASocket。没有指定FILE_FLAG_VERLAPPED标志,则执行同步IO操作。异步IO打开设备时如:CreatFile、WSASocket。指定FILE_FLAG_VERLAPPED标志,则执行异步IO操作。当调用ReadFile()或WriteFile()时,函原创 2017-09-06 09:18:40 · 385 阅读 · 0 评论 -
【面经笔记】C、C++内存管理
C内存管理存储时:执行程序在存储时(没有调入到内存)分为代码区(text)、数据区(data)和未初始化数据区(bss)3个部分。1 代码区(text segment)存放CPU执行的机器指令(machine instructions)。通常,代码区是可共享的(即另外的执行程序可以调用它),因为对于频繁被执行的程序,只需要在内存中有一份代码即可。代码区通常是只读的,使其只读的原因是防止程序意外地修改原创 2017-07-12 20:33:57 · 615 阅读 · 0 评论 -
【面经笔记】C++语法
C++11有哪些新特性?auto类型推导Override和finallambda表达式constexpr常量表达式智能指针:weak_ptr、shared_ptr、unique_ptrMove语义、右值引用c++中的隐藏、重载、覆盖(重写) 成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。 覆盖是指派生类函数覆原创 2017-09-04 11:42:58 · 740 阅读 · 0 评论 -
【面经笔记】进程间通信方式、线程同步机制
线程进程的区别:进程是资源分配的基本单位、线程是调度的基本单位一个进程可包含多个线程线程又称轻量级进程:进程间切换代价大,线程间切换代价小进程有独立的资源,如内存空间,IO资源等,进程中线程共享这些资源进程间通信常用有4种方式,以下从简单到复杂:1.管道(pipe) 匿名/无名管道: http://blog.youkuaiyun.com/shltsh/article/details/4652原创 2017-07-12 16:58:07 · 855 阅读 · 0 评论 -
【算法题】字符串匹配算法KMP
详解见博客KMP算法#include <iostream>#include <string>#include <vector>using namespace::std;vector<int> GetNext(string str){ vector<int> next(str.size()); if (str.empty()) { return next原创 2017-09-06 09:19:26 · 498 阅读 · 0 评论 -
【面经笔记】
常量表达式:编译期确定值 普通const变量:运行期初始化原创 2017-09-24 11:46:37 · 602 阅读 · 0 评论 -
【面经笔记】TCP
确认应答当数据到达接收主机时,接收端主机会返回一个确认应答:ACK如果发送端一定时间内没有等到确认应答,认为数据丢失,并重发。没有收到确认应答有可能是因为:数据丢失 或者 应答丢失为了避免应答丢失时,接收端重复接收数据,需要能识别是否已接收数据、又能判断是否需要接收:按顺序给发送的数据的每个字节标上编号:序列号接收端查询接收数据TCP首部的序列号和包含的数据的长度,将自己下一步应该接收的序列号作为确原创 2017-07-29 10:52:57 · 767 阅读 · 0 评论 -
【算法题】最小生成树
参考#include <iostream>#include <vector>using namespace std;#define max 99999int func(vector<vector<int>>& map){ int sum(0); int n = map.size(); vector<int> visited(n,0); vector<int> lo原创 2017-09-17 10:04:43 · 429 阅读 · 0 评论 -
【面经笔记】进程调度方式
分为两大类:可剥夺和不可剥夺基于优先级调度:优先级高的进程先运行,可剥夺基于调度策略:选择函数:先进先出(FIFO) 将优先级与队列结合,每个优先级一个队列轮询/轮转 周期性间隔产生中断,中断发生时,当前运行的进程置于就绪队列中,然后基于FIFO策略选择下一个就绪进程。最短进程优先(Shortest Process Next,SPN) 下一次选择预计处理时间最短的进程进行处理,难点是不知道进原创 2017-08-31 10:28:45 · 729 阅读 · 0 评论 -
【面经笔记】TCP如何保证可靠传输
TCP协议如何保证可靠传输参考1、确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就会重传。2、数据校验:TCP报文头有校验和,用于校验报文是否损坏3、数据合理分片和排序:tcp会按最大传输单元(MTU)合理分片,接收方会缓存未按序到达的数据,重新排序后交给应用层。而UDP:IP数据报大于1500字节,大于MTU。这个时候发送方的IP层就需要分片,把数据报分成若干片,是的每一片都原创 2017-09-17 22:08:09 · 3864 阅读 · 1 评论 -
【面经笔记】内存映射、共享内存
知道共享内存吗?额,是把同一块内存映射到两个进程的地址空间?。。。。。。(还不如说不知道)内存映射内存映射主要应用于三种情况:系统使用内存映射文件载入EXE,DLL文件。这节省了大量页交换文件的空间以及程序启动时间。开发人员使用内存映射文件来访问磁盘上的数据文件,这使得我们避免直接对文件I/O操作和文件内容的缓存通过使用内存映射文件,可以实现不同进程间的共享数据(进程间共享内存通信)创建一个原创 2017-09-05 17:05:29 · 1919 阅读 · 1 评论 -
【面经笔记】网络编程
OSI(open system iterconnection)七层模型应用层表示层会话层传输层网络层数据链路层物理层协议应用层:远程登录协议Telnet、文件传输协议FTP、超文本传输协议HTTP、域名服务DNS等传输层:TCP:面向连接的可靠的传输协议。建立连接需要三次握手,提供了数据确认和数据重传的机制。应用在数据完整性要求高的场景UDP:无连接的、不可靠的传输协议。不需原创 2017-07-27 16:13:39 · 809 阅读 · 0 评论 -
【面经笔记】管道
进程原创 2017-07-27 16:13:17 · 301 阅读 · 0 评论 -
【面经笔记】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 · 1792 阅读 · 0 评论 -
【面经笔记】lib dll区别
http://www.cppblog.com/amazon/archive/2009/09/04/95318.html两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库 一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库共有两种链接方式: 动态链接使用动态链接库,允许可执行模块(.dl原创 2017-07-20 21:49:46 · 390 阅读 · 0 评论 -
【——】线程池实现
配置VS2013 使用pthread,参考: http://blog.youkuaiyun.com/k459905889/article/details/48676159 pthread函数使用,参考: http://blog.youkuaiyun.com/dreamintheworld/article/details/52577681 线程池,参考: http://www.cnb原创 2017-08-06 22:05:00 · 600 阅读 · 0 评论 -
【面经笔记】字节对齐
字节对齐以及为什么要字节对齐?字节对齐的相关规则,举例一个char型数据,在内存中会分配多少字节?为什么要字节对齐:需要字节对齐的根本原因在于CPU访问数据的效率问题。假设整型变量(int)的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话需要访问两次内存,第一次取从0x00000002-0x00000003的一个short,第二次取从0x00000004-0x00000005原创 2017-08-01 15:15:59 · 337 阅读 · 0 评论 -
【面经笔记】线程、多线程
多线程方式、threadlocal,各种锁,synchronized和lock , 多线程中的wait和sleep区别,notify的作用 , 线程池对线程的管理方式,包括初始化线程的方法、线程创建后的管理、指派任务的方式 线程池的了解、优点、调度处理方式和保护任务队列的方式 多线程可以使用多核吗 多线程同步、 线程池、 无锁编程: 有锁编程的问题与解决方法:阻塞(效率下降)、死锁、原创 2017-07-22 11:43:24 · 469 阅读 · 0 评论 -
【面经笔记】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 · 531 阅读 · 0 评论 -
【面经笔记】TCP流量控制、阻塞控制
流量控制:窗口控制滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送方的窗口大小由接受方确定,目的在于控制发送速度。发送端根据接收端的实际接收能力控制发送的数据量,接收端主机向发送端主机通知自己可以接收的数据的大小,发送端会发送不超过这个限度的数据。发送端会不时发送窗口探测,防止窗口更新原创 2017-07-30 17:49:09 · 1266 阅读 · 0 评论 -
【面经笔记】操作系统:编译过程
C++从源代码到可执行文件经过了哪些过程?预处理: 将所有的#define删除,并且展开所有的宏定义。 处理预编译指令。 删除所有注释 “//”和”/* */”。 添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。 保留所有的#pragma编译器指令,因为编译器需要使用它们。编译: 编译过程就是把预处理完的文件生成相应汇编代码。汇编 汇编器是将汇原创 2017-08-05 17:03:03 · 746 阅读 · 0 评论 -
【面经笔记】装载,CRT
双击可执行文件发生了什么创建一个独立的虚拟地址空间创建虚拟地址空间不是创建空间,而是创建映射函数所需要的相应的数据结构。读取可执行文件头,并建立虚拟空间与可执行文件的映射关系上一步是建立虚拟空间到物理内存的映射关系,这一步是建立虚拟空间与可执行文件的映射关系。将cpu的指令寄存器设置为可执行文件的入口地址,启动运行。装载PE可执行文件过程:RVA(Relative Virtual Add原创 2017-09-04 22:19:53 · 571 阅读 · 0 评论 -
【面经笔记】好未来 - 已挂
1、 手写二叉搜索树的插入、删除没写过,删除操作完全写错了。2、手写堆的实现实现了自顶向下的维护堆的函数,面试官说不好,应该写个自底向上的、、、3、给定一个M*N的棋盘,给定一个出发点,终点。只能走”日”,即马走日。判断能否到达终点。我写了个广度优先搜索路径的算法面试官想了半天说可能不对:已经遍历的点,不会再入队列,所以某个点如果要走两遍的话会出问题。当时没坚持。回来想想,这种情况根本就是扯淡。面试原创 2017-08-21 22:18:42 · 2152 阅读 · 3 评论 -
【面经笔记】
如果真的被问到不会的,就直接说你不会(说你不会、说你不会,我再补充两遍),礼貌地说这方面可能我还要多学习。(对一个拿不准的问题千万不要猜,即使是二选一的那种问题,猜错了直接完蛋,猜对了被人看出来,再往深问还是完蛋) 另外,像可能,大概是,我觉得这种表达最好不要,一听就是对一个点没把握,有可能会让面试官觉得学习太浮躁不喜欢寻求原理。印象最深的项目,最大的难点是什么?原创 2017-08-20 15:05:26 · 385 阅读 · 0 评论 -
【面经笔记】远景能源电话面试
介绍一下CPU的存储层次如何充分利用CPU缓存机制?GPU架构用到了哪些C++11的新特性?介绍一下Static修饰符。说一下Static全局变量,局部变量,成员变量的初始化时机。多线程的同步机制有哪些?什么是共享内存?New出来的变量是不是一定存储在物理内存中?VS内存分析工具用过没?OpenMP的常用命令OpenMP和MPI的区别,那个更好?算法题:1-n的数字,每个数字只出现一次,如果有一个数原创 2017-08-18 17:40:27 · 3402 阅读 · 1 评论 -
【面经笔记】深信服电话二面
三层的红黑树的根节点删除后,怎么调整Createthread 和Beginthreaded的区别,什么时候应该使用Createthread 什么时候应该使用Beginthreaded?Dll的入口函数是什么?给你代码,如何优化算法CUDA编程的详细过程,详细介绍一个算法在cpu和gpu下分别是怎么做的MFC消息机制 ,各种消息类型项目的最大难点在哪里,给你一个新任务,你如何去完成?原创 2017-08-02 18:04:47 · 2913 阅读 · 0 评论 -
【面经笔记】虚函数表指针个数
本文参考了 http://www.cnblogs.com/jerry19880126/p/3616999.html上述博客给出了以下结论:每个类都有虚指针和虚表;如果不是虚继承,那么子类将父类的虚指针继承下来,并指向自身的虚表(发生在对象构造时)。有多少个虚函数,虚表里面的项就会有多少。多重继承时,可能存在多个的基类虚表与虚指针;如果是虚继承,那么子类会有两份虚指针,一份指向自己的虚表,原创 2017-08-02 14:02:11 · 6419 阅读 · 3 评论 -
【面经笔记】CUDA
http://blog.youkuaiyun.com/junparadox/article/details/50540602 http://www.cnblogs.com/muchen/p/6306792.html与CUDA相关的几个概念:thread,block,grid,warp,sp,sm。sp: 小核(流处理器)最基本的处理单元,streaming processor 最后具体的指令和任务都原创 2017-08-01 17:25:21 · 5836 阅读 · 0 评论 -
【面经笔记】MFC
MFC下多线程的APIcreatethread() 创建新线程,返回句柄closehandle() 关闭句柄,减少线程内核对象的引用计数,当线程运行结束且引用计数为0 ,系统释放内核对象。waitforsingleobject() 等待线程结束互斥锁:createmutex() 创建互斥对象,返回句柄,第二个参数指定互斥对象是否为当前线程拥有waitforsingleobject原创 2017-07-27 09:57:28 · 998 阅读 · 0 评论 -
【读书笔记】Windows核心编程 - 进程,线程相关
何为内核对象、句柄、内核对象句柄表?如何关闭内核对象?CloseHandle 函数将内核对象计数减1,如果计数变为0,则内核对象被销毁 函数返回前,会清除进程句柄表中的对应记录项。无论内核对象是否被销毁,此过程都会发生。进程退出当进程终止运行时,系统会扫描该进程的句柄表。如果表中有有效的记录项,则操作系统会关闭此句柄,对应内核对象计数减1。如何跨进程共享内核对象?继承命名复制继承当原创 2017-08-15 20:21:08 · 449 阅读 · 0 评论