面试/笔试
文章平均质量分 81
TiWalker
冷静思考,坚持努力,勇敢前行!
展开
-
第一次笔试
#include#includeusing namespace std;int main(){ int Case; scanf("%d",&Case); listfont; for(int i=0;i<Case;i++) { int N,P,W,H; listPChar; list::iterator itor; scanf("%d%d%d%d",&N原创 2016-04-06 21:35:54 · 526 阅读 · 1 评论 -
DHCP协议
1.DHCP简介 DHCP的英文全称是:dynamic host configuration protocal,即动态主机配置协议。也就是为我们连进局域网的主机配置IP等参数信息。那么从主机接入局域网开始,配置的流程是什么? 我们的电脑一般都含有DHCP客户端模块,在接入网络之后,就会通过DHCP协议发送数据包寻找DHCP服务器,DHCP服务器是运行服务端软原创 2016-08-11 15:39:44 · 893 阅读 · 0 评论 -
面试记录
第一次电话面试献给阿里了。虽然只面了20分钟,但之前以为电话面试都没有。总结一下自己的面试表现,并为之后的面试做些指导吧。 先回忆下面试官的问题: 1.介绍一下你最熟悉的项目。 2.网络编程熟悉吗? 3.TCP黏包。 4.虚函数。 5.简述C/C++/C#的区别。 6.你最近看的书。原创 2016-08-11 10:43:44 · 736 阅读 · 1 评论 -
面试总结(数据库索引、B树、B+树)
1. 数据库系统维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。索引的实现通常使用B树及其变种B+树。 创建索引可以大大提高系统的性能。 第一、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二、可以大大加快数据的检索原创 2016-08-21 22:05:11 · 9544 阅读 · 2 评论 -
面试总结(变量初始化、整型数范围)
1. 在全局域中声明的变量会自动初始化为0,如: double salary; int day;2. 如果变量是在局部域中定义的,或是通过new表达式动态分配的,则系统不会向它提供初始值0,这些对象被认为是未初始化,其值随机。而变量是类对象会通过缺省构造函数自动初始化。3. C++支持两种形式的初始化:a:使用赋值操作符的显示语法形式。如:int ival=1024;b: 隐原创 2016-08-21 21:14:10 · 959 阅读 · 0 评论 -
百度面试(进程调度、调度算法)
一、常见的批处理作业调度算法1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。2.短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道原创 2016-08-09 16:48:52 · 3034 阅读 · 3 评论 -
百度面试(进程通信、socket)
1. 进程间通信 进程间通信主要包括管道, 系统IPC(包括消息队列,信号量,共享存储), SOCKET. 系统IPC的三种方式类同,都是使用了内核里的标识符来识别. 匿名管道( pipe ):匿名管道是一种半双工的通信方式,通常是在父子进程间使用。 命名管道 (named pipe) :命名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信原创 2016-08-09 11:09:34 · 3805 阅读 · 0 评论 -
有道笔试之后的自我反省
有道笔试过了两天了,我其实当时就想着写篇文章好好反省下。这个编程题一道题都没AC,如果我要归咎责任,掩人耳目,保留面子,那么我会说第一道题把我卡住了,而且第一题的样例有误。原创 2016-08-20 09:20:36 · 1004 阅读 · 0 评论 -
网易笔试之后的自我反省
网易笔试过后,心里空空的。下来也和同学们交流,可能大家以为我比较水,在我谈到写那个大数类的时候,直接否认了我的分段加法思想。虽然被否认,但是我却不能懈怠,更不能因此沮丧或者自我否定。我应该在质疑声中证明自己。我也可以,而且8月份为了拿到offer,我开始拼了! 首先说一下选择题吧,我的知识面有所扩展,但是mysql、linux方面的知识欠缺的比较多。设计模式我之前看过专栏:设计模式原创 2016-08-03 10:19:54 · 1575 阅读 · 4 评论 -
string类总结
标准C++中提供的string类得功能是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下。要想使用标准C++中string类,必须要包含#include 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。string和wstring的用法是一样的,以下以string作介绍:string类的构造函数:stri原创 2016-08-11 15:58:40 · 744 阅读 · 2 评论 -
OJ中字符串输入及相关操作
1. 输入数据方式cin>>a>>b;char a[10];cin.getline(a,5);char a,b,c;cin.get(a);cin.get(b);cin.get(c);输入:ABCD那么a的值为'A',b的值为'B',c的值为'\n\ getline(istream &in, string &s)在头文件中声明了getline函原创 2016-08-11 17:00:04 · 2289 阅读 · 0 评论 -
STL常用函数
1.map中查找指定键值map.find()原创 2016-08-26 15:05:20 · 804 阅读 · 0 评论 -
STL总结
1.容器如vector、deque、list是线性存储的,它们都是有迭代器的。queue和stack作为容器适配器,没有迭代器的。它们默认使用deque作为底层元素。2.heap不属于STL容器,但是它是优先队列的幕后英雄。heap底层是vector或者array实现的。STL实现了最大堆,这样可以满足优先队列的特性。优先队列也是容器适配器。3.slist是单向列表,它原创 2016-08-14 16:56:13 · 742 阅读 · 0 评论 -
面试总结(tcp/ip、优先级、线程进程)
1、tcp/ip七层协议(1)OSI七层模型OSI中的层 功能 TCP/IP协议族应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层 数据格式化,代码转换,数据加密 没有协议会话层 解除或建立与别的接点的联系 没有协议传输层 提供端对端的接口 TCP,UDP网络层 为数据包选择路由 IP,ICMP,原创 2016-08-25 21:54:13 · 1725 阅读 · 0 评论 -
归并排序思想应用
今天刷剑指offer第36题,求逆序数。要求时间复杂度尽可能小。先看下我原来的代码。#includeusing namespace std;class Solution {public: int InversePairsCore(vector&data,vector©,long start,long end) { if(start>end)原创 2016-08-25 16:56:09 · 1037 阅读 · 0 评论 -
百度面试(数据库隔离级别、overload、override)
1. 数据库的隔离级别 ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability). READ UNCOMMITTEDREAD UNCOMMITTED是限制性最弱的隔离级别,因为该级别忽略其原创 2016-08-13 11:10:41 · 1427 阅读 · 0 评论 -
快速求栈或队列中的最大值
1.队列中最大值原创 2016-08-13 10:13:43 · 7936 阅读 · 1 评论 -
面试总结(数据库范式、sql优化)
数据库范式 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。1、第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。原创 2016-08-24 22:03:36 · 1669 阅读 · 0 评论 -
面试总结(static、const、define)
1.static 其中.text段保存进程所执行的程序二进制文件,.data段保存进程所有的已初始化的全局变量,.bss段保存进程未初始化的全局变量(其他段中还有很多乱七八糟的段,暂且不表)。在进程的整个生命周期中,.data段和.bss段内的数据时跟整个进程同生共死的,也就是在进程结束之后这些数据才会寿终就寝。一、全局变量 当一个进程的全原创 2016-08-24 21:53:37 · 1076 阅读 · 0 评论 -
STL容器及常用算法
1. vectorvectoriv(2,9);iv.size();iv.push_back(1);iv.pop_back();vector::iteratorivite=find(iv.begin(),iv.end(),1); //STLfind()函数iv.erase(ivite);iv.insert(ivite,3,7);iv.clear();2. lis原创 2016-08-02 16:51:43 · 1014 阅读 · 0 评论 -
大数运算-(加、减、乘)
大数其实和一般数字的区别在于大数的存储。一般数字可以用已有类型表示,如int。但是大数动不动100位,这样的话大数用什么存储已然是个问题。我仔细查找了下,大多数要么用char数组,要么用string表示。有大数了,那么它的计算怎么写?和普通四则运算一致。1.加法 以十进制计算符合我们的日常习惯。同时暂且不考虑正负数的问题。那么就以两个正的大数相加为例,类比普通十进制的加法,就是原创 2016-08-05 10:59:45 · 1023 阅读 · 0 评论 -
面试总结(堆、UDP、voliate)
1. 堆二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足2个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。由于其它几种堆(二项式堆,斐波纳契堆等)用的较少,一般将原创 2016-07-30 12:10:50 · 1240 阅读 · 0 评论 -
面试总结(malloc、虚继承、assert)
1.void *malloc(int size);首先介绍一下内存分配从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上分配 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量原创 2016-07-28 17:26:40 · 1223 阅读 · 0 评论 -
单向链表每k个数逆序拼接
问题:有一个单链表,请设计一个算法,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点。例如链表1->2->3->4->5->6->7->8->null,K=3这个例子。调整后为,3->2->1->6->5->4->7->8->null。因为K==3,所以每三个节点之间逆序,但其中的7,8不调整,因为只有两个节点不够一组。给定一个单链表的头指针head,同时给定原创 2016-07-07 11:00:14 · 1008 阅读 · 0 评论 -
面试总结
1.Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。计算机最开始只支持ASCII码,一个字符用一个字节表示,只用了低7位,最高位为0,因此总共有128个ASCII码,范围为0~127。 ANSI不代表具体的编码,它是指本地编码。比如在简体版windows上它表示GB2312编码,在繁体版windows上它表示Big5编码,在日文操作系统上它原创 2016-07-18 09:18:57 · 501 阅读 · 0 评论 -
面试总结
1.strcpy()函数的编写char*strcpy(char *strDest, const char *strSrc);{ assert((strDest!=NULL) && (strSrc !=NULL)); char *address =strDest; while( (*strDest++ = * strSrc++) !原创 2016-07-04 17:16:25 · 1516 阅读 · 3 评论 -
复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。/*struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NU原创 2016-07-11 17:29:27 · 502 阅读 · 0 评论 -
面试问题
1. C++多态性固定偏移量的函数、虚函数p调用fun()并不是直接调用函数,而是通过虚函数列表找到相应的函数的地址,因此根据指向的对象不同,函数地址也将不同a.有virtual才可能发生多态现象 b.不发生多态(无virtual)调用就按原类型调用 2. 纯虚函数纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现原创 2016-06-29 11:35:19 · 495 阅读 · 0 评论 -
判断字符串是否为变形词
题目如下:对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。给定两个字符串A和B及他们的长度,请返回一个bool值,代表他们是否互为变形词。测试样例:"abc",3,"bca",3返回:true我的代码:#include#include#includeu原创 2016-04-16 16:20:01 · 794 阅读 · 0 评论 -
TCP及DNS协议(3)
接着UDP和TCP写:1.TCP堵塞控制 网络被称为“信息高速公路”。TCP段被封装成为IP包,在原主机和目标主机之间经过数个路由器进行传送。那么路由器就会发生堵塞。当路由器处理不过来,很可能就会丢包。对于UDP来说,反正我也不可靠,我无所谓。对于TCP来说,我就要维持可靠,我就要重发,我只管我的可靠,不关心你的拥堵。这样很显然,本来拥堵的线路由于TCP的忠贞就更拥堵了。原创 2016-08-03 13:57:22 · 944 阅读 · 0 评论 -
UDP和TCP(1)
1.UDP协议 UDP协议是传输层的一个不可靠的协议。之前看过物理层、连接层、网络层的协议。Vamei大神的比喻很好,说UDP是IP协议在传输层的傀儡,之所以存在的必要时IP协议不包括端口号,而UDP和TCP都是包括端口号。 端口号是应用程序的资源,不同的应用程序可以占用不同的端口号。程序运行时,操作系统内核从不同端口号获取的消息就提供给占用相应端口号的程序处理。原创 2016-07-31 14:13:31 · 703 阅读 · 0 评论 -
linux面试总结
1.删除文件rm 文件名rm -f 文件名:强制删除文件rm -rf 文件名:递归删除文件夹下所有文件原创 2016-08-16 22:16:04 · 597 阅读 · 0 评论 -
红黑树元素的插入和删除
1.红黑树 平衡搜索二叉树的查询性能很好。(注意:平衡和搜索是两个修饰词。平衡是左右子树高度差不差过1,搜索是对于任一节点来说,左子树所有节点值 重要的性质: 根是黑的,叶节点是黑的。(大部分以null为叶节点) 对于任意节点而言,其到叶节点树尾端(null指针)的每条路径都包含相同数量的黑节点。 如果一个结点是红的,原创 2016-08-16 21:43:26 · 1446 阅读 · 0 评论 -
Trie树的C++实现
先给出LintCode的题目:实现Trie树Trie树就是字典树,用在搜索引擎如百度搜索词条,还比如说之前DNS域名解析系统搜索根据域名搜索IP。总之,是棵树,根据字符串搜索某一节点,同时就可获得节点存储的信息了。Trie树的一般性质如下: 1.根节点不包含字符,除根节点外每一个节点都只包含一个字符。 2.从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符原创 2016-08-16 21:06:58 · 1547 阅读 · 3 评论 -
网易2016笔试(3)
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。测试样例:[1,3,5,2,2],5,3返回:2 我的第一个思路,使用快排进行排序,排序后就可以得到第k个最大的数了。 int quicksort(vector&a,int i,int原创 2016-08-01 20:23:03 · 992 阅读 · 0 评论 -
网易2016笔试(2)
有n个信封,包含n封信,现在把信拿出来,再装回去,要求每封信不能装回它原来的信封,问有多少种装法?给定一个整数n,请返回装发个数,为了防止溢出,请返回结果Mod 1000000007的值。保证n的大小小于等于300。测试样例:2 返回 1 一开始我以为是卡特兰数问题:卡特兰数应用 考虑半天,但是也无法列出卡特兰数的公式。安静下来发现原创 2016-08-01 15:22:45 · 1183 阅读 · 0 评论 -
网易2016笔试(1)
小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请原创 2016-08-01 11:14:54 · 741 阅读 · 0 评论 -
STL常用算法
1.copy()函数int myints[]={10,20,30,40,50,60,70};std::vectorint> myvector (7);std::copy ( myints, myints+7, myvector.begin() );将一个容器中的元素复制到另一个容器中2.count()函数int myints[] = {10,20,30,30,20,10原创 2016-08-16 11:22:29 · 724 阅读 · 0 评论 -
TCP(2)
1.累计ACK 我们之前说TCP数据是分段(segment)发送的,发送端发送一段,接收端回复一个ACK。而且ACK可以依附在数据上进行回复。但是每段回复一个小小的ACK貌似有点占用流量。累计ACK的意思是,7,8,9段在滑窗内,8和9段已经收到了,这时如果7段接收到了,那么7,8段的ACK就不必发了。因为ACK是告诉发送端发送下一个段,而9段之前完全都接收到了,那么直接发送9段的原创 2016-07-31 16:41:53 · 884 阅读 · 0 评论 -
私货
这是平时记录的一些面试题,分享给大家。1.new malloc2.僵尸进程3.进程间通信4.socket5.read 变长6.参数入栈顺序7.C/C++编译区别8. char a:19.time_wait10.抽象类和接口11.数据库中取top3数据12.IOC、unity13.sql优化14.实现tail15.B+、B树等16.要准原创 2017-02-28 14:18:52 · 429 阅读 · 0 评论