随笔分类 - 笔试|面试
记录做过的一些笔试题目,以及心得
摘要:滴滴三面: 一面: 1. 阻塞和非阻塞,同步异步? 老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张
阅读全文
摘要:美团一面 1.螺旋方阵打印 2.AVL树,插入,旋转,删除操作 3.C++多态、虚函数、虚表中存的是什么,内存对齐 4.C++ static各种情况。C++内存分布。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于
阅读全文
摘要:这题很是巧妙。 突破了常规思维。 竟然可以把传入进来的链表和复制的链表链在一起。然后再算出slibling指针。最后在分离。 直接把空间复杂度变为O(1)了。 很巧妙,很实用。 题目: 请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复
阅读全文
摘要:在学习三次握手的时候,我们知道其中有seq、ack两个序列号。 如果不仔细了解,那么可能只知道发回去的时候要加一。 下文将着重介绍,关于序列号的传输过程。 最关键的一句话:序列号为当前端成功发送的数据位数,确认号为当前端成功接收到的数据位数,SYN标志位和FIN标志位也要占1位 转自:http://
阅读全文
摘要:转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,
阅读全文
摘要:美团 一面: 纯java 1。装箱拆箱 2。hash_map多线程情况 3。java中线程的状态 4。java在一个函数中定义一个数组,是用的栈空间还是堆空间。 其他知识: 1. hast_map 实现原理、以及优化方法。 2.B-,B+树。 要查询一个链表,频繁的查询、分段查询。怎么实现。 3.如
阅读全文
摘要:丑数 因子只含2,3,5的数称为丑数。 怎么求第K大的丑数呢。K可以为10^7 最简单的做法是,对每个数判断是否为丑数。 复杂度为O( n * log(n) ),理论上是不行的。 uglys[i] 来保存所有丑数,uglys[0] = 1 因为要按从小到大产生一个新的丑数。这个丑数必然为之前某个丑数
阅读全文
摘要:1. c++在调用构造函数时,才会把最开始的虚表指针指向虚表。 2.在构造函数或者析构函数中调用虚函数。 编译上没有问题。 运行时,调用虚函数不会发生多态行为,会调用正在构造的类的虚函数。 详细可见c++中的说明: //大意就是上面提到的运行时,因为子类没有构造好(指向虚表的指针都还没有初始化),所
阅读全文
摘要://TO DO 1. 有哪些平衡树,讲下红黑树特性 2.自旋锁 c++ 3.操作系统分页与分段 4.宏实现求两个数的最小值 5.c++的锁,有几种 6.操作系统的锁 答对了 1.c++多态 2.实现strlen 3.new 和malloc的区别 项目相关: 无关键信息。
阅读全文
摘要:-> 平时是对指针对象的基本操作。 A* a = new A(); a->do_something(); 直接就可以调用类内部函数。 而如果: A a;//a直接为对象时 a->func();//这个又是怎样的呢 这是由 C++ 标准规定的,对于a->mem根据a类型的不同,操作符->的解释也不同:
阅读全文
摘要:结果: 首先看上述的代码,print函数是带有默认参数的。 所以调用print(), print(-1)都可以准确的输出。 这种默认参数的情况会带来有些便利。(比如初始化一个商品对象,在99%的情况在都是正常的,那么这个商品是否正常的标记就可以默认为1,特殊的1%情况,再加上) 但是有以下三个要注意
阅读全文
摘要:空类默认会产生6个函数。 空类的大小为1,为了能有一个唯一的地址标识空类对应的对象。
阅读全文
摘要:我们都知道C++中有三种创建对象的方法,如下: 第一种和第二种没什么区别,一个隐式调用,一个显式调用,两者都是在进程虚拟地址空间中的栈中分配内存,而第三种使用了new,在堆中分配了内存,而栈中内存的分配和释放是由系统管理,而堆中内存的分配和释放必须由程序员手动释放,所以这就产生一个问题是把对象放在栈
阅读全文
摘要://TO DO 1. std::auto_ptr源码分析 上述源码很清晰的说明了auto_ptr的原理。 auto_ptr是在普通的指针上封装了一层,用于管理指针。 构造时传入一个指针,析构是将这个指针delete。 在进行赋值,或者函数参数传递的过程中。会立即把自身保存的指针release掉。 而
阅读全文
摘要:剑指offe第19题,很经典。 如果不用递归的思维做,会很麻烦。 因为对于.*、*.、*..等一些特殊情况处理会非常麻烦。 所以采用递归的思路。(如果加上的动态规划思想,记录dp[m][n]表示str + m与pattern + n是否能正确匹配。就可以把复杂度控制在O(n*n)。
阅读全文
摘要:如何快速的求一个数二进制表示时1的个数呢。 除了用n&(n-1)外,还可以用下面的这种方法。 1. 最开始把相邻奇数位和偶数位相加 2. 然后相邻4位相加,相邻8为相加,相邻16为的相加。得到最后1的个数。 这种做法的复杂度的是log(位数)
阅读全文
摘要:1. 计算机网络 三次握手 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生
阅读全文
摘要:一、C++基础 1.1 sizeof 问题(空类、含虚函数、内存对齐) 1.2类构造的时候会默认生成哪些函数,C++11多了什么?(move,左\右值) 1.3为什么c++不类似java一样实现一个内存回收库?内存管理理解? 1.4hash表中浮点数可以作为key吗? 不可以,浮点数运算过程中会有很
阅读全文
摘要:1. 浮点数IEEE 754表示方法 要搞清楚float累加为什么会产生误差,必须先大致理解float在机器里怎么存储的,这里只介绍一下组成 由上图可知(摘在[2]), 浮点数由: 符号位 + 指数位 + 尾数部分, 三部分组成。由于机器中都是由二进制存储的,那么一个10进制的小数如何表示成二进制。
阅读全文