04 2013 档案

摘要:题目:把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 曾先森在努力 阅读(1165) 评论(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 曾先森在努力 阅读(1297) 评论(0) 推荐(0)
摘要:引子: 我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系了,要再次联系那位朋友的时候,我们又不得不求助电话本,但是,通过电话本查找还是很费时间的。但是,我们大脑能够记住的东西是一定的,我们只能记住自己最熟悉的,而长时间不熟悉的自然就忘记了。 其实,计算机也用到了同样的一个概念,我们用缓存来存放以前读取的数据,而不是直接丢掉,这样,再次读取的时候,可以直接在缓存里面取,而不用再重新查找一遍,这样系统的反应能力会有很大提高。但是,当我们读取的个数特别大的时候,我们不可能把所有已经读取的数据都放在缓存里,毕竟内 阅读全文
posted @ 2013-04-23 20:26 曾先森在努力 阅读(619) 评论(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 曾先森在努力 阅读(285) 评论(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 曾先森在努力 阅读(742) 评论(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 曾先森在努力 阅读(545) 评论(0) 推荐(0)
摘要:问题给定一棵二叉树,判定该二叉树是否是二叉搜索树(Binary Search Tree)?解法1:暴力搜索首先说明一下二叉树和二叉搜索树的区别。二叉树指这样的树结构,它的每个结点的孩子数目最多为2个;二叉搜索树是一种二叉树,但是它有附加的一些约束条件,这些约束条件必须对每个结点都成立:结点node的左子树所有结点的值都小于node的值。结点node的右子树所有结点的值都大于node的值。结点node的左右子树同样都必须是二叉搜索树。该问题在面试中也许经常问到,考察的是对二叉搜索树定义的理解。初看这个问题,也许会想这样来实现:假定当前结点值为k。对于二叉树中每个结点,判断其左孩子的值是否小于k, 阅读全文
posted @ 2013-04-21 10:20 曾先森在努力 阅读(538) 评论(0) 推荐(0)
摘要:单例模式(Singleton)1.介绍:也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 2.实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空 阅读全文
posted @ 2013-04-20 22:07 曾先森在努力 阅读(423) 评论(0) 推荐(0)
摘要:操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进程协调、通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或 阅读全文
posted @ 2013-04-20 15:04 曾先森在努力 阅读(366) 评论(0) 推荐(0)
摘要:进程之间有8种通信方式 1无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2.高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方 阅读全文
posted @ 2013-04-20 14:34 曾先森在努力 阅读(312) 评论(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 曾先森在努力 阅读(593) 评论(0) 推荐(0)
摘要:【试题描述】 将二叉搜索树转换为双向链表对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点。思路一:采用递归思想,对于二叉搜索树,将左、右子树分别转换为双向链表,左子树转换所得链表的头结点即整个树的头结点,左子树转换所得链表的尾节点与根节点相邻;右子树转换所得链表的尾节点即整个树的尾节点,右子树转换所得链表的头结点与根节点相邻。 1 private static Node last; 2 public static Node treeToList(Node tree) 3 { 4 Nod... 阅读全文
posted @ 2013-04-19 18:52 曾先森在努力 阅读(232) 评论(0) 推荐(0)
摘要:【试题描述】: 给定二叉树先序中序,建立二叉树的递归算法 其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,固根节点已可从先序序列中分离。在中序序列中找到 确定的根节点,根据中序遍历特性,在巾序序列中,根节点前面的序列即为左子树的中序遍历序列,根节点后面的即为右子树的中序遍历序列。由左右子树的中序序列长度,在该二又树的先序序列中即可找到左右子树的先序序列的分界点,从而得到二叉树的左右子树的先序序列。递归实现: 递归函数输入:二叉树的先序序列和中序序列;返回-、建好的二叉树的根节点。算法思想:1)若二叉树空,返回空;2)若不空,取先序序列第一个元素,建立 阅读全文
posted @ 2013-04-17 19:46 曾先森在努力 阅读(469) 评论(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 曾先森在努力 阅读(966) 评论(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 曾先森在努力 阅读(230) 评论(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 曾先森在努力 阅读(280) 评论(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 曾先森在努力 阅读(193) 评论(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 曾先森在努力 阅读(251) 评论(0) 推荐(0)
摘要:【试题描述】定义一个函数,输入判断一个树是否是另一个对的子树You have two very large binary trees: T1, with millions of nodes, and T2, with hun-dreds of nodes Create an algorithm to decide if T2 is a subtree of T1Note that the problem here specifies that T1 has millions of nodes—this means that we should be careful of how much sp 阅读全文
posted @ 2013-04-11 20:24 曾先森在努力 阅读(277) 评论(0) 推荐(0)
摘要:【试题描述】定义一个函数,输入一个链表,删除无序链表中重复的节点【参考代码】方法一:Without a buffer, we can iterate with two pointers: “current” does a normal iteration, while“runner” iterates through all prior nodes to check for dups Runner will only see one dupper node, because if there were multiple duplicates they would have been remov 阅读全文
posted @ 2013-04-11 20:19 曾先森在努力 阅读(266) 评论(0) 推荐(0)
摘要:【试题描述】定义一个函数,输入一个链表,判断链表是否存在环路平衡二叉树,又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差之差的绝对值不超过1。问题:判断一个二叉排序树是否是平衡二叉树这里是二叉排序树的定义解决方案:根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。首先编写一个计算二叉树深度的函数,利用递归实现。【参考代码】方法一: 1 //返回树的最大深度 2 public static int Depth(Node root) 3 { 4 if (... 阅读全文
posted @ 2013-04-11 20:05 曾先森在努力 阅读(348) 评论(0) 推荐(0)
摘要:【试题描述】定义一个函数,输入一个链表,判断链表是否存在环路,并找出回路起点Circular linked list: A (corrupt) linked list in which a node’s next pointer points to an earlier node, so as to make a loop in the linked listEXAMPLEInput: A -> B -> C -> D -> E -> C [the same C as earlier]Output: CIf we move two pointers, one wi 阅读全文
posted @ 2013-04-11 19:53 曾先森在努力 阅读(422) 评论(0) 推荐(0)
摘要:【试题描述】定义一个函数,字符串转数组数组转字符串【参考代码】 1 public static int strToInt(String str) 2 { 3 int i = 0, num = 0; 4 char[] strTemp = str.toCharArray(); 5 boolean isNeg = false; 6 int len = str.length(); 7 8 if (strTemp[0] == '-') 9 {10 isNeg = tr... 阅读全文
posted @ 2013-04-11 19:50 曾先森在努力 阅读(254) 评论(0) 推荐(0)
摘要:【试题描述】定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点【参考代码】方法一: 1 public static Link reverseLinkList(Link head) 2 { 3 if (head == null || head.next == null) 4 return head; 5 6 Link pre = null; 7 Link cur = head; 8 Link back = head.next; 9 10 while (ba... 阅读全文
posted @ 2013-04-11 19:46 曾先森在努力 阅读(210) 评论(0) 推荐(0)
摘要:【试题描述】求二叉树中任意两个节点的最近公共祖先也称为LCA问题(Lowest Common Ancestor)。二叉查找树如果该二叉树是二叉查找树,那么求解LCA十分简单。基本思想为:从树根开始,该节点的值为t,如果t大于t1和t2,说明t1和t2都位于t的左侧,所以它们的共同祖先必定在t的左子树中,从t.left开始搜索;如果t小于t1和t2,说明t1和t2都位于t的右侧,那么从t.right开始搜索;如果t1 right) { 7 int temp = left; 8 left = right; 9 right = temp;10 ... 阅读全文
posted @ 2013-04-11 19:33 曾先森在努力 阅读(455) 评论(0) 推荐(0)
摘要:【试题描述】输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。思路:同样是用递归求解。可以考虑求长度为n的字符串中m个字符的组合,设为C(n,m)。原问题的解即为C(n, 1), C(n, 2),...C(n, n)的总和。对于求C(n, m),从第一个字符开始扫描,每个字符有两种情况,要么被选中,要么不被选中,如果被选中,递归求解C(n-1, m-1)。如果未被选中,递归求解C(n-1, m)。不管哪种方式,n的值都会减少,递. 阅读全文
posted @ 2013-04-11 17:13 曾先森在努力 阅读(250) 评论(0) 推荐(0)
摘要:如何理解递归,写出正确的递归程序,我觉得有几个关键点:1.要从整体把握问题递归的难点在于人脑并不适合去跟踪递归中自己调用自己的这个过程,这是因为人脑中不像计算机一样有一个可以记忆的堆栈,但是不同的是人是会归纳的,而计算机只知道调用-返回。因此,理解和设计递归,一定要从整体把握,数学归纳法和递归是一个对称的关系,数学归纳法不断的扩展自己,递归则是不断的分解自己。递归中的递就是把主问题分解成子问题,归就是利用子问题的解逐步向上求解的过程了。关键点是要善用数学归纳法里面的假设,就是假设子问题已经求解了,它得到的结果是什么,一旦这么想就是在从整体上把握问题,不必再去纠结细节。设计一个递归函数的时候,首 阅读全文
posted @ 2013-04-10 16:13 曾先森在努力 阅读(1878) 评论(0) 推荐(1)
摘要:【试题描述】输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba。分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。我们以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列求好之后,我们把第一个字符a和后面的b交换,得到bac,接着我们固定第一个字符b,求后面两个字符ac的排列。现在是把c放到第一位置的时候了。记住前面我们已经把原先的第一个字符a和后面的b做了交换,为了保证这 阅读全文
posted @ 2013-04-09 22:13 曾先森在努力 阅读(309) 评论(0) 推荐(1)
摘要:【试题描述】 You are given a binary tree in which each node contains a value. Design an algorithm to print all paths which sum up to that value. Note that it can be any path in the tree-it does not have to start at the root. 输入一个整数和一棵二元树。从树的任意结点开始往下访问所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。解题思路: 一层一层的遍历,保存当前节点到根节 阅读全文
posted @ 2013-04-09 20:09 曾先森在努力 阅读(323) 评论(0) 推荐(0)
摘要:【试题描述】输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数 22 和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12 和 10, 5, 7。据说这是百度的一道笔试题。分析:这道题考查对二叉树遍历方式的理解,采用后序遍历,如果把二叉树看成图,就是图的深度遍历。使用变量存放当前遍历的路径和,当访问到某一结点时,把该结点添加到路径上,并累加当前结点的值。如果当前结点为叶结点并且当前路径的和刚好等于... 阅读全文
posted @ 2013-04-09 19:08 曾先森在努力 阅读(1062) 评论(0) 推荐(0)
摘要:【试题描述】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。【试题分析】时间复杂度O(n),空间复杂度O(1) 思路1: 创建一个hash_map,key为数组中的数,value为此数出现的次数。遍历一遍数组,用hash_map统计每个数出现的次数,并用两个值存储目前出现次数最多的数和对应出现的次数。 这样可以做到O(n)的时间复杂度和O(n)的空间复杂度,满足题目的要求。 但是没有利用“一个数出现的次数超过了一半”这个特点。也许算法还有提高的空间。 思路2: 使用两个变量A和B,其中A存储某个数组中的数,B用来计数。开始时将B初始化为0。 遍历... 阅读全文
posted @ 2013-04-09 17:08 曾先森在努力 阅读(183) 评论(0) 推荐(0)
摘要:【试题描述】输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度O(n)。思路:当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。【参考代码】 1 public static int maxSum(int[] a) { 2 int sum = 0; 3 int b = 0; 4 for (int i = 0; i 0 *这个公式的意义: * 当以第(... 阅读全文
posted @ 2013-04-09 16:52 曾先森在努力 阅读(283) 评论(0) 推荐(0)
摘要:【试题描述】我们把只包含因子2、3和5的数称作丑数。求按从到大的顺序的第1500个丑数。例如6,8是丑数,而14不是,因为它包含因子7.习惯上把1当作第一个丑数。 根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以创建一个数组,里面的数字是排好序的丑数。里面的每一个丑数是前面的丑数乘以2、3或者5得到的。那关键就是确保数组里的丑数是有序的了。我们假设数组中已经有若干个丑数,排好序后存在数组中。 接下来我们换一种思路来分析这个问题,试图只计算丑数,而不在非丑数的整数上花费时间。根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以创建一 阅读全文
posted @ 2013-04-09 16:19 曾先森在努力 阅读(275) 评论(0) 推荐(0)
摘要:【试题描述】写一个函数,求两个整数的和,要求在函数体内不得使用加减乘除四则运算符合。基本思路是这样的:int A, B;A&B //看哪几位有进位A^B //不带进位加考虑二进制加法的过程,步骤一、A^B,能够得到没有进位的加法。步骤二、A&B,能够得到相加之后,能够进位的位置的信息。向左移动一位,就是两个二进制数相加之后的进位信息。所以,(A&B)<<1就是两个二进制数相加得到的“进位结果”。步骤三、将前两步的结果相加。相加的过程就是步骤一和步骤二,直到不再产生进位为止。【参考代码】 1 public static int func2(int a, int 阅读全文
posted @ 2013-04-09 15:51 曾先森在努力 阅读(431) 评论(0) 推荐(0)
摘要:进程是什么?程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。有了进程为什么还要线程?进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。很多人就不理解了,既然进 阅读全文
posted @ 2013-04-09 15:01 曾先森在努力 阅读(205) 评论(0) 推荐(0)
摘要:称球问题一般会有以下3种变形: 1、N个球,其中有一个坏的,知道是轻还是重,用天平称出坏球来。 2、N个球,其中有一个坏的,不知是轻还是重,用天平称出坏球来。 3、N个球,其中有一个坏的,不知是轻还是重,用天平称出坏球来,并告知坏球是轻还是重。 对于上面3种情况,称量n次,最多可以在几个球中找出坏球来? 答案:分别为:3^n, (3^n - 1)/2, (3^n - 3)/2. 阅读全文
posted @ 2013-04-06 16:40 曾先森在努力 阅读(273) 评论(0) 推荐(0)
摘要:概念:在Java应用程序中,一个类Class只有一个实例存在.单例模式属于对象创建型模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。对一些类来说,只有一个实例是很重要的,虽然系统中可以有许多打印机,但却只应该有一个打印机假脱机,只应该有一个文件系统和一个窗口管理器,一个数字滤波器只能有一个A/D转换器,一个会计系统只能专用于一个公司。怎样才能保证一个类只有一个实例并且这个实例易于被访问,一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象,一个更好的方法是让类自身负责保存他的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法,这就 阅读全文
posted @ 2013-04-04 20:34 曾先森在努力 阅读(294) 评论(0) 推荐(0)
摘要:内存泄露是指系统中存在无法回收的内存,有时候会造成内存不足或系统崩溃。虽然Java存在内存泄露,但是基本上不用很关心它,非凡是那些对代码本身就不讲究的就更不要去关心这个了。Java中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。而且即使有内存泄露问题存在,也不一定会表现出来。Java是如何管理内存 为了判断Java中是否有内存泄露,我们首先必须了解Java是如何管理内存的。Java的内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的释放是由GC决定和执行的。在J. 阅读全文
posted @ 2013-04-03 07:39 曾先森在努力 阅读(756) 评论(0) 推荐(0)
摘要:一道java 常见面试题,网上找到的几乎每个 java 面试笔试题大全或集锦里都能找到这道题。 题目如下: 问: 抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数 答案很明确,可以继承。 一道java 常见面试题,网上找到的几乎每个 java 面试笔试题大全或集锦里都能找到这道题。题目如下:问: 抽象类是否可继承实体类 (concrete class)答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数答案很明确,可以继承。其实从Object就是个实体类,java的API文档里,每个抽象类的条目里都明确写着直 阅读全文
posted @ 2013-04-01 21:55 曾先森在努力 阅读(439) 评论(0) 推荐(0)
摘要:JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。Java和c++的相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,并且编程环境更为简单。我在这里不能完全列出不同之处,仅列出比较显著的区别:1.指针JAVA语言让编程者无法找到指针来直接访问内 阅读全文
posted @ 2013-04-01 11:02 曾先森在努力 阅读(260) 评论(0) 推荐(0)