面试
otuhacker
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序
//堆排序static void swap(int &a,int &b){ if (a!=b) { a=a^b; b=a^b; a=a^b; }}void siftdown(int array[],int i, int length){ int j; for (j = 2*i+1; j < length ;) { if (j+1<length && arra原创 2013-09-22 21:48:26 · 577 阅读 · 0 评论 -
判断单链表是否有环及确定环的入口结点问题
1. 判断单链表是否有环设置两个指针 fast 和 slow 遍历链表,初始时它们都指向链表的头指针,fast指针在遍历时每次移动两步,而slow指针在遍历时一次移动一步,这样,如果单链表中存在环,fast指针必定先进入环,待slow指针也进入环时,fast指针和slow指针所指结点之间的距离会在遍历的过程中一步一步的缩小直到它们都指向同一个结点;如果链表中不存在环,那么fast指针会先到转载 2013-09-01 23:34:44 · 588 阅读 · 0 评论 -
数组分割
一、题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] | 1S(k, k) = {A[1]+A[2]+…+A[k]}S(k, i) = S(转载 2013-09-08 19:24:04 · 625 阅读 · 0 评论 -
单例模式——C++实现自动释放单例类的实例
C++编程语言是一个应用广泛的计算机应用语言,它功能强大,在一定程度上大大提高了程 序开发效率。C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共 享。有很多地方需要这样的功能模块,如系统的日志输出等。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。定义一个转载 2013-08-30 09:09:10 · 772 阅读 · 0 评论 -
应聘时最漂亮的回答! 留着 早晚用的上
1、请你自我介绍一下自己好吗?回 答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技 能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的 能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊转载 2013-08-30 09:08:02 · 626 阅读 · 0 评论 -
内排序算法小结
从以下几个方面来比较排序算法:1. 算法的时间和空间复杂度2. 排序的稳定性3. 算法结构的复杂度4. 参加排序的数据规模排序的稳定性:稳定排序方法: 插入排序、冒泡排序、二路归并排序、基数排序是稳定排序算法;不稳定排序方法: 选择排序、谢尔排序、快速排序、堆积排序是不稳定排序算法。算法复杂度比较:转载 2013-08-30 00:42:08 · 1097 阅读 · 0 评论 -
数组分割问题-详细版
题记:这道题和《编程之美》一书中2.18节的数组分割区别不大,但本人觉得《编程之美》这一节讲的不够透彻,不好理解(或许本人愚钝),故给出自己的思路,同时也给出打印其中一种方案的方法(这一点《编程之美》并没有提到)。两个序列大小均为n,序列元素的值为任一整数,无序;要求通过交换两个序列的元素,使序列a元素之和与序列b的元素之和的差最小(可能存在很多种组合,要求找出其中一种即可转载 2013-08-29 19:54:09 · 1101 阅读 · 0 评论 -
select,epoll,poll比较
select,poll,epoll简介selectselect本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1 单个进程可监视的fd数量被限制2 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大3 对socket进行扫描时是线性扫描转载 2013-08-09 09:01:41 · 497 阅读 · 0 评论 -
do while(0)在宏定义中的应用
看linux源码时,经常发现有宏定义用#define XYZ \do{...} while(0)这是一个奇怪的循环,它根本就只会运行一次,为什么不去掉外面的do{..}while结构呢?原来这也是非常巧妙的技巧。在工程中可能经常会引起麻烦,而上面的定义能够保证这些麻烦不会出现。下面是解释:假设有这样一个宏定义#define macro(condition) \i转载 2013-08-17 21:38:21 · 730 阅读 · 0 评论 -
static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,转载 2013-08-17 21:26:32 · 535 阅读 · 0 评论 -
字符串的全排列和组合算法
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。一、字符串的排列用C++写一个函数, 如 Foo(const char *转载 2013-08-17 19:15:30 · 658 阅读 · 0 评论 -
进程与线程的区别联系
对于线程,进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程是进程的一部分,进程是程序的一部分。这个说法不准确,但是可以指出期间的差别; 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一转载 2013-08-29 00:48:41 · 579 阅读 · 0 评论 -
分解质因数
#include #include using namespace std;bool IsPrimeNum(int number){ bool bIsPrimeNum = true; for (int i = int(sqrt(number));i>1;i--) { if((number%i)==0) bIsPrimeNum = false; } r转载 2013-09-02 10:44:40 · 765 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不转载 2013-09-02 17:09:31 · 713 阅读 · 0 评论 -
epoll“传说中”的性能
这年头做网络并发模型的,如果说没用过epoll,八成是要遭人鄙视的。那么,epoll的性能到底有多好?先看下面这张图但凡学过epoll的人都看过这样类似的图。图的纵轴是每秒的http响应数,其实就是系统的吞吐量(Throughput),横轴则是并发的连接数。很明显,epoll的性能要远好于传统的poll,在整个横轴范围内,无论并发的连接数是多少,epoll都保持了稳定的吞吐转载 2013-09-03 08:40:01 · 1534 阅读 · 0 评论 -
Linux命令行里的“瑞士军刀”
这里说的“瑞士军刀”是指那些简单的一句命令就能完成其它高级语言一大片代码才能完成的工作。下面的这些内容是Quora网站上Joshua Levy网友的总结:通过sort/uniq获取文件内容的交集、合集和不同之处:假设有a、b两个文本文件,文件本身已经去除了重复内容。下面是效率最高的方法,可以处理任何体积的文件,甚至几个G的文件。(Sort对内存没有要求,但也许你需要用 -T 参数。转载 2013-09-21 16:59:18 · 751 阅读 · 0 评论 -
面试
●strstr(char *str1, char *str2):在字符串中查找完全匹配的子字符串。●KMP算法:一个字符串中定位另一个串的高效算法。根据子串的最后一个字符定位,预先计算可能匹配的位置,只比较主串中与其相等的值,当然要有一个中间变量next[最后一个字符]=下一个在主串出现的下标。●函数调用方式:1.函数表达式,如max(x,y);2.函数语句,如printf()转载 2013-09-21 16:56:13 · 672 阅读 · 0 评论 -
线程安全 单例模式
class Sigleton{public: static Sigleton *GetInstance() { if (NULL == pInstance) { pthread_mutex_lock(&pMutex); if (NULL == pInstance) { pInstance = new Sigleton; } pthread_mu原创 2013-09-19 15:18:48 · 1172 阅读 · 0 评论 -
test.
//寻找数组中的最小值和最大值.《编程之美》解法三,比较次数1.5Nvoid GetMaxMinNum(int array[], int length, int &minNum, int &maxNum){ if (NULL == array || length <= 0) { return; } int posStart; if (length & 0x1 !=0) {原创 2013-09-05 13:19:38 · 803 阅读 · 0 评论 -
练习coding~
//@duanby 小顶堆. 选K小元素放入result数组中.void GetLargetstNNum(int array[],int result[],int length, int K){ priority_queue,greater > heap; int i; for (i=0;i<length;++i) { heap.push(array[i]); } for (原创 2013-09-10 08:26:29 · 744 阅读 · 0 评论 -
priority_queue的用法
priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解?#include转载 2013-08-22 11:00:56 · 579 阅读 · 0 评论 -
Linux系统调用和库函数调用的区别
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四:让api转载 2013-09-05 11:35:31 · 733 阅读 · 0 评论 -
小数精确相乘
#include #include using namespace std;void PrintMulNum(char *numA,int alen,char *numB,int blen){ if (NULL == numA || NULL == numB || alen <=0 || blen <=0) { return; } int *num1 = new int[al原创 2013-09-05 01:14:14 · 712 阅读 · 0 评论 -
C++中的虚函数的作用
纯虚函数主要是你不知道这个函数如何定义,即你无法为其写出定义部分,这部分只有在子类中才能够正确表达,比如,我们要定义一个动物类,那它的呼吸方法怎么定义呢,是像鱼那样,还是像人那样,这个没法确定,只能在子类中去定义。而虚函数则是肯定知道这个函数的定义,并且大部分子类对这方法的定义应该是差不多的,比如我们要定义一个树类,树都可以进行光合作用,大部分树其进行光合作用的方法都差不多吧,我们就可以将这个转载 2013-09-04 17:43:43 · 702 阅读 · 0 评论 -
【随机数应用之】在半径为R的圆内找随机n个点
问题描述:设rand(s,t)返回[s,t]之间的随机小数,利用该函数在一个半径为R的圆内找随机n个点,并给出时间复杂度分析。思路:在半径为R的圆内找随机的n个点,既然是找点,那么就需要为其建立坐标系,如果建立平面直角坐标系,以圆心为原点,建立半径为R的圆的直角坐标系。要使随机的点在圆内,则必须使其所找的点 point 的x,y坐标的绝对值小于R,问题转化为:随机的找n个圆转载 2013-09-03 14:33:34 · 3100 阅读 · 0 评论 -
主定理
T(n)=25T(n/5)+n^2,求T(n)?先转网上的主定理,对照主定理,题中a=25,b=5,f(n)=n^2,符合第(2)种情况,因此时间复杂度为O(n^2*Logn)转载 2013-09-09 17:38:00 · 983 阅读 · 0 评论 -
4.10 数字哑谜和回文
//21978 x 4 = 87912int main() { int m1, m2, m3, m4, m5; int n1, n2, n3, n4, n5; for (m1 = 0; m1 < 10; m1++) { for (m2 = 0; m2 < 10; m2++) { if (m原创 2013-08-28 16:05:59 · 759 阅读 · 0 评论 -
遍历二叉树的各种操作(非递归遍历)
先使用先序的方法建立一棵二叉树,然后分别使用递归与非递归的方法实现前序、中序、后序遍历二叉树,并使用了两种方法来进行层次遍历二叉树,一种方法就是使用STL中的queue,另外一种方法就是定义了一个数组队列,分别使用了front和rear两个数组的下标来表示入队与出队,还有两个操作就是求二叉树的深度、结点数。。。[cpp] view plaincopy转载 2013-08-16 22:38:59 · 908 阅读 · 0 评论 -
浅谈C++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定转载 2013-08-17 17:51:32 · 547 阅读 · 0 评论 -
字节序问题--大端法小端法
一、字节序定义字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian。引用标准的Big-End转载 2013-08-23 00:30:46 · 1402 阅读 · 0 评论 -
操作系统各大公司笔试题汇总
1、在段页式存储管理中,其虚拟地址空间是()A、一维 B、二维 C、三维 D、层次答案:B2、采用( )不会产生内部碎片(“内零头”)A、分页式存储管理转载 2013-08-10 19:55:37 · 555 阅读 · 0 评论 -
min 栈
#include using namespace std;#define MIN(a,b) ((a)struct Node{int m_min;int value;Node *next;};class Stack{private:Node *pTop;public:Stack();~Stack();int pop()原创 2013-08-09 17:54:36 · 567 阅读 · 0 评论 -
国外程序员面试经验
国外程序员面试经验导读:面试准备的重要性不用编者多言,大家都很清楚。本文是加拿大的一位程序员所写。大家可以看看国外程序员是怎么准备面试。不管你是否认同他的说法,《诗经》中有句话非常好——“它山之石,可以攻玉”。如果你还有其他面试准备方法,不妨在评论或微博中和大家一起讨论分享。 一、开门见山一般来说,你(求职者)在面试中会花很多时间谈论以前的经历。如果你还没有想出你的转载 2013-08-09 15:08:20 · 842 阅读 · 0 评论 -
八皇后问题
题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。转载 2013-08-08 16:01:45 · 663 阅读 · 0 评论 -
大数乘法
#include "iostream" #include "string" using namespace std; int main(void) { char str1[1000],str2[1000]; int i,j,len1,len2,len; bool flag=false; cout"任意两个大数的乘法(用转载 2013-08-07 10:16:36 · 487 阅读 · 0 评论 -
雅虎面试题─把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。实现了unsigned long型的转换。[cpp] view plaincopy// 十进制转换为二进制,十进制数的每1bit转换为二进制的1位数字 char *int_to_bin(unsigned long data) {转载 2013-08-06 00:54:15 · 870 阅读 · 0 评论 -
一次谷歌面试趣事
很多年前我进入硅谷人才市场,当时是想找一份高级工程师的职位。如果你有一段时间没有面试过,根据经验,有个非常有用的提醒你应该接受,就是:你往往会在前几次面试中的什么地方犯一些错误。简单而言就是,不要首先去你梦想的公司里面试。面试中有多如牛毛的应该注意的问题,你可能全部忘记了,所以,先去几个不太重要的公司里面试,它们会在这些方面对你起教育(再教育)作用。我第一家面试的公司叫做gofish.co转载 2013-07-27 00:18:17 · 505 阅读 · 0 评论 -
洗牌,随机数组
#include #include void MySwap(int *a, int *b){ *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b;}void RandArr(int *arr, int arrLen){ if (NULL == arr || arrLen <= 0) { return ; } int pos; sr原创 2013-07-23 23:36:05 · 604 阅读 · 0 评论 -
链表逆置
#include using namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;}*LinkList;void CreateLinkList(LinkList *L,int n){ //创建头结点 Node *pHead = (Node *)m原创 2013-07-23 23:23:40 · 583 阅读 · 0 评论 -
二叉排序树换成一个双向链表
/*题目:输入一棵二叉排序树,将其转换成一个双向链表。要求不能创建任何新的结点,只调整指针的指向。 10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。*/#include #include using namespace std;typedef int ElemType;typedef struct原创 2013-07-23 17:21:46 · 647 阅读 · 0 评论
分享