- 博客(21)
- 资源 (718)
- 收藏
- 关注
原创 C/C++程序员面试大纲
基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区别。8. 内存池、进程池、线程池。(c++程序员必须掌握)9.
2013-10-30 21:33:33 4943 3
转载 技术不牛如何才拿到国内IT巨头的Offer
不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰。看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技术屌丝的同学们,是否真的与国内IT巨头遥不可及呢?当你打开这个帖子的时候,我已经默认你是此文的目标读者,也就是想进入国内一流互联网企业的非牛人应届生。你不需要拿NOI的奖,无需是开源社区名人,也用不着
2013-10-30 20:58:04 6141 6
原创 经典排序算法分析和代码-上篇
前言:这一篇文章中我们将讨论数组排序的问题,对于数据量比较大的,不能在内存中完成排序的,必须在磁盘上完成排序类型叫作外部排序,本篇将不讨论。对于内部排序的一些相关知识:存在几种容易的算法以排序,如插入排序。有一种算法叫做谢尔排序(ShellSort),它编程非常简单,以运行,并在实践中很有效。还有一些稍微复杂的的排序算法。任何通用的排序算法均需要次比较。1.插入排序 最简单的排序算法之一是插入排序
2013-10-30 13:36:55 3740
原创 基于Visual C++2013拆解世界五百强面试题--题18-程序结果分析2-终结篇
第二部分程序结果分析,分析流程还是写入代码注释中分析下面程序的输出:#include int main(){ char *a = "hello"; char *b = "hello"; if (a == b) printf("YES"); else printf("NO"); //由于a、b指针指向的常量字符串相同,编译器为了节省空间, //将a、b指针变量都指向了hel
2013-10-27 15:53:01 2813
原创 基于Visual C++2013拆解世界五百强面试题--题17-程序结果分析1
分析程序结果,分析过程我们就写在程序注释里面。写出下列代码的输出内容#include int inc(int a){ return (++a);}int multi(int *a, int *b, int *c){ return (*c = *a * *b);}typedef int (FUNC1)(int in);typedef int (FUNC2)(int *,
2013-10-27 15:10:10 2600
原创 基于Visual C++2013拆解世界五百强面试题--题16-进制分析
清写出下列代码的输出内容#include int main(){ int a = -1, b = -12, c = -123, d = -1234; printf("%d,%d,%d,%d,%u,%u,%u,%u\n", a, b, c, d, a, b, c, d); printf("%o,%o,%o,%o,%x,%x,%x,%x\n", a, b, c, d, a, b, c,
2013-10-25 16:55:38 2980
原创 基于Visual C++2013拆解世界五百强面试题--题15-递归相加
有一分数序列: 1/2 , 1/4 , 1/6 , 1/8 ......,用递归的方法,求此数列20项之和.可以看出规律:每一项位1/n*2这个很容易些递归,但是要注意一点,使用浮点数相除保存:下面上代码:#include double fun(int i){ //如果是第一项直接返回结果 if (i == 1) return 1.0 / (double)2; return fu
2013-10-25 16:51:13 2758
原创 基于Visual C++2013拆解世界五百强面试题--题14-循环删除
有一个数组a[1000]存放0-1000,要求每隔二个数删除一个数,到末尾时循环到开头继续进行,求最后一个被删掉数的原始下标。看到题目可以用循环链表保存这些数,然后循环删除,大大减少了一些复杂的边界判断。下面上代码,看链表建立和删除的具体过程:#include #include typedef struct stLIST{ int index; stLIST *next;}LIST
2013-10-25 16:45:09 3779 2
原创 基于Visual C++2013拆解世界五百强面试题--题13-找最大公共子字符串
编程实现:找出两个字符串中最大公共子字符串,如"abccade"和"dgcadde"的最大子字符串为"cad"。如果不考虑效率的话直接比较,设置一个指针指向最大公共字符串,一个变量保存最大公共子字符串的长度。然后用第二个字符串的所有子字符串和第一个字符串的所有子字符串比较,将最大相同子字符串信息保存在上面两个变量中。下面看代码:#include #include void fun(char
2013-10-25 16:37:59 3102
原创 基于Visual C++2013拆解世界五百强面试题--题12-进制转换
编程实现,把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数。转换成二进制,直接循环移位依次取每一位,判断1或0然后将相应字符放入字符串缓冲区中。对于十六进制,每一位数字符对应四位,可以每次取四位,判断相应字符放入字符串缓冲区中。理解了基本原理下面直接上代码:#include void PrintBin(long num){ char buf[256]
2013-10-25 16:25:12 2814
原创 基于Visual C++2013拆解世界五百强面试题--题11-查找数字出现次数
在排序数组中,找出给定数字出现的次数比如{ 1, 2, 2, 2, 3}中2的出现次数是3次我们可使用二分查找发,分别查找出2最先出现的位置和最后出现的位置相减即可。下面是上代码:#include //二分法获取元素最后出现的位置,可能在元素的下一位int GetHigh(int array[], int size, int key){ int low = 0, high = size
2013-10-24 18:01:02 2742 1
原创 基于Visual C++2013拆解世界五百强面试题--题10-找出N个数种最大的K个数
有一亿个整数,请找出最大的 1000 个,要求时间越短越好, 空间占用越好越好。如果不考虑时间效率,很容易想到解决方法,我们只需存储前一千个数,然后依次读入后面的数和这一千个数组比较,替换其中比较小的数即可,但是这样时间复杂度比较高,如果用二叉堆实现,直接可以替换1000个数中最小的数字,而消耗的时间大多数话费在二叉堆插入中,二叉堆的插入复杂度为Olog(N),比较理想。由于题目中数目太大,代码实
2013-10-24 15:55:30 4435
原创 基于Visual C++2013拆解世界五百强面试题--题9-找出所有的排列方式
给出一个函数来输出一个字符串的所有排列按照排列组合的知识我们知道N个字符排列组合个数有n!种,那么可知f(n) = n*f(n-1),如果{1,2}的组合有两种,12,21,那么{123}的组合可以简单的插入{12}组合的任意位置:312,132,123321,231,213可以看到3分别插入前面两种组合的前中后位置又可以得到新组合,那么我们可以利用这个特性,容易得到f(2) = 2,我们可以用递
2013-10-23 17:38:58 3078
原创 基于Visual C++2013拆解世界五百强面试题--题8-数组的排序和查找
用三种方法实现对一个数组的排序,并设计一个函数实现数的查找,要求时间越短越好,空间占用越少越好。对数组排序的方法很多,我们选比较常用和容易的三种排序,直接插入排序,冒泡排序和快速排序。直接插入排序:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序冒泡排序:比较相邻的元素。如果第一个比第二个大,就交换他们两个,依次让大的冒到后面快速排序:通过一趟排序将要排序的数据分割成独立
2013-10-23 11:43:19 2656
原创 基于Visual C++2013拆解世界五百强面试题--题7-链表的各种操作
请用C实现一个链表,实现链表的查找,逆置,替换,删除,添加,清空,创建。查找、替换和删除、添加里面都会用到遍历链表的操作,所以重点在于遍历,链表的逆置和清空考虑到效率,我们可以用递归实现,至于创建节点,我们直接创建一个空节点作为头节点,不使用其数据域。下面直接上代码:#include #include typedef struct stLIST{ int data; stLIST *n
2013-10-22 17:23:13 3784 5
原创 基于Visual C++2013拆解世界五百强面试题--题6-double类型逆序
请设计一个函数,不许用到字符串函数,用数学运算,将double类型数据转换,例如123.456转换成654.321首先想到依次提取他的每一个位数,然后进行运算,移动每一位数到相应位置,结果相加就能逆序double数下面上程序:#include #include #include double ConvertDouble(double Val){ int leftLen=0, rightLen=0;
2013-10-21 16:52:25 3174 1
原创 基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr
请用C语言实现字符串的查找函数strstr, 找到则返回子字符串的地址,没有找到返回为空,请用数组操作与指针操作实现看到题目想到最简单的方法就是母字符串和子字符串比较,如果不通,将指向母字符串的指针向前移动,继续查找,下面我们分别用数组操作与指针操作实现。国际惯例,参考前面文章新建一个vs2013的工程,经过前面的学习大家已经对开发环境很熟悉了,下面我们直接上代码:#include #includ
2013-10-21 14:48:51 2906
原创 基于Visual C++2013拆解世界五百强面试题--题4-double转换成字符串
请用C语言实现将double类型数据转换成字符串,再转换成double类型的数据、int类型的数据想要完成题目中的功能,首先我们的先对系统存储double的格式有所了解。浮点数编码转换使用的是IEEE的编码标准。类型存储位数偏置值数符(S)阶码(E)尾数(M)总位数十六进制十进制短浮点数(Single,float)1位8位23位32位7FH+127长浮点数(Double)1位11位52位
2013-10-21 11:43:54 3470 5
原创 基于Visual C++2013拆解世界五百强面试题--题3-打印螺旋数组
请用C语言实现 输入N,打印N*N矩阵比如 N = 3, 打印:1 2 38 9 47 6 5N = 4, 打印1 2 3 412 13 14 511 16 15 610 9 8 7 #include #include #define M 5int arr[M][M] = { 0 }; //初始化数组全0 ,用0来判断数组是否赋有正确的值vo
2013-10-08 22:17:56 3861 4
原创 基于Visual C++2013拆解世界五百强面试题--题2-输出和为一个给定整数的所有组合
请用C语言实现 输出和为一个给定整数的所有组合#include #include int main(void){ int num = 0; //获取输入的数字 int i = 0; //外层循环计数 int j = 0; //内层循环计数 printf("Please input a number:"); scanf("%
2013-10-08 20:33:04 3366 7
原创 基于Visual C++2013拆解世界五百强面试题--题1-定义各种类型指针
用变量给出下面的定义 a)一个整型数 b)一个指向整型数的指针 c)一个指向指针的指针,它指向的指针是指向一个整型数 d)一个有10个整型数的数组 e)一个有10个指针的数组,该指针是指向一个整型的数 f)一个指向有10个整型数数组的指针 g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数 h)一个有10个指针的数组,该指针指向一个函数,该
2013-10-08 19:06:24 3363 2
VMware-workstation-full-12.5.0-4352439完美破解版.exe
2016-10-11
codeblocks-16.01mingw_fortran-setup.exe下载
2016-10-10
Java语言程序设计(基础篇)(原书第10版)
2016-09-29
20150329C定义变量->源代码
2016-09-08
20150329C补码->源代码
2016-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人