
H面试
文章平均质量分 65
linuxlinuxlinuxlinux
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
H面试程序(1)编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的 下一秒
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入 2004 年 12 月 31 日 23 时 59 分 59 秒,则输出 2005年 1 月 1 日 0 时 0 分 0 秒。void ResetTheTime(int *year,int *month,int *date,int *hour,int *minute,int*second){ int原创 2013-07-29 20:49:53 · 6130 阅读 · 0 评论 -
C++内部数据类型和非内部数据类型
内部数据类型是编译器本来就认识的,不需要用户自己定义 非内部数据类型不是编译器本来就认识的,需要用户自己定义才能让编译器识别 运算符使用是否正确,编译器在编译扫描分析时就可以判定 库函数是已编译的代码,编译器不会编译检查,由链接器将库同用户写的代码合成exe文件 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执转载 2013-08-30 11:10:09 · 1400 阅读 · 0 评论 -
Socket 阻塞与非阻塞模式
阻塞模式Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在阻塞模式的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待时间。图所示,在调用recv()函数转载 2013-08-30 11:13:56 · 875 阅读 · 0 评论 -
用两个栈实现一个队列
两年前从网上看到一道面试题:用两个栈(Stack)实现一个队列(Queue)。觉得不错,就经常拿来面试,几年下来,做此题的应该有几十人了。通过对面试者的表现和反应,有一些统计和感受,在此做个小结。 用C++描述,题目大致是这样的: 已知下面Stack类及其3个方法Push、Pop和 Count,请用2个Stack实现Queue类的入队(Enqueue)出队(Dequeue)方法。转载 2013-08-30 09:42:19 · 729 阅读 · 0 评论 -
动态链接库与静态链接库的区别
静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可转载 2013-08-30 11:01:42 · 755 阅读 · 0 评论 -
H面试程序(26):判断字符串是否定回文字符串
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”题目:判断一个字符串是否为回文解法:两端扫描#include #include int huiwen( int high, int low , char * a) //从两边扫描, num是一个中点位置{ assert(a);原创 2013-09-06 15:25:34 · 1111 阅读 · 0 评论 -
H面试程序3:去除字符串中多余的空格
比如“_ _I_ _ _Lu_ _ _ _you_ _ _ _ _ _”变成“I_ Lu_you” #include#include//50minvoid RemoveExtraSpace(char* str){ assert(str); int flag = 1; //之前已经遇到空格 int newp = 0; int i原创 2013-09-11 12:04:45 · 2096 阅读 · 0 评论 -
H面试程序(7):去掉字符串中重复的数
之前的答案只能把字符串中不同的数字字符显示出来,现在这个可以把重复的字符从字符串中去掉 #include#include#include#include//50minvoid RemoveAllDuplicates(char seq[ ], int n){ assert(seq); int * phash = (int *)malloc( 10*siz原创 2013-09-11 20:48:34 · 1242 阅读 · 0 评论 -
H面试程序(27):字串转换
//1 字串转换//问题描述://将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;//若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。//例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。//要求实现函数://void co原创 2013-09-12 10:16:18 · 1051 阅读 · 0 评论 -
H面试程序(4):翻转句子中单词的顺序 .
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。 #include#include//45minvoid swap(char *a, char *b){ assert(a); assert原创 2013-09-11 18:55:28 · 1033 阅读 · 0 评论 -
指针函数与函数指针的区别
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返转载 2013-09-05 11:54:06 · 637 阅读 · 0 评论 -
H面试程序(28):字符串处理转换
//2 字符串处理转换//问题描述: //在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成,//其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词);//找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),//然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;//如果整个输入的字符串原创 2013-09-13 13:04:28 · 1291 阅读 · 0 评论 -
H面试程序(12): 输出字符串中第一个只出现一次的字母
题目描述: 若字符串str为'' sbdddsbfc'',则输出 f; 若字符串str为''aabbccdd'',则输出:字符串str中的字符都出现两次以上 #include #include#include#includeint find_first_char(char* str) {原创 2013-08-20 08:26:56 · 1060 阅读 · 0 评论 -
H面试程序(15): 冒泡排序法
#include#includevoid display(int * a, int n) { for(int i = 0; i < n; i++) { printf("%d,",a[i]); } printf("\n");}void swap(int * a, int * b){ int temp; temp = *a; *a =原创 2013-09-14 15:49:37 · 1058 阅读 · 0 评论 -
H面试程序(6):字符串中找出连续最长的数字串
//1. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)//功能://在字符串中找出连续最长的数字串,并把这个串的长度返回,//并把这个最长数字串付给其中一个函数参数outputstr所指内存。//例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outp原创 2013-09-13 16:54:44 · 1328 阅读 · 0 评论 -
H面试程序(25):在一个字符串中删除特定字符
V1.0#include#include#include#includevoid Delete_specific_char(char * str1, char * str2){ char * phash = (char *)malloc(sizeof(char)*256); assert(phash); memset(phash, 0,原创 2013-09-14 21:37:22 · 1117 阅读 · 0 评论 -
H面试程序(16): 简单选择排序
#include#includevoid display(int * a, int n) { assert(a); for(int i = 0; i < n; i++) { printf("%d,",a[i]); } printf("\n");}void swap(int * a, int * b){ assert(a);原创 2013-09-14 16:31:38 · 1007 阅读 · 0 评论 -
STL 整理1(map、set、vector、list、stack、queue、deque、priority_queue)
向量(vector) 连续存储的元素Vectorc;c.back() 传回最后一个数据,不检查这个数据是否存在。c.clear() 移除容器中所有数据。c.empty() 判断容器是否为空。c.front() 传回地一个数据。c.pop_back() 删除最后一个数据。c.push_back(elem) 在转载 2013-08-30 10:59:27 · 936 阅读 · 0 评论 -
H面试程序(5):两个大数相乘
题目:两个大数相乘,这两个数大于计算机基本数据结构的范围(int double)#includeusing namespace std;#include //memset( )函数#include int * multi( int * num1, int size1, int * num2, int size2 ){ assert(num1); assert(n原创 2013-08-29 19:20:00 · 1168 阅读 · 0 评论 -
H面试程序(10): 字符串包含问题
题目描述:判断第二个字符串中的元素是否都能在第一个字符串中找到:注意:和字符串的字串的问题有所区别,如第一个字符串为 abcdefg,第二个字符串为 aaabc,第二个字串还是包含于第一个字符串 方法1:将str2中的每一个字符取出,逐一和字符串str1中的字符进行比较#include int WhetherInclude(char* str1, char * str2原创 2013-08-15 22:05:06 · 861 阅读 · 0 评论 -
H面试程序(11): 判断字符串是否包含子串问题
题目描述: 如字符串str1为''abcdef''' 字符串str2为'' bc'';则字符串str1中含有字串str2; #include #include#include#includeint Whether_Is_Substring(char* str原创 2013-08-20 08:23:15 · 2098 阅读 · 0 评论 -
H面试程序(2)josephus 问题
josephus问题其实就是一个游戏,一群小孩围成一个圈,设置一个数,这个数是个小于小孩总数大于0的一个整数,从第一个小孩开始报数,当其中一个小孩报到你设置的那个数的时候离开那个圈,这样一来反复报下去,直到只剩下最后一个小孩的时候那个小孩就是胜利者,写程序来找出这个小孩 class Josephus { public: Josephus(int numofI原创 2013-08-07 22:13:46 · 1073 阅读 · 0 评论 -
H面试程序(14): 快速排序法
本文代码借鉴了http://blog.csdn.net/fduan/article/details/7914331但也做了一些小的优化,就是在选择枢纽元的时候,采用了三数取中法,避免取到最大或最小的数作为枢纽元,在待排数比较多的情况下能有效减少排序的时间 #include #include void swap(int *a, int *b){ int temp;原创 2013-08-20 23:57:41 · 978 阅读 · 0 评论 -
H面试程序(18): 归并排序
#include#includevoid copyArray(int source[], int dest[],int len,int first);void merge(int a[],int left,int right);void show_array( int a[], int n ){ int i; for( i = 0; i < n; i++转载 2013-08-22 18:23:25 · 1096 阅读 · 0 评论 -
H面试程序(17): 堆排序
本文代码出自:http://blog.csdn.net/taizhoufox/article/details/5938616我对代码进行了一些注释/************************************************ * 测试从数组0号位开始的堆排序 * * 与上面不同的知识点 * 1.0号是根元素,则左孩子为2i+1,右孩子为2(i+1);原创 2013-08-22 18:15:13 · 901 阅读 · 0 评论 -
H面试程序(19): 统计出现频率的最高的K的字符串
出处:http://blog.csdn.net/v_JULY_v我做了一些详细的注释 //copyright@yansha &&July //July、updated,2011.05.08 //题目描述: //搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的 //长度为1-255字节。假设目前有一千万个记录(这些查询串原创 2013-08-22 19:14:21 · 1498 阅读 · 0 评论 -
H面试(20): 排序总结
内部排序的算法的时间复杂度,空间复杂度,稳定性的记忆方法:(1) 时间复杂度:以平均时间复杂度O(nlogn) 的速度排序快速排序、归并排序、堆排序,希尔排序一般为O(n^3/2), 差的话就为O(n^2)冒泡冒的好是O(n) ,冒得不好就是O(n^2)直接插入插得好,就是O(n) ,直接插入插得不好就是O(n^2)在所有同量级(O(nlogn) )的排序算法中,快转载 2013-08-22 19:33:55 · 838 阅读 · 0 评论 -
H面试程序(0):字符串一些常用函数的实现
1、Strcat函数原型如下:char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{ char * address = strDest; //该语句若放在assert之后,编译出错 assert((strDest != NULL) && (strS原创 2013-08-11 23:33:01 · 1231 阅读 · 0 评论 -
H面试的基础知识(1):一些基础知识的总结
1.链表和数组的比较链表:链表可以支持动态内存大小,插入和删除的速度快,空间开销大,不支持随机访问;数组:数组的大小不能动态扩充,支持随机访问,数组在内存中逐个存放;2.C++中为什么用模板类。(1)可用来创建动态增长和减小的数据结构(2)它是类型无关的,因此具有很高的可复用性。(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平转载 2013-08-12 23:20:36 · 1212 阅读 · 0 评论 -
H面试的基础知识(2):Linux进程间通信机制
Linux下的通信手段基本上是从Unix平台上的进程通信机制继承而来。Linux下的进程通信通信机制主要包括:管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于转载 2013-08-13 00:21:38 · 919 阅读 · 0 评论 -
H面试(22):设计一个栈,能输出当前栈中最小元素
#include#include#includestruct StcakElement{ int data; //插入的元素的数值 int min; //存放当前栈中最小元素};struct Stack{ StcakElement * pStackElement; //指向栈原始的指针,结合top就能操作栈顶元素 int size;原创 2013-08-24 20:53:10 · 1564 阅读 · 0 评论 -
H面试(23):求子数组最大和
题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 #include#include#include原创 2013-08-25 00:34:48 · 2557 阅读 · 0 评论 -
H面试程序(8):不含重复字母的字符串的全排列
#include inline void Swap(char& a, char& b) { char temp = a; a = b; b = temp; } void Perm(char list[], int k, int m) { /*生成list [k:m ]的所有排列方式 */转载 2013-08-14 00:07:38 · 989 阅读 · 0 评论 -
H面试程序(9): 左旋字符串
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。 请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。 #include#includevoid swap(char & a, char &b){ char temp原创 2013-08-14 19:55:28 · 1624 阅读 · 0 评论 -
H面试(21):在一个升序数组找两数之和
题目: 输入一个已经按升序过的数组和一个数字在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度为O(n).如果有多对数字的和等于输入的数字,输入任意一对即可。例如输入数组 1,2,7,11,15和数字 15. 由于4 + 11= 15,应此输出 4和 11思路:用数组的头尾指针向中间扫描#include #include void sum_of原创 2013-08-27 10:08:34 · 1314 阅读 · 0 评论 -
H面试(24):调整数组顺序使奇数位于偶数前面
题目:输入一个数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分,要求时间复杂度为O(n).#include #include void swap (int * a , int *b) //交换两个数字{ int temp; temp = *a; *a = *b; *b = temp;}void push原创 2013-08-27 22:04:52 · 975 阅读 · 0 评论 -
H面试程序(29):求最大递增数
要求:求最大增加数如:1231123451输出12345 #include#includevoid find(char *s){ int maxleng = 0; int length = 1; int pos = 0; int i = 0; while(s[i] !='\0') { if((s[i])'9')) {原创 2013-09-16 15:22:42 · 1296 阅读 · 2 评论