上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页
摘要: 1、设计模式一般用来解决什么样的问题( a)A.同一问题的不同表相B不同问题的同一表相C.不同问题的不同表相D.以上都不是2、下列属于面向对象基本原则的是( c )A.继承 B.封装 C.里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a )A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。A.创建型 B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( d )的表述A.开-闭原则B 阅读全文
posted @ 2013-05-04 15:24 曾先森在努力 阅读(3177) 评论(0) 推荐(0) 编辑
摘要: 1 所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread在运行,则虚拟机退出。虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemonthreads,JVM会使得这个threads停止,JVM也停下如果此时正在运行的其他threads有Non- 阅读全文
posted @ 2013-05-04 11:09 曾先森在努力 阅读(699) 评论(0) 推荐(0) 编辑
摘要: 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。分析:玩过麻将的都知道,骰子一共6个面,每个面上都有一个点数,对应的数字是1到6之间的一个数字。所以,n个骰子的点数和的最小值为n,最大值为6n。因此,一个直观的思路就是定义一个长度为6n-n的数组,和为S的点数出现的次数保存到数组第S-n个元素里。另外,我们还知道n个骰子的所有点数的排列数6^n。一旦我们统计出每一点数出现的次数之后,因此只要把每一点数出现的次数除以n^6,就得到了对应的概率。该思路的关键就是统计每一点数出现的次数。要求出n个骰子的点数和,我们可以先把n个骰子分为两堆:第一堆只 阅读全文
posted @ 2013-04-29 17:21 曾先森在努力 阅读(1106) 评论(0) 推荐(0) 编辑
摘要: 1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次.每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?(1) 方法一:(当N为比较大时警惕溢出)将1001个元素相加减去1,2,3,……1000数列的和,得到的差即为重复的元素。 1 int Find(int* a) 2 3 { 4 5 int i; 6 7 for (i = 0;i<=1000;i++) 8 9 a[1000] += a[i]; 10 11 a[100... 阅读全文
posted @ 2013-04-24 19:50 曾先森在努力 阅读(1260) 评论(0) 推荐(0) 编辑
摘要: 引子: 我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系了,要再次联系那位朋友的时候,我们又不得不求助电话本,但是,通过电话本查找还是很费时间的。但是,我们大脑能够记住的东西是一定的,我们只能记住自己最熟悉的,而长时间不熟悉的自然就忘记了。 其实,计算机也用到了同样的一个概念,我们用缓存来存放以前读取的数据,而不是直接丢掉,这样,再次读取的时候,可以直接在缓存里面取,而不用再重新查找一遍,这样系统的反应能力会有很大提高。但是,当我们读取的个数特别大的时候,我们不可能把所有已经读取的数据都放在缓存里,毕竟内 阅读全文
posted @ 2013-04-23 20:26 曾先森在努力 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 如何设计一个LRU Cache?Google和百度的面试题都出现了设计一个Cache的题目,什么是Cache,如何设计简单的Cache,通过搜集资料,本文给出个总结。通常的问题描述可以是这样:Question:[1] Design a layer in front of a system which cache the last n requests and the responses to them from the system.在一个系统之上设计一个Cache,缓存最近的n个请求以及系统的响应。what data structure would you use to implement 阅读全文
posted @ 2013-04-23 15:25 曾先森在努力 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。一种是:经过根节点,此时只需要求出左右子树的最大深度就可以另一种:不经过根节点,此时需要递归求解左右子树,然后比较左右子树中最大距离,求大者 1 #include "stdio.h" 2 #include"stdlib.h" 3 struct NODE 4 { 5 NODE* pLeft; // 左子树 6 NODE* pRight; ... 阅读全文
posted @ 2013-04-21 17:49 曾先森在努力 阅读(723) 评论(1) 推荐(0) 编辑
摘要: 二叉查找树按照二叉树进行组织。二叉查找树关键字的存储方式总是满足二叉查找树性质:设x为二查查找树种一个节点。如果y是x的左子树中的一个节点,那么key[x] >= key[y]。如果y是x的右子树的一个节点,那么key[x] data)16 {17 if (k data)18 {19 p = p->lchild;20 }21 else22 p = p->rchild;23 }24 return p;25 }26 27 Tree Tree_Minmum(T... 阅读全文
posted @ 2013-04-21 17:37 曾先森在努力 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 问题给定一棵二叉树,判定该二叉树是否是二叉搜索树(Binary Search Tree)?解法1:暴力搜索首先说明一下二叉树和二叉搜索树的区别。二叉树指这样的树结构,它的每个结点的孩子数目最多为2个;二叉搜索树是一种二叉树,但是它有附加的一些约束条件,这些约束条件必须对每个结点都成立:结点node的左子树所有结点的值都小于node的值。结点node的右子树所有结点的值都大于node的值。结点node的左右子树同样都必须是二叉搜索树。该问题在面试中也许经常问到,考察的是对二叉搜索树定义的理解。初看这个问题,也许会想这样来实现:假定当前结点值为k。对于二叉树中每个结点,判断其左孩子的值是否小于k, 阅读全文
posted @ 2013-04-21 10:20 曾先森在努力 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 单例模式(Singleton)1.介绍:也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 2.实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空 阅读全文
posted @ 2013-04-20 22:07 曾先森在努力 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进程协调、通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或 阅读全文
posted @ 2013-04-20 15:04 曾先森在努力 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 进程之间有8种通信方式 1无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2.高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方 阅读全文
posted @ 2013-04-20 14:34 曾先森在努力 阅读(299) 评论(0) 推荐(0) 编辑
摘要: [来源]:腾讯2013实习生笔试 给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法:要求O(1)空间复杂度和O(n)的时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等)解析:设b[0]=1由b[i]=b[i-1]*a[i-1]可得b[1] = a[0]b[2] = a[0]a[1]…b[i] = a[0]a[1]a[2]…a[i-1]…b[n-1] = a[0]a[1]…a[n-2]那么再通过b[0]这个变量来迭代出1, a[n-1], a[n-2 阅读全文
posted @ 2013-04-20 14:28 曾先森在努力 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 【试题描述】 将二叉搜索树转换为双向链表对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点。思路一:采用递归思想,对于二叉搜索树,将左、右子树分别转换为双向链表,左子树转换所得链表的头结点即整个树的头结点,左子树转换所得链表的尾节点与根节点相邻;右子树转换所得链表的尾节点即整个树的尾节点,右子树转换所得链表的头结点与根节点相邻。 1 private static Node last; 2 public static Node treeToList(Node tree) 3 { 4 Nod... 阅读全文
posted @ 2013-04-19 18:52 曾先森在努力 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 【试题描述】: 给定二叉树先序中序,建立二叉树的递归算法 其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,固根节点已可从先序序列中分离。在中序序列中找到 确定的根节点,根据中序遍历特性,在巾序序列中,根节点前面的序列即为左子树的中序遍历序列,根节点后面的即为右子树的中序遍历序列。由左右子树的中序序列长度,在该二又树的先序序列中即可找到左右子树的先序序列的分界点,从而得到二叉树的左右子树的先序序列。递归实现: 递归函数输入:二叉树的先序序列和中序序列;返回-、建好的二叉树的根节点。算法思想:1)若二叉树空,返回空;2)若不空,取先序序列第一个元素,建立 阅读全文
posted @ 2013-04-17 19:46 曾先森在努力 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 如何准备:Whether you are asked to implement a simple stack / queue, or you are asked to implementa modified version of one, you will have a big leg up on other candidates if you can flawlessly work with stacks and queues Practice makes perfect! Here is some skeleton code for a Stackand Queue class当面试官需要 阅读全文
posted @ 2013-04-12 15:39 曾先森在努力 阅读(935) 评论(0) 推荐(0) 编辑
摘要: 如何准备Linked list questions are extremely common These can range from simple (delete a node ina linked list) to much more challenging Either way, we advise you to be extremely comfortable with the easiest questions Being able to easily manipulate a linked list in the simplestways will make the tougher 阅读全文
posted @ 2013-04-12 15:37 曾先森在努力 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 如何准备:Bit manipulation can be a scary thing to many candidates, but it doesn’t need to be! If you’re shaky on bit manipulation, we recommend doing a couple of arithmetic-like problems to boost your skills Compute the following by hand: 1010 - 0001 1010 + 0110 1100^1010 1010 << 1 1001^1001 1001 阅读全文
posted @ 2013-04-12 15:09 曾先森在努力 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 【试题描述】定义一个函数,给定二叉树,给每层生成一个链表We can do a simple level by level traversal of the tree, with a slight modification of the breath-first traversal of the treeIn a usual breath first search traversal, we simply traverse the nodes without caring which level we are on In this case, it is critical to know th 阅读全文
posted @ 2013-04-11 20:28 曾先森在努力 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 【试题描述】定义一个函数,输入一个有序数组生成最小高度二叉树We will try to create a binary tree such that for each node, the number of nodes in the left subtree and the right subtree are equal, if possible Algorithm:1 Insert into the tree the middle element of the array2 Insert (into the left subtree) the left subarray elements3 阅读全文
posted @ 2013-04-11 20:26 曾先森在努力 阅读(234) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页