君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

2014年6月21日 #

摘要: 基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核... 阅读全文
posted @ 2014-06-21 22:30 刺猬的温驯 阅读(214) 评论(0) 推荐(0) 编辑

摘要: 问题描述:现在有非常大量的一堆对象,比如有几十亿甚至上百亿个。对象本身是什么可以忽略,每个对象都有唯一标识符和一个正整数属性值,属性值范围有限(不大于一亿)。在单核机器上,内存和磁盘空间充足,用什么方法可以最快地输出属性值最小的若干(如一万)个对象,要求输出结果按照属性值排序。先说个题外话。前几天面... 阅读全文
posted @ 2014-06-21 22:04 刺猬的温驯 阅读(266) 评论(0) 推荐(0) 编辑

摘要: 问题描述:在单向链表中,每个结点都包含一个指向下一个结点的指针,最后一个结点的这个指针被设置为空。但如果把最后一个结点的指针指向链表中存在的某个结点,就会形成一个环,在顺序遍历链表的时候,程序就会陷入死循环。我们的问题就是,如何检测一个链表中是否有环,如果检测到环,如何确定环的入口点(即求出环长,环... 阅读全文
posted @ 2014-06-21 21:52 刺猬的温驯 阅读(390) 评论(0) 推荐(0) 编辑

摘要: 1.1 频度统计法。频度统计法指以程序中语句执行次数的多少作为算法时间度量分析的一种方法。通常情况下,算法的时间效率主要取决于程序中包含的语句条数和采用的控制结构这两者的综合效果。因此,最原始且最牢靠的方法是求出所有主要语句的频度f(n),然后求所有频度之和。例如:如下形式的语句段:for (i=1... 阅读全文
posted @ 2014-06-21 18:43 刺猬的温驯 阅读(7971) 评论(0) 推荐(0) 编辑

摘要: 1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足... 阅读全文
posted @ 2014-06-21 15:27 刺猬的温驯 阅读(140) 评论(0) 推荐(0) 编辑

摘要: 快速排序是基于分治模式处理的,对一个典型子数组A[p...r]排序的分治过程为三个步骤:1.分解:A[p..r]被划分为俩个(可能空)的子数组A[p ..q-1]和A[q+1 ..r],使得A[p ..q-1] A[j]exchange A[i+1]A[r]return i+1示例:对以下数组,进行... 阅读全文
posted @ 2014-06-21 14:36 刺猬的温驯 阅读(1503) 评论(0) 推荐(0) 编辑

摘要: 1234567long int Fib(int N){if (N =2时,T(N) = T(N-1)+T(N-2)+2最后得到Fib(N)>=(3/2)的N次方,即为该程序的时间复杂度,可以看到其运行时间呈现指数级增长。 【详见斐波那契数列】 阅读全文
posted @ 2014-06-21 14:24 刺猬的温驯 阅读(387) 评论(0) 推荐(0) 编辑

摘要: 1.基本情形:必须总有某些基准情况,它无需递归即能解出。2.不断推进:对于需要递归的情形,每一次递归调用都必须要使得求解状况朝向接近基本情形的方向推进。3.设计法则:假设所有的递归调用都能运行。4.合成效益法则:在求解一个问题的同一实例时,切勿在不同递归调用中做重复性的工作。 阅读全文
posted @ 2014-06-21 14:22 刺猬的温驯 阅读(184) 评论(0) 推荐(0) 编辑

摘要: 设有一组N个数的数组,要确定其中第K个最大者,我们称之为选择问题。来看看解决此问题的思路。思路1:最直白的思路便是将数组排序,然后获取第K个数。排序算法则有很多选择。如果选择快速排序,则该”选择问题“的时间复杂度即为快排的时间复杂度:O(nlogn)思路2:首先将前K个数读入数组,并排好序。然后再依... 阅读全文
posted @ 2014-06-21 14:20 刺猬的温驯 阅读(309) 评论(0) 推荐(0) 编辑

摘要: 题目描述:输入n个整数,输出其中最小的k个元素。例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4。思路1:最容易想到的方法:先对这个序列从小到大排序,然后输出前面的最小的k个数即可。如果选择快速排序法来进行排序,则时间复杂度:O(n*logn)思路2:在思路1的基... 阅读全文
posted @ 2014-06-21 14:13 刺猬的温驯 阅读(221) 评论(0) 推荐(0) 编辑

摘要: 最近参加面试,总是被问到设计模式的问题。本人作为一个实用派,完全没搞懂作为一个功能的实现者,设计模式到底有多重要。当然,本人的意思不是说设计模式没用或者不该了解,但是这是一个度的问题,简单的模式,常用的模式,了解并会用,是必然的,但是其他模式,更深层的东西,也许留给架构师来理解更好。毕竟程序员不是架... 阅读全文
posted @ 2014-06-21 12:33 刺猬的温驯 阅读(61) 评论(0) 推荐(0) 编辑

摘要: 换种思路去理解设计模式(上)换种思路去理解设计模式(中)换种思路去理解设计模式(下)8 对象行为与操作对象8.1 过程描述所谓对象行为和操作对象,需要三方面内容:l操作过程:一般表现为一个方法。该方法接收一个对象或者组合类型的参数,然后对这个对象或者组合进行操作,例如修改属性、状态或者结构等。l操作... 阅读全文
posted @ 2014-06-21 12:31 刺猬的温驯 阅读(100) 评论(0) 推荐(0) 编辑

摘要: 换种思路去理解设计模式(上)换种思路去理解设计模式(中)换种思路去理解设计模式(下)7 多个对象组成结构7.1 过程描述上一节介绍了如何创建一个对象。但大多数情况,一个对象是不够用的,这时候就需要把对象包装、封装、多对象组合。有时候还需要将一个组合作为一个整体使用,组合要提供对外的接口,也可能会用到... 阅读全文
posted @ 2014-06-21 12:30 刺猬的温驯 阅读(103) 评论(0) 推荐(0) 编辑

摘要: 换种思路去理解设计模式(上)换种思路去理解设计模式(中)换种思路去理解设计模式(下)1 前言看过许多关于设计模式的博客,也读过关于设计模式的书。几乎所有的介绍的开头,直接就引入了“设计模式”或者“某某模式”。设计模式到底是因什么而来?这是一个很重要的问题。孙悟空从石头缝里蹦出来,《西游记》还介绍了这... 阅读全文
posted @ 2014-06-21 12:29 刺猬的温驯 阅读(98) 评论(0) 推荐(0) 编辑

摘要: 算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实... 阅读全文
posted @ 2014-06-21 12:09 刺猬的温驯 阅读(153) 评论(0) 推荐(0) 编辑