上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 19 下一页
摘要: 1. 给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,例如单词army和mary互为兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词?要求时间和空间效率尽可能的高。【2012年百度实习生招聘笔试题】思路一:使用trie树。在字典树的前缀中再存储一个vector结构的容器:Cpp代码structword{vectorbrother;//用于保存每个单词的兄弟单词word*next[26];//字典树中每个节点代表一个字符,并指向下一个字符};如上述数据结构所示,字典树的建立是在预处理阶段完成的,首先根据字典中的单词来 阅读全文
posted @ 2013-10-25 17:17 曾先森在努力 阅读(838) 评论(0) 推荐(0) 编辑
摘要: 作者: 阮一峰日期: 2013年5月 1日字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解释。1.首先,字符串 阅读全文
posted @ 2013-10-21 11:26 曾先森在努力 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 1、海量数据分布在100台电脑中,想个办法高校统计出这批数据的TOP10。方案1:s在每台电脑上求出TOP10,可以采用包含10个元素的堆完成(TOP10小,用最大堆,TOP10大,用最小堆)。比如求TOP10大,我们首先取前10个元素调整成最小堆,如果发现,然后扫描后面的数据,并与堆顶元素比较,如果比堆顶元素大,那么用该元素替换堆顶,然后再调整为最小堆。最后堆中的元素就是TOP10大。2、 1000万字符串,其中有些是重复的,需要把重复的全部去掉,保留没有重复的字符串。请怎么设计和实现?方案1:这题用trie树比较合适,hash_map也应该能行。3、一个文本文件,找出前10个经常出现的词, 阅读全文
posted @ 2013-10-19 21:39 曾先森在努力 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 参考博文:http://blog.csdn.net/v_july_v/article/details/6897097第一部分、Trie树1.1、什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上 阅读全文
posted @ 2013-10-19 21:31 曾先森在努力 阅读(1613) 评论(0) 推荐(0) 编辑
摘要: 题目介绍:输入为不断地数字流,实时显示出当前已经输入的数字序列的中位数解答:求中位数的方法很多,对于大数据量最经典是桶的计数方法,但是对于这个问题不适用,因为数据是不断变化的可以用最大堆和最小堆来解答这个问题:1.假设当前的中位数为m,其中最大堆维护的是=m的数字序列,但是两个堆都不包含m2.当新的数字到达时,比如为a,将a与m进行比较,若a=2 ,则将m加入到元素个数少的堆中,然后从元素个数多的堆将根节点赋值到m,最后重建两个最大堆和最小堆,返回到2转:http://yaronspace.cn/blog/index.php/archives/1306 阅读全文
posted @ 2013-10-19 19:38 曾先森在努力 阅读(926) 评论(0) 推荐(0) 编辑
摘要: 我们现在说Recursive backtracking:迷宫的初始状态是墙壁都存在。选择一个开始区域。随机得选择一个没有访问过的邻接区域,并打通与它之间的墙壁。此邻接区域称为当前区域。如果所有周围的区域都是访问过的,则退回上一个区域进行挖据墙壁,一直重复。当开始的区域被退回的时候,算法结束。大家都知道,至于迷宫的求解问题,可以用穷举法进行求解。那么什么是穷举法了,就是将每一种可能的情况都穷举完。而具体到迷宫的求解问题上,由于在求解过程中可能会遇到某一路径不可行的情况,此时我们就必须按原路返回,这时自然也就会想到栈的应用了,因为栈的一个很重要的特性就是”先进后出”,可以用来记录每次所探索的路径, 阅读全文
posted @ 2013-10-17 08:25 曾先森在努力 阅读(1222) 评论(0) 推荐(0) 编辑
摘要: 树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。二叉树节点定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};... 阅读全文
posted @ 2013-10-14 21:14 曾先森在努力 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:structListNode{ int m_nKey; ListNode * m_pNext;};详细解答1.求单链表中结点的个数这是最最基本的了,应该能够迅速写出正确的代码,注意检查链表是否为空。时间复杂度为O(n)。参考代码如下:[cpp] view plaincopypri.. 阅读全文
posted @ 2013-10-14 21:05 曾先森在努力 阅读(301) 评论(0) 推荐(0) 编辑
摘要: HTTP返回码表示的意思大约分为五大类,如下: 1×× 保留 2×× 表示请求成功地接收 3×× 为完成请求客户需进一步细化请求 4×× 客户错误 5×× 服务器错误 常见的返回码有: 404 Not Found 无法找到URL指定的资源,即路径错误。 500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。一般是程序错误。 503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的 阅读全文
posted @ 2013-10-11 18:32 曾先森在努力 阅读(349) 评论(0) 推荐(0) 编辑
摘要: ----------------------------------------以下是分割线----------------------------------------我们都知道Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类。Ojbect类中有两个方法equals、hashCode,这两个方法都是用来比较两个对象是否相等的。java中比较两个对象不是用“==”吗?对于String a=”hello”;String b=”hello”,比较两个字符串是否相等,我们都知道必须用equals方法,而不是用==。 因为a,b是内存中两个不同的对象,他们指向两个内存中 阅读全文
posted @ 2013-10-09 21:45 曾先森在努力 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 本文内容:20个最常见的JAVA面试问题(附答案)13个单例模式JAVA面试问题(附答案)说说JVM和垃圾收集是如何工作的(附答案)说说如何避免JAVA线程死锁(附答案)Java中HashSet和HashMap的区别(附答案)Java面试中和Collection有关的10个问题(附答案)Java面试中和Spring相关的10个问题(附答案)30个C/C++/Java面试中的常见算法问题Stackoverflow中回复超过20的算法问题面试攻略微软面试技术题(附答案)20个最常见的JAVA面试问题(附答案)1. What is immutable object? Can you write im 阅读全文
posted @ 2013-10-09 09:05 曾先森在努力 阅读(1830) 评论(0) 推荐(0) 编辑
摘要: 什么是Future?用过Java并发包的朋友或许对Future (interface)已经比较熟悉了,其实Future本身是一种被广泛运用的并发设计模式,可在很大程度上简化需要数据流同步的并发应用开发。在一些领域语言(如Alice ML)中甚至直接于语法层面支持Future。这里就以java.util.concurrent.Future为例简单说一下Future的具体工作方式。Future对象本身可以看作是一个显式的引用,一个对异步处理结果的引用。由于其异步性质,在创建之初,它所引用的对象可能还并不可用(比如尚在运算中,网络传输中或等待中)。这时,得到Future的程序流程如果并不急于使用Fu 阅读全文
posted @ 2013-10-09 09:01 曾先森在努力 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区别。8. 内存池、进程池、线程池。(c++程序员必须掌握)9. 死锁的概念,导致死锁的原因.10. 导致死锁的四个必要条件。11. 处理死锁的四个方式。12. 预防死锁的方法、避免死锁的方法。13. 进程调度算法。(周转时间 =程序结束时间 -- 开始服务时间、带 阅读全文
posted @ 2013-10-09 08:53 曾先森在努力 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 网络编程,对网络的理解是面试几乎必问的内容,所以,要好好学习网络知识。网络编程无非就是涉及到tcp,udp,ip,ICMP,http协议等。TCP建立连接的时候三次握手TCP断开连接的时候四次握手,断开连接的时候Time_wait时间、平静时间。TCP连接中的TIME_WAIT状态http://www.apkbus.com/android-13543-1-1.htmlTCP连接中的TIME_WAIT状态二http://www.apkbus.com/android-13544-1-1.htmlTCP/IP协议详解http://www.apkbus.com/android-13528-1-1.ht 阅读全文
posted @ 2013-10-05 15:35 曾先森在努力 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 1:tcp和udp的区别2:流量控制和拥塞控制的实现机制3:滑动窗口的实现机制4:多线程如何同步。5:进程间通讯的方式有哪些,各有什么优缺点6:tcp连接建立的时候3次握手的具体过程,以及其中的每一步是为什么7:tcp断开连接的具体过程,其中每一步是为什么那么做8:tcp建立连接和断开连接的各种过程中的状态转换细节9:epool与select的区别10:epool中et和lt的区别与实现原理11:写一个server程序需要注意哪些问题12:项目中遇到的难题,你是如何解决的3. 网络编程的一般步骤对于TCP连接:1.服务器端1)创建套接字create;2)绑定端口号bind;3)监听连接list 阅读全文
posted @ 2013-10-05 15:32 曾先森在努力 阅读(3386) 评论(0) 推荐(0) 编辑
摘要: TCP/IP协议共分四层:① 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。② 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(internet互联网控制报文协议),以及IGMP协议(internet组管理协议)。③ 传输层,主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报协议)。 TCP为两台主机提供 阅读全文
posted @ 2013-10-05 15:28 曾先森在努力 阅读(399) 评论(0) 推荐(0) 编辑
摘要: NAT 即网络地址转换NAT作用:实现内网IP地址和公网IP地址之间的转换可以有效地缓解IP地址危机可以隐藏内网地址实现负载均衡实现内网和内网之间的通信NAT分类:分类静态NAT:将内网IP地址一对一地转换成外网IP地址用于内网IP隐藏无法缓解IP地址危机问题使用场合内网中的E-mail、FTP和Web等服务器往往要同时为内网和外网用户提供服务,要为外网用户提供服务就必须采用静态NAT。动态NAT:将外网合法的地址形成可用的NAT池内网IP需要上网时,从NAT池中... 阅读全文
posted @ 2013-10-05 15:13 曾先森在努力 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 1. 产生原因: 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程。通过ps命令查看其带有defunct的标志。僵尸进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程。因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init进程来接管他,成为他的父进程,从而保证每个进程都会有一个父进程。而Init进程会自动wait其子进程,因.. 阅读全文
posted @ 2013-10-05 15:04 曾先森在努力 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 简述:1.开机BIOS自检2.MBR引导3.grub引导菜单4.加载内核kernel5.启动init进程6.读取inittab文件,执行rc.sysinit,rc等脚本7.启动mingetty,进入系统登陆界面 阅读全文
posted @ 2013-10-05 15:00 曾先森在努力 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 内联接:左表的一行和右表的每一行进行比较, 如果左表的一行和右表的一行符合联接条件,则返回为结果集中的一行 ------ 等效于where条件当联接表时,创建的联接类型影响出现在结果集内的行。可以创建下列联接类型: 仅显示两个联接表中的匹配行的联接。(这是查询设计器中的默认联接类型。)例如,可以联接 titles 表和 publishers 表以创建显示每个书名的出版商名称的结果集。在内联接中,结果集内不包含没有出版商信息的书名,也不包含没有书名的出版商。这类联接所得到的 SQL 可能象下面这样:· SELECT title, pub_name· FROM titles I 阅读全文
posted @ 2013-10-05 14:49 曾先森在努力 阅读(513) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 19 下一页