随笔分类 - 面试
摘要:《从输入url到网页展示全过程》 《linux进程间通信8种方式》
阅读全文
摘要:转自:http://blog.csdn.net/luckyxiaoqiang/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。二叉树节点定义如下:struct BinaryTreeNode{ int ...
阅读全文
摘要:转自:http://blog.csdn.net/luckyxiaoqiang/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:struct ListNode{ int m_nKey; ListNode * m_pNext;};题目列表:1.求单链表中结点的个数2. 将单链表...
阅读全文
摘要:转自:http://www.blogjava.net/xzclog/archive/2009/01/04/249711.htmlI、关系数据库设计范式介绍1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要..
阅读全文
摘要:hash_table和二叉搜索树都经常被用来构建符号表(或者字典)以及相关的结构,并且他们都表现出了很高的效率。最近也在不同的程序中使用了这两种数据结构,实现完毕后思考一下,对两者做了一个简单的比较:1) 二叉搜索树是基于比较的原则实现,而hash_table则采用关键字索引的原则实现的。2) hash_table的索引结构使得对元素的插入和查找独立于表结构大小,是一个常量时间,具有非常高的效率。但是二叉搜索树的结构也使得插入和查找的效率很高。3) 由2)看似乎hash_table是符号表的最佳构建方式,但是hash_table也有自己的局限性。实际上hash_table是利用空间在换取时间,
阅读全文
摘要:转自:http://blog.csdn.net/qinghezhen/article/details/9116053C++内存分配由五个部分组成:栈、堆、全局代码区、常量区、程序代码区。如下图所示:1、栈区:函数中定义的局部变量放在栈中,函数执行结束时存储单元自动释放。栈内存分配一般采用寄存器来存取,存取效率高但是内存容量有限。2、堆区:通常在堆中进行动态分配。程序运行的时候用new或malloc申请一定大小的内存,用delete或free释放之前申请的内存。不管内存空间在何时申请,只要没有用delete或free释放该内存空间就一直被占用着。也就是说,动态内存分配的变量的生存周期由程序员自己
阅读全文
摘要:字符串移位包含的问题(编程之美 p221-223) 问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。 解法一:从题目中可以看出,我们可以使用最直接的方法对S1进行循环移动,再进行字符串包含的判断,从而遍历其所有的可能性。字符串循环移动,时间复杂度为O(n),字符串包含判断,采用普通的方法,时间复杂度为O(n*m),总体复杂度为O(n*n*m)。字符串包含判断,若采用KMP算法,时间复杂度为O(n),这样总体的复杂度为O(n*...
阅读全文
摘要:如图1所示,有一条单链表,其节点除了有next指针外,还有一个random指针。random指针可指向单链表中的任意节点,包括它自身。random指针一旦指定,便不再更改。请设计算法,复制此单链表,并给出时间复杂度。 图1 带有random指针的单链表 解法1. 时间复杂度为O(n*n) 先按nex
阅读全文
摘要:1. cut命令cut命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出。截取的方式有三种:一是按照字符位置,二是按照字节位置,三是使用一个分隔符将一行分割成多个field,并提取指定的fields。cut命令有5个参数,其中-c,-b,-f分别表示"character", "byte"以及"field"截取方式。当采用field模式截取时,需要用"-d"参数指定一个分隔符,分割符只能为单个字符。另外还有一个"-s",suppress,表示如果行中没有给出的分割符则不输出该
阅读全文
摘要:转自:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.htmlsort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!1 sort的工作原理sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。[rocrocket@rocrocket programming]$ cat seq.txtbananaapplepearorange[rocrocket@rocrocket programming]$ sort seq.txtap
阅读全文
摘要:转自:http://www.cnblogs.com/shineshqw/articles/1978122.html功能说明:利用script来处理文本文件。 语 法:sed [-hnV][-e][-f][文本文件] 补充说明:sed可依照script的指令,来处理、编辑文本文件。 参 数: -e...
阅读全文
摘要:转自:http://coolshell.cn/articles/3463.html对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录是相同的,如下所示:id name ...
阅读全文
摘要:正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。MySQL仅支持多数正则表达式实现的一个很小的子集。----------------------9.2.1 基本字符匹配REGEXP后所跟的东西作为正则表达式处理。 SELECT prod_nameFROM productsWHERE prod_name REGEXP '1000'ORDER BY prod_name;------返回------+------------------------+|
阅读全文
摘要:一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结
阅读全文
摘要:1. os这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。一个例子就是使用os.sep可以取代操作系统特定的路径分割符。下面列出了一些在os模块中比较有用的部分。它们中的大多数都简单明了。os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。os.getenv(
阅读全文
摘要:转自:http://www.west263.com/info/html/caozuoxitong/FreeBSD/20090513/123479.html当我们在因特网遨游的时候,每天都会看到诸如500错误之类的信息,这些错误代码所代表的含义作为WEB开发人员,应该必须了解的。HTTP的响应代码是三位数字值,其第一个数字定义了结果代码的类别。代码范围 含义100~199 信息——请求被接收,正在处理200~299 成功——动作被成功接收、理解和接受300~399 重定向——必须采取其他动作才能完成请求400~499 客户机错误——请求包含不良语法或无法完成500~599 服务器错误——服务器无
阅读全文
摘要:转自:http://www.cnblogs.com/hydddHttp定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。 (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请..
阅读全文
摘要:1. 求两个单链表是否相交,如果相交,求出交点a: 所有结点地址比较b:对链表1使用hash算法存储,依次查找链表2结点的地址,如果找到,则相交,否则不相交,此方法虽然效率尚可,但是占用空间很大,属于使用空间换效率的方法。c:将链表2接在链表1后面,判断链表是否有环,如果有,则相交,最后,当然不要忘记恢复原来状态,去掉第一个链表到第二个链表头的指向。d:判断交点d1:分别求链表1,2的长度x,y,链表1逆序,遍历链表2记下其长度z,则可列出一个x,y,z的方程,求出链表1或者2到结点的距离。e: 判断交点d2:分别求链表1,2的长度x,y,假设x>y,则让链表1先前进x-y部,然后两个链
阅读全文
摘要:首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。Vector与ArrayLis
阅读全文
摘要:1. 如何反序访问一个序列(how do I iterate over a sequence in reverse order)如果序列是list,则使用list.reverse()即可将序列反序。若不是list,则可以:for i in range(len(sequence)-1, -1, -1): x = sequence[i] 2. python中的类型转化Python中的类型转化较为容易。只需将等转化的对象使为参数传入目标类型即可。如:x = int('1')y = float(1)z = tuple([1, 2, 3])p = list((1, 2, 3))3. py
阅读全文