面试题
文章平均质量分 73
wzb56
never say die! never ever give up!
人活着,你也让别人活!
前半生不犹豫,后半生不后悔!
改变一生的无外乎两种东西:一是你读过的书,一是你遇到的人。
改变命运的无外乎两种东西:一是你读过的书,一是你遇到的人。
展开
-
求数组中和最大的子数组(数组中和最大的子串)
又一个经典问题,对于一个包含负值的数字串array[1...n],要找到他的一个子串array[i...j](0这里我们需要注意子串和子序列之间的区别。子串是指数组中连续的若干个元素,而子序列只要求各元素的顺序与其在数组中一致,而没有连续的要求。对于一个元素数为n的数组,其含有2^n个子序列和n(n+1)/2个子串。如果使用穷举法,则至少需要O(n^2)的时间才能得到答案。卡耐基梅隆大转载 2012-04-23 22:11:37 · 2079 阅读 · 0 评论 -
题目:求两个方阵A,B的乘积
题目:求两个方阵A,B的乘积方阵product;分析 product[i,j] 是A的第i行的元素与B的第j列的元素 逐个乘积作和。即:。代码实现:#include #include int *multiplyMatrixs(int *a, int *b, int *p, int n);void printMatrixArray(in原创 2012-10-15 19:58:52 · 4420 阅读 · 0 评论 -
在整数集合S中寻找最大数整数C, 使 C = A + B,并且 A,B, C,都是S中的元素
题目:在整数集合S中寻找最大数整数C, 使 C = A + B,并且 A,B, C,都是S中的元素;分析:将集合S中所有元素排序,生成一个有序的序列,利用偏序序列的传递性。贪心的优化策略。1.首选对S中元素排序,升序。2. C = s[k] (k = len -1, ..... 2) ;每次选最大的元素为C,对于每个C,选A为最小的元素, 选B为仅次于C的最大元素原创 2012-10-15 21:00:29 · 1163 阅读 · 0 评论 -
技巧:用 C 语言实现程序的多态性: C中只有两种类型int 和void *, 万能指针void *
技巧:用 C 语言实现程序的多态性王 广, 硕士研究生, 中国科学技术大学简介: 使用面向对象的语言可以实现多态,并且在很大程度上降低了代码的复杂性。对于面向过程的 C 语言同样可以实现多态,本文将着重介绍 C 语言是如何实现多态的。发布日期: 2010 年 8 月 17 日 级别: 初级 访问情况 : 8880 次浏览 评论:转载 2012-10-16 21:59:16 · 1693 阅读 · 1 评论 -
C语言实现封装、继承和多态
作者:Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:http://dongxicheng.org/cpp/ooc/1、 概述C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是struct,查找Int转载 2012-10-17 00:01:50 · 1075 阅读 · 0 评论 -
面向对象的设计原则
对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。 面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模转载 2012-10-17 14:44:25 · 642 阅读 · 0 评论 -
函数调用约定和堆栈
函数调用约定和堆栈1 什么是堆栈编译器一般使用堆栈实现函数调用。堆栈是存储器的一个区域,嵌入式环境有时需要程序员自己定义一个数组作为堆栈。Windows为每个线程自动维护一个堆栈,堆栈的大小可以设置。编译器使用堆栈来堆放每个函数的参数、局部变量等信息。函数调用经常是嵌套的,在同一时刻,堆栈中会有多个函数的信息,每个函数占用一个连续的区域。一个函数占用的区域被称作帧(frame)转载 2012-10-18 23:21:53 · 760 阅读 · 0 评论 -
统计一个整数n的二进制表示中1的个数的几种解法
统计一个整数n的二进制表示中1的个数;分析:此题有多种解法.1. 除2取余法:求一个整数的二进制的表示是,用的方法是除2取余。对于本题,只是统计一下余数为1的个数而已。2. 位模式法+移位:1的变种,用移位代除2,该方法更高效。用位模式,与1相与,取得一位。3. 模式位法: n = n& (n -1); 考虑 n 与 n -1的二进制表示,两者相&, n-1总能将n的最低位的1,原创 2012-10-29 18:37:56 · 2531 阅读 · 0 评论 -
写一个程序判断机器的的数据表示采用的是大端还是小端?
写一个程序判断机器的的数据表示采用的是大端还是小端?分析:大小端问题:计算机存储数据的最基本的单位是byte(字节,8bit)。c语言中,32位机的情形下: char 1byte; short 2bytes; int 4bytes;对于 short, int 这种多字节的原创 2012-10-31 20:05:37 · 1597 阅读 · 0 评论 -
用递归的方法求一个二叉树的深度。
用递归的方法求一个二叉树的深度。1. 空树的深度为0.2. 非空树的深度,为其左右子树中深度较大的子树的深度+1.代码实现:typedef struct node{ item_t item; struct node *left; struct node *right;} node_t;typedef node_t * Bi原创 2012-10-22 20:41:08 · 1213 阅读 · 0 评论 -
用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。
用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。分析: 可以通过交换首尾字符,实现字符串的反转,即就地反转。代码实现:void revert(char *str) { assert(NULL != str); if( NULL == str) return ; char *head = str;原创 2012-10-22 20:31:50 · 1698 阅读 · 0 评论 -
实习生面试总结
很久以前,写的面试总结。1. 你知道什么是系统平台开发? (面试的是系统平台开发工程师)系统平台就是提供基础服务的平台。(比如现在的云平台等,)(回答这个的时候,有点二,说就是做系统平台相关的开发。)2. 你的网站是用什么做的?你的web服务器使用的是?你用的php的版本? html + css+js. (实验室网站) php. (精原创 2012-10-28 09:18:45 · 1334 阅读 · 0 评论 -
题目:给一个排序好的整数数组A,请写一个函数,输入是数组A和一个整数x,返回数组A中值小于x的最大元素的索引值
题目:给一个排序好的整数数组A(升序),请写一个函数,输入是数组A和一个整数key,返回数组A中值小于key的最大元素的索引值。分析:因为有序,故可以使用折半查找的思想,但是需要变通实现。实现如下:#include int modifiedBinarySearch(int list[], int len, int key);int main(int argc原创 2012-10-15 18:02:18 · 4143 阅读 · 0 评论 -
多叉树后序转前序++
多叉树前序转后序返回比赛首页给定一颗多叉树,该多叉树可以用一个后序遍历的字符串表示为4(0),5(0),1(2),6(0),2(1),7(0),8(0),9(0),10(0),3(4),0(3)其中括号内的数字表示该节点的子节点数,比如0(3)表示节点0有3个子节点,而节点按照后序遍历的顺序排列。给定一个类似的多叉树后序遍历的字符串,试写原创 2012-09-18 21:03:18 · 1111 阅读 · 0 评论 -
NVDIA(英伟达)一道笔试笔试编程题
NVDIA(英伟达)一道笔试笔试编程题Given an integer number N(n = m^2 - 1), print sequence 0, 1, 2, 3, ..., n,in below form. You can only use printf(C) or cout(C++). For example, given n = 24(5^2 - 1), the pro原创 2012-04-18 20:16:57 · 7295 阅读 · 0 评论 -
2012年小米校园招聘实习生笔试编程题
小米笔试编程题1. 删除一个字符串中多余的空格,即将字符串中连续的多个空格压缩为一个。 方法一: 将字串拷贝到另一个数组,然后再拷贝到原来的字符数组,在拷贝的过程中跳过多余的空格(多个空格只拷贝一个)。缺点:需要辅助空间。 方法二: 提供一个虚拟数组,和方法一类似,只是方法一中的辅助数组,就是字符串数组本身,用移动代替拷贝,从而避免了一些不必要的拷贝。方原创 2012-04-12 22:32:45 · 1837 阅读 · 0 评论 -
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。利用短路 &&,和短路|| 的特性,实现代码如下:int s=0;int sum(int n) { (!n) && (s +=0); (n) && (s = n + sum(n-1) );原创 2012-05-15 15:31:18 · 1547 阅读 · 1 评论 -
用头插法反转链表
题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:typedef char item_t;typedef struct node { item_t item; struct node * next;} node_t;分析: 使用头插法可以快速实现反转。所谓头插法, 即每次将新节点插入到链表的头节点之前。 实现代码如下原创 2012-05-16 15:03:39 · 2206 阅读 · 0 评论 -
求链表中倒数第k个结点
求链表中倒数第k个结点题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。更优化的算法,第二个指针每次移动k步而不是一步,减少遍历的次数!//将链表中的每k个节点作为一组处理,//倒数第k个元素只能出现在最后一组, (节点的个数是k的整数倍时)//或者倒数第二组,(节点的个数不是 k的整数倍时)原创 2012-05-15 22:08:39 · 1351 阅读 · 0 评论 -
求一个字符串中连续出现次数最多的子串
题目:求一个字符串中连续出现次数最多的子串 ,给出分析和代码。分析: 一个字符串连续出现次数最多的字符串: 将该连续出现多次的字符串称为循环节,有3个属性: (1) 循环节的首地址,即首字符的指针。 substr (2) 循环节的长度。 (3 )循环节出现的次数。求str[i]为首字符的所有循环节中出现次数最多的循环节,(i= 0,1, 2,....原创 2012-06-29 11:05:02 · 1432 阅读 · 0 评论 -
国际标准智商测试题 (转载)
国际标准智商测试题 (转载) 智商,就是IQ(Intelligence Quotient的简称),通俗地可以理解为智力,是指数字、空间、逻辑、词汇、创造、记 忆等能力,它是德国心理学家施特恩在1912年提出的。智商表示人的聪明程度:智商 越高,则表示越聪明。想检验自己的智商是多少吗?这并不困难,以下就是一例国内 较权威的IQ测试题,请在30分钟内完成(30题),之后你就转载 2012-06-25 14:28:27 · 604521 阅读 · 1 评论 -
中文分词:之Trie树
中文分词一直都是中文自然语言处理领域的基础研究。目前,网络上流行的很多中文分词软件都可以在付出较少的代价的同时,具备较高的正确率。而且不少中文分词软件支持Lucene扩展。但不管实现如何,目前而言的分词系统绝大多数都是基于中文词典的匹配算法。 在这里我想介绍一下中文分词的一个最基础算法:最大匹配算法 (Maximum Matching,以下简称MM算法) 。MM算法有两种:一种正向转载 2012-08-24 10:06:16 · 10515 阅读 · 0 评论 -
两个有意思的计算机相关的智力题
1. 亮灯问题: 现有100盏灯,编号1到100。每盏灯都有一个开关,开始时,100盏灯全部关闭。 做如下操作: . 第1次,按下所有编号是1 的倍数的灯的开关; . 第2次,按下所有编号是 2 的倍数的灯的开关; . 第3次,按下所有编号是 3 的倍数的灯的开关; …………………… .原创 2012-09-09 12:58:53 · 1476 阅读 · 0 评论 -
2012年奇虎360校园招聘实习生笔试编程题
2012年奇虎360校园招聘实习生笔试编程题1. 自己实现库函数 int atoi(const char* str); 注意两点:(1). 字符串中,符号位的处理。 (2).字符串中,出现非数字字符。(3). 进制考虑(如八进制只以0开头,十六进制以0x或者0X开头) 实现原理: 霍纳规则(Horno原创 2012-04-14 09:17:35 · 3287 阅读 · 1 评论 -
几个别人的面试题
实说,我觉得要有代码出现,思路固然非常重要,但是能快速写出正确的代码也很重要。因为我面试的时候,就有这些要求。1)一个数组,长度为N,为循环有序的。找出其中的最小值所谓循环有序就是 [ 4 5 6 1 2 3] 这种,1是我们要找的。时间复杂度你们肯定比我清楚。写出代码顺序遍历一遍o(n);使用折半查找 o(lgn); 2)两个数组,长度分别为N,都有序,原创 2012-09-13 23:45:55 · 717 阅读 · 0 评论 -
华为上机试题及面试
上机时,声明要写工业级代码,要考虑临界(edge case)条件等云云。。。一、/* 题目描述:编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素的个数并返回*/问题一、考虑到数组的平均值可能不是int,即所有元素的和未必能被元素个数整除的情形,而float直接比较大小,是不精确的,与精度有关。问题二、所有数组元素的和,会不会超出int的范围。而其编译环境却不原创 2012-11-05 23:14:25 · 1742 阅读 · 0 评论