- 博客(267)
- 收藏
- 关注
原创 【面经笔记】远景能源电话面试
介绍一下CPU的存储层次如何充分利用CPU缓存机制?GPU架构用到了哪些C++11的新特性?介绍一下Static修饰符。说一下Static全局变量,局部变量,成员变量的初始化时机。多线程的同步机制有哪些?什么是共享内存?New出来的变量是不是一定存储在物理内存中?VS内存分析工具用过没?OpenMP的常用命令OpenMP和MPI的区别,那个更好?算法题:1-n的数字,每个数字只出现一次,如果有一个数
2017-08-18 17:40:27
3395
1
原创 【算法题】兔子
#include <iostream>#include <vector>#include <algorithm>#include <windows.h>#include <numeric>using namespace std;#define debug_int x, y;long long func(){ vector<long long> vec(x,0);//vec[i
2017-08-17 15:30:25
944
原创 【算法题】编程测试:射击场
在某射击场有N个靶,每个靶上都有一个分数,存在score数组中,击中第i个靶的得分为score[left]*score[i]*score[right],同时原left和right两个靶变为相邻的靶,其中得分为0的靶是不能射击的,当left不存在或者不能射击时,得分为score[i]*score[right],同理,right也遵循此规则,当left和right都不存在或者都不能射击时,得分为scor
2017-08-17 10:50:38
1458
原创 【读书笔记】Windows核心编程 - 进程,线程相关
何为内核对象、句柄、内核对象句柄表?如何关闭内核对象?CloseHandle 函数将内核对象计数减1,如果计数变为0,则内核对象被销毁 函数返回前,会清除进程句柄表中的对应记录项。无论内核对象是否被销毁,此过程都会发生。进程退出当进程终止运行时,系统会扫描该进程的句柄表。如果表中有有效的记录项,则操作系统会关闭此句柄,对应内核对象计数减1。如何跨进程共享内核对象?继承命名复制继承当
2017-08-15 20:21:08
445
原创 【读书笔记】TCP/IP 网络编程 第23章 IOCP模型
IOCP模型IOCP中已完成的I/O信息将注册到完成端口对象(Completion Port,简称CP对象)。但这个过程并非简单的注册,需要如下两个工作:创建完成端口对象建立完成端口对象和套接字之间的联系此时的套接字必须被赋予重叠属性。(异步I/O)创建CP对象CreateIoCompletoinPort()前三个参数是无意义的,只有最后一个参数有意义:表示分配给CP对象的处理I/O的线程
2017-08-14 14:25:37
505
原创 【读书笔记】TCP/IP网络编程 第23章 纯重叠I/O实现回声
纯重叠I/O实现回声服务器非阻塞模式的套接字:ioctlsocket()函数可修改套接字属性为非阻塞模式在没有客户端连接时调用accept函数,将直接返回INVALID_SOCKET。调用WSAGetLastError函数返回WSAEWOULDBLOCK。调用accept函数时创建的套接字同样有非阻塞属性。工作原理:1 有新客户端连接时,调用WSARecv函数,以非阻塞模式接收数据,接收完成后
2017-08-13 21:47:17
526
原创 【读书笔记】TCP/IP网络编程 第22章 异步/重叠IO模型
第22章 重叠I/O模型第21章异步处理的并非I/O,而是通知! http://blog.csdn.net/xiaxzhou/article/details/77116124重叠I/O一个线程内部同时向多个目标传输数据引起的I/O重叠现象称为重叠I/O。为了完成这项任务,调用函数应立即返回,只有这样才能发送后续的数据。从结果上看,利用上述模型收发数据时,最重要的前提条件就是异步I/O。而且,为
2017-08-13 15:08:11
536
原创 【算法题】疯狂的队列
小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请计算出这些学生
2017-08-13 09:42:18
1186
原创 【读书笔记】TCP/IP网络编程 第21章 异步通知I/O模型
第21章 异步通知I/O模型异步通知I/O,指的是使用WSAEventSelect()函数向操作系统注册套接字,当发生事件时,将相应的事件
2017-08-12 14:32:52
481
原创 【读书笔记】TCP/IP网络编程 第18章 多线程并发
多线程并发 聊天程序基于Windows VS2013、pthread服务器端:主线程监视新连接: 当新连接到来时,新建线程,传入连接返回的新套接字给两个新线程,并将新套接字记录到数组中新线程: 从传入的套接字中接收消息,并通过套接字数组中的套接字转发出去 当前套接字断开连接时,将其从数组中删除,退出线程pthread_detach(thread_id); 与pthread_join()
2017-08-10 20:51:18
355
原创 【读书笔记】TCP/IP网络编程 条件触发和边缘触发
条件触发条件触发方式中,只要输入缓冲中有数据就会一直通知该事件。select和epoll默认以条件触发方式工作。边缘触发输入缓冲收到数据时,仅注册一次该事件,即使缓冲中还有数据,也不会再进行注册。由于只注册一次事件,故发生输入相关事件时,应该读取全部的缓冲中的数据。故不能使用阻塞式的函数,会引起长时间停顿。一定要使用非阻塞式的函数。比较:边缘触发分离接收数据和处理数据的时间点。相反,如果使用条件
2017-08-10 12:05:32
644
原创 【读书笔记】TCP/IP网络编程 非阻塞模式
非阻塞模式是指:套接字在执行操作时,调用的函数不管操作是否完成都会立即返回的工作模式。非阻塞套接字在处理同时建立的多个连接等方面具有明显的优势。但是使用过程中有一定的难度。由于函数在操作没有完成后也仍然会返回,为了实现某些功能必须循环调用,直到完成功能为止。因此非阻塞模式会使程序效率非常低。非阻塞模式的回声服务器端:(待修改)#include "stdafx.h"#include <winsock
2017-08-10 11:36:01
425
原创 【读书笔记】TCP/IP网络编程 第17章 Linux epoll
第17章 epoll的理解与应用I/O复用:http://blog.csdn.net/xiaxzhou/article/details/76944971epoll_create:创建保存epoll文件描述符的空间 select方式中为了保存监视对象,直接声明了fd_set变量。但epoll方式下由操作系统负责保存监视对象。因此需要向操作系统请求创建保存空间。epoll_ctl:为了添加删除监
2017-08-10 11:04:08
245
原创 【读书笔记】TCP/IP网络编程 端口号问题
两个套接字分别是TCP和UDP类型的,他们可以使用相同的端口号吗?可以,操作系统负责把传递到内部的数据适当分配给套接字,这时就利用端口号,也就是说,通过NIC接收的数据内有端口号,操作系统正式参考此端口号把数据传输给相应端口的套接字,而套接字的类型有分为TCP面向连接的套接字和UDP面向消息的套接字,两种套接字类型,操作系统是可以按接收到的数据按套接字类型传输给相应的端口号套接字,所以TCP套接字和
2017-08-10 09:54:09
786
原创 【读书笔记】TCP/IP网络编程 第14章 多播、广播
第14章 多播、广播多播数据传输方式及流量方面的特点:多播服务器端针对特定的多播组,只发送一次数据即使只发送一次数据,该组内的所有客户端都会受到数据(路由器负责复制文件并传递到主机)多播组数可在IP地址范围内任意增加加入特定的多播组,就可接收发往该组的数据TTL(time to live):其值大小决定了数据包传递的距离,每经过一个路由器值就减一,TTL变为0则无法被传递,只能销毁了。多播
2017-08-09 10:19:44
348
原创 【读书笔记】TCP/IP网络编程 第12章 I/O复用
第12章 I/O复用使用select函数,将多个套接字统一监视(接收,传输,异常)。服务器端:#include "stdafx.h"#include <winsock2.h>#include <stdio.h>#include <iostream>using namespace::std;#define BUF_SIZE 1024void ErrorHanding(char * mess
2017-08-08 22:48:09
510
原创 【读书笔记】TCP/IP网络编程 第7章 半关闭
第七章:优雅地断开连接半关闭:断开连接的一部分,可以传输数据但是无法接收,或可以接收数据但无法传输。closesocket()函数会同时断开输入及输出流。半关闭函数:shutdown()SD_RECEIVE:断开输入流 SD_SEND:断开输出流 SD_BOTH:同时断开I/O流shutdown()函数,关闭输出流时,既发送了EOF,还保留了输入流。服务器端:#include "stdafx
2017-08-08 19:25:31
389
原创 【读书笔记】TCP/IP网络编程 第6章UDP数据传输
第6章 UDP数据传输UDP数据边界:TCP数据传输不存在边界,数据传输过程中调用send recv函数的次数不具任何意义相反,UDP是具有数据边界的协议,传输中调用send recv函数的次数非常重要。因此,输入函数的调用次数应和输出函数的调用次数完全一致,这样才能保证接收全部已发送数据。连接UDP和未连接UDP:未连接UDP套接字:每次调用sendto时,重复三个步骤:1 向UDP套接字
2017-08-08 15:36:58
251
原创 【读书笔记】TCP/IP网络编程 第4章 回声
第4.5节windows实现回声回声服务端:#include "stdafx.h"#include <winsock2.h>#include <stdio.h>#include <iostream>using namespace::std;#define BUF_SIZE 1024void ErrorHanding(char * message);void main(){ W
2017-08-08 11:27:16
335
原创 【读书笔记】TCP/IP网络编程 第2章
第2.3节:windows平台下实现服务端代码:#include "stdafx.h"#include <winsock2.h>#include <stdio.h>#include <iostream>using namespace::std;void main(){ //加载套接字库 WSADATA wsaData; SOCKET hServSock, hCln
2017-08-07 22:50:06
277
原创 【——】线程池实现
配置VS2013 使用pthread,参考: http://blog.csdn.net/k459905889/article/details/48676159 pthread函数使用,参考: http://blog.csdn.net/dreamintheworld/article/details/52577681 线程池,参考: http://www.cnb
2017-08-06 22:05:00
599
原创 【面经笔记】操作系统:编译过程
C++从源代码到可执行文件经过了哪些过程?预处理: 将所有的#define删除,并且展开所有的宏定义。 处理预编译指令。 删除所有注释 “//”和”/* */”。 添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。 保留所有的#pragma编译器指令,因为编译器需要使用它们。编译: 编译过程就是把预处理完的文件生成相应汇编代码。汇编 汇编器是将汇
2017-08-05 17:03:03
742
原创 【面经笔记】深信服电话二面
三层的红黑树的根节点删除后,怎么调整Createthread 和Beginthreaded的区别,什么时候应该使用Createthread 什么时候应该使用Beginthreaded?Dll的入口函数是什么?给你代码,如何优化算法CUDA编程的详细过程,详细介绍一个算法在cpu和gpu下分别是怎么做的MFC消息机制 ,各种消息类型项目的最大难点在哪里,给你一个新任务,你如何去完成?
2017-08-02 18:04:47
2909
原创 【面经笔记】虚函数表指针个数
本文参考了 http://www.cnblogs.com/jerry19880126/p/3616999.html上述博客给出了以下结论:每个类都有虚指针和虚表;如果不是虚继承,那么子类将父类的虚指针继承下来,并指向自身的虚表(发生在对象构造时)。有多少个虚函数,虚表里面的项就会有多少。多重继承时,可能存在多个的基类虚表与虚指针;如果是虚继承,那么子类会有两份虚指针,一份指向自己的虚表,
2017-08-02 14:02:11
6306
3
原创 【面经笔记】深信服电话面试
接到电话我是懵逼的,因为早上睡了懒觉,刚到实验室就来个电话。首先问是否方便,然后说你简历写了CUDA编程,其主要应用在了哪里?工程中的CUDA是不是你写的?我说应用在三维图像处理,CUDA是我引入工程并实现的。 我发现每个公司都对CUDA很感兴趣,会CUDA的一定要提前准备好常见的面试问题。他说除了CUDA,你主要开发windows平台的应用程序?我说是,开发的是MFC框架下的图像处理软件话题引入
2017-08-02 13:33:13
7231
原创 【面经笔记】CUDA
http://blog.csdn.net/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
5777
原创 【面经笔记】字节对齐
字节对齐以及为什么要字节对齐?字节对齐的相关规则,举例一个char型数据,在内存中会分配多少字节?为什么要字节对齐:需要字节对齐的根本原因在于CPU访问数据的效率问题。假设整型变量(int)的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话需要访问两次内存,第一次取从0x00000002-0x00000003的一个short,第二次取从0x00000004-0x00000005
2017-08-01 15:15:59
333
原创 【面经笔记】TCP流量控制、阻塞控制
流量控制:窗口控制滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送方的窗口大小由接受方确定,目的在于控制发送速度。发送端根据接收端的实际接收能力控制发送的数据量,接收端主机向发送端主机通知自己可以接收的数据的大小,发送端会发送不超过这个限度的数据。发送端会不时发送窗口探测,防止窗口更新
2017-07-30 17:49:09
1263
原创 【面经笔记】红云融通电话二面
问到各种深度学习的参数 ,需要了解参数的含义及在实际工程应用中大概值如损失,迭代次数,样本量CUDA的优化措施有哪些纹理内存,全局内存,共享内存,线程束,大核,小核 还说了一个名词,忘记了叫啥,大概含义是:内存访问延迟可以被并行计算掩盖解释一下OpenMPOpenMP是一种API,用于编写可移植的多线程应用程序,无需程序员进行复杂的线程创建、同步、负载平衡和销毁工作。什么是脏读,脏写
2017-07-30 16:48:24
781
原创 【算法题】数组分段
清洁工:假设有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
3960
原创 【面经笔记】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
333
原创 【面经笔记】TCP
确认应答当数据到达接收主机时,接收端主机会返回一个确认应答:ACK如果发送端一定时间内没有等到确认应答,认为数据丢失,并重发。没有收到确认应答有可能是因为:数据丢失 或者 应答丢失为了避免应答丢失时,接收端重复接收数据,需要能识别是否已接收数据、又能判断是否需要接收:按顺序给发送的数据的每个字节标上编号:序列号接收端查询接收数据TCP首部的序列号和包含的数据的长度,将自己下一步应该接收的序列号作为确
2017-07-29 10:52:57
762
原创 【面经笔记】网络编程
OSI(open system iterconnection)七层模型应用层表示层会话层传输层网络层数据链路层物理层协议应用层:远程登录协议Telnet、文件传输协议FTP、超文本传输协议HTTP、域名服务DNS等传输层:TCP:面向连接的可靠的传输协议。建立连接需要三次握手,提供了数据确认和数据重传的机制。应用在数据完整性要求高的场景UDP:无连接的、不可靠的传输协议。不需
2017-07-27 16:13:39
806
原创 【面经笔记】MFC
MFC下多线程的APIcreatethread() 创建新线程,返回句柄closehandle() 关闭句柄,减少线程内核对象的引用计数,当线程运行结束且引用计数为0 ,系统释放内核对象。waitforsingleobject() 等待线程结束互斥锁:createmutex() 创建互斥对象,返回句柄,第二个参数指定互斥对象是否为当前线程拥有waitforsingleobject
2017-07-27 09:57:28
994
原创 【面经笔记】内存泄漏检测
参考: 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
362
原创 【读书笔记】构造、析构、赋值(Effective C++)
介绍所有的构造函数C++默默编写了哪些函数?默认构造函数、拷贝构造函数、赋值运算符函数、析构函数为什么不要在构造、析构函数中调用虚函数?C++的构造函数可以为虚函数吗?如果构造函数是虚函数,那么就需要通过vtable 来调用,但此时面对一块 raw memeory,到哪里去找虚函数表指针呢?毕竟,虚函数表指针是在构造函数中才初始化的啊,而不是在其之前。因此构造函数不能为虚函数。 inline 是构
2017-07-25 10:06:32
364
原创 【面经笔记】链表归并排序
#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
258
原创 【面经笔记】访问私有变量
有一个类里面只有一个私有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
290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅