IT面试
文章平均质量分 74
lvmengmengzp
这个作者很懒,什么都没留下…
展开
-
IT经典面试题目
1、各种排序,是否稳定什么的 (1)冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排原创 2013-06-25 19:37:19 · 1109 阅读 · 0 评论 -
c++ const浅析
看到const 关键字,很多程序员想到的可能是const 常量,这可有点象踩到陷井上还不知道自己危险了。读读以下文字会使你对c++中的const有一个全面的认识。const 是C++中常用的类型修饰符,有某些微妙的应用场合,如果没有搞清本源,则错误在所难免。本篇中将对const进行辨析。溯其本源,究其实质,希望能对大家理解const有所帮助,根据思维的承接关系,分为如下几个部分进行阐述。转载 2013-08-07 17:36:01 · 658 阅读 · 0 评论 -
学习软件开发应该看的书
http://www.cnblogs.com/oldman/articles/2387927.html原创 2013-08-08 11:14:38 · 631 阅读 · 0 评论 -
经典算法链接
http://www.cnblogs.com/oldman/articles/2592319.html原创 2013-08-08 11:14:03 · 542 阅读 · 0 评论 -
c++ 之内联函数
C++内联函数(Inline)介绍 介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放转载 2013-08-08 15:09:39 · 553 阅读 · 0 评论 -
c++函数重载 转载详细版
——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2、当转载 2013-08-08 15:02:12 · 595 阅读 · 0 评论 -
c++结构体详细介绍
C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。但是由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。因此C++允许用户根据需要自己声明一些类型,例如第5章介绍的数组就是用户自己声明的数据类型。此外,用户可以自己声明的类型还有结构体(structure)类型、共用体(union)类型、枚举(enumeration)类转载 2013-08-08 15:20:33 · 924 阅读 · 0 评论 -
c++预处理 宏
在前面各章中,已多次使用过以“#”号开头的预处理命令。如包含命令# include,宏定义命令# define等。在源程序中这些命令都放在函数之外, 而且一般都放在源文件的前面,它们称为预处理部分。 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程序对源程转载 2013-08-09 15:46:35 · 798 阅读 · 0 评论 -
c++ 类相关知识
在面向对象的程序设计中,有经常接触类、对象等专业名词;到底什么是类、什么是对象呢?在程序又是怎样运用呢?类是面向对象程序设计的核心,它实际是一种新的数据类型,也是实现抽象类型的工具,因为类是通过抽象数据类型的方法来实现的一种数据类型。类是对某一类对象的抽象;而对象是某一种类的实例,因此,类和对象是密切相关的。没有脱离对象的类,也没有不依赖于类的对象。 什么是类 类是一种复杂的数据类型转载 2013-08-12 09:05:05 · 622 阅读 · 0 评论 -
c++ 重载 覆盖与隐藏
成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。8.2.1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与转载 2013-08-12 09:07:34 · 660 阅读 · 0 评论 -
c++继承与派生详解
继承是面向对象程序设计中的重要特性,是软件复用的一种形式。其实继承和派生就是同一种概念的不同说法罢了,通常我们说子类继承父类,父类派生出子类。说实话,学习和了解了C++的继承与派生后,发现我对面向对象中的继承与派生有了更深刻的理解。在更加深入了解C++关于继承方面的知识之前,我想先讲一下C++中派生与继承的基本概念,它是之后学习派生类的构造与析构,以及多重继承等的基础。 1.派生类的声明转载 2013-08-12 09:19:04 · 2031 阅读 · 0 评论 -
windows内部运行机制
Windows程序内部运行机制 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制。本文将深入剖析Windows程序的内部运行机制,为读者扫清VC++学习路途中的第一个障碍,为进一步学习MFC程序打下基础。 1 API与SDK 我们在编写标准C程序的时候,经常会调用各种库函数来辅助完成某些功能:初学者使用得最多的C库函数就是printf了,这些转载 2013-08-12 09:45:39 · 1521 阅读 · 0 评论 -
浅谈c++多态
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定转载 2013-08-12 09:15:44 · 656 阅读 · 0 评论 -
游戏开发常用的排序算法
转自:http://edu.gamfe.com/tutor/d/9210.html一、插入排序(Insertion Sort)1. 基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。2. 排序过程: 【示例】:[初始关键字] [49] 38 65 97 76 13 27 49J转载 2013-10-15 17:06:16 · 851 阅读 · 0 评论 -
微软的22道数据结构算法面试题(含答案)
1、反转一个链表。循环算法。 1 List reverse(List l) { 2 if(!l) return l; 3 list cur = l.next; 4 list pre = l; 5 list转载 2013-10-25 16:00:07 · 645 阅读 · 0 评论 -
实现数组头尾两端元素对调代码
深入理解计算机系统第二章p35页,利用对于数组元素个数为偶数时,交换两端数组元素代码,当数组元素个数为奇数时,中间的元素将变为0,只需要将first#includevoid inplace_swap(int *x,int *y){ *x = *x ^ *y; *y = *x ^ *y; *x = *x ^ *y;}void reverse_arra原创 2013-12-08 22:10:05 · 2701 阅读 · 0 评论 -
c语言逻辑运算与位运算区别
c语言中,逻辑运算与位运算很容易混淆,但是它们的功能是完全不同的。逻辑运算认为所有的非零的参数都为TRUE,参数0表示false,它们返回1或0.&&与||和&与|重要的区别是,如果第一个参数求值能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。深入理解计算机系统第二章P36页,c语言中的逻辑运算答案#includeint main(){ in原创 2013-12-09 09:28:08 · 4791 阅读 · 0 评论 -
c语言判断两数相加是否溢出
深入理解计算机系统第二章涉及到的溢出问题,两数相加判断是否溢出。#includeint taddOK(int, int);void main(){ int x, y; printf("Input two integers:\n"); scanf("%d %d",&x, &y); printf("%d\n",taddOK(x,y))原创 2013-12-10 22:24:58 · 4876 阅读 · 1 评论 -
计算机经典书籍
1.深入理解计算机系统(修订版) / Computer Systems: A Programmer's Perspective Randal E.Bryant / David O'Hallaron /2.计算机程序设计艺术(第1卷) 作者 : [美] Donald E. Knuth 出版社 清华大学出版社3.计算机程序的构造和解释(原书第2版)4.算法导论 [美] Thom原创 2013-12-02 17:34:07 · 585 阅读 · 0 评论 -
深入理解计算机系统--第二章(读书笔记)
由于这章内容比较多,比较枯燥,需要耐心阅读才可以。只把把主要内容知识点列出,具体细节再单独查看相关资料进行详细了解。1.大端和小端存储小端存储:机器在存储器中按照最低有效字节到最高有效字节的顺序存储对象,也就是说最低有效字节在前面,Intel的机器就是这样。大端存储:机器按照最高有效字节到最低有效字节的顺序存储对象,例如IBM,Sun Microsystems的大多数机器2.十六进原创 2013-12-12 17:26:36 · 1480 阅读 · 0 评论 -
Amdahl
阿姆达尔定律 计算机科学中的一个重要定律。它量化了对系统某个部分进行优化带来的整体效果。描述:系统中某部件由于采用某种方式使系统性能改进后,整个系统性能的提高与该方式的使用频率或占总的执行时间的比例有关。主要应用:改善“系统瓶颈”性能。Amdahl定律定义了加速比:加速比=采用改进措施后性能/未采用改进措施前的性能=未采用改进措施前执行某任务时间/采用改进措转载 2014-01-01 17:17:38 · 754 阅读 · 0 评论 -
深入了解scanf()/getchar()和gets()等函数
----------------------------------------------------| 问题描述一:(分析scanf()和getchar()读取字符) |---------------------------------------------------- scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特转载 2014-01-12 21:15:12 · 605 阅读 · 0 评论 -
sizeof详解
看看下面这个代码结果是什么??#includeusing namespace std;int SizeOf(char pString[]){return sizeof(pString);}int main(){ char * pString1 = "google"; int size1 = sizeof(pString1)原创 2014-01-21 10:20:36 · 1052 阅读 · 0 评论 -
数据结构算法-1
Void union(List &La,List Lb)//将所有在线性表Lb中但不在La中的数据元素插入到La中 { La_len = ListLength(La);Lb_len =ListLength(Lb);//求线性表的长度 For(i= 1;i { GetElem(Lb,i原创 2014-02-10 17:32:03 · 1054 阅读 · 0 评论 -
数据结构算法—2
12.将两个有序链表并为一个有序链表void MergeList_L(LinkList &La,LinkList&Lb,LinkList &Lc){//已知单链线性表La和Lb的元素按值非递减排列,归并La和Lb得到新的单链线性表//Lc,Lc的元素也按值非递减排列pa = La->next; pb = Lb->next;Lc = pc =La; //用La的头结点作为原创 2014-02-11 11:06:29 · 1030 阅读 · 0 评论 -
直接插入排序
前言插入排序(insertion sort)的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排序好的序列中,直到全部记录插入完成为止.直接插入排序基本思想假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n].从i = 2起直到i = n 为止,依次将R[i]插入当前的有序区R[1..i - 1]中,生成含转载 2014-02-23 21:12:42 · 622 阅读 · 0 评论 -
C语言实现直接插入排序
#include//直接插入排序算法void insert(int a[],int len){int i,j,temp;for(j=1;j{int b=a[j];for(i=j-1;i>=0;i--){if(b{temp=a[i];a[i]=a[i+1];a[i+1]=temp;b=a[i];}}}}void原创 2014-02-24 09:45:02 · 1509 阅读 · 0 评论 -
堆排序思想
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>转载 2014-02-24 20:57:35 · 1250 阅读 · 0 评论 -
归并排序思想
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。 归并排序基本原理通过对若干个有序结点序列的归并来实现排序。所谓归并是指将若干个已排好序的部分合并成一个有序的部分。 归并排序基本思想设两个有序的子序列(相当于输入序列)放在同一转载 2014-02-24 21:22:49 · 1157 阅读 · 0 评论 -
数据结构算法-3
3.n阶Hanoi塔问题的C函数void hanoi(int n,char x,char y,char z){//将塔座x上按直径由小到大且自上而下编号为1到n个n个圆盘按规则搬到塔座z上,y//可用作辅助塔座,搬动操作move(x,n,z)可定义为(c是初值为0的全局变量,对搬动计数)if(n==1) move(x,1,z);else {原创 2014-02-12 15:41:50 · 777 阅读 · 0 评论 -
C语言实现二分查找
#include /*binsearch : find x in v[0] int binsearch(int x, int v[], int n){ int low, high, mid; low = 0; high = n - 1; while ( low mid = (low转载 2014-02-26 09:52:35 · 708 阅读 · 0 评论 -
单链表基本操作
#include#include#define ERROR 0#define OK 1typedef int status;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;} LNode,*LinkList;void Build(LinkList转载 2014-02-27 13:44:31 · 872 阅读 · 0 评论 -
顺序表基本操作-C语言
#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int status ;typedef in转载 2014-02-27 13:45:30 · 749 阅读 · 0 评论 -
C语言实现创建单链表及求长度
#include#include //malloc需要此头文件//定义单链表结点结构体typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}LNode,*LinkList;//建立一个带头结点的单链表void Build(LinkList L){原创 2014-02-27 14:38:01 · 15115 阅读 · 2 评论 -
数据结构--快速、冒泡、选择排序C语言实现
#include//快速排序void quickSort(int a[],int left,int right){int i,j,temp;i = left;j = right;temp = a[left];if(left>right)return;while(i!=j){while(a[j]>=temp &&j>i)j--;if(j>i)原创 2014-02-21 10:39:17 · 1090 阅读 · 0 评论 -
C语言--单链表创建、求长度、查找前驱结点、删除结点
#include#include //malloc需要此头文件//定义单链表结点结构体typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}LNode,*LinkList;//建立一个带头结点的单链表void Build(LinkList L){原创 2014-02-28 09:33:21 · 6321 阅读 · 1 评论 -
数据结构之内部排序算法
内部排序算法 排序的基本概念: 把一组无序的数据元素按照关键字值递增(或递减)的顺序重新排列。 一、插入排序思想:将序列分为【有序段】与【无序段】两段,然后依次将【无序段】中的元素插入到【有序段】的正确位置。寻找元素应插入的位置可用【直接】和【折半】两种方式进行查找。 对应算法:直接插入排序、折半插入排序。以上两种算法的不同点:寻找插入位置转载 2014-02-17 16:36:01 · 627 阅读 · 0 评论 -
数据结构--内部排序读书笔记
1如果按排序过程中依据的不同原则对内部排序方法进行分类,则大致可分为插入排序、交换排序、选择排序、归并排序和计数排序等五类。如果按内部排序过程中所需的工作量来区分,则分为3类:(1)简单的排序方法,其时间复杂度为O(n2);(2)先进的排序方法,其时间复杂度为O(nlogn);(3)基数排序,其时间复杂度为O(d.n)2.直接插入排序,时间复杂度为O(n2),方法简单适合记录数量比较小的时候。原创 2014-02-17 16:39:49 · 1202 阅读 · 0 评论 -
快速排序详解--C语言实现
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它转载 2014-02-19 09:50:41 · 755 阅读 · 0 评论 -
C语言 ---单链表创建、求长度、删除、排序等操作
#include#include//定义单链表结点结构体typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;}LNode,*LinkList;//建立一个带头结点的单链表void Build(LinkList L){ int n; LinkList p,q; p=L原创 2014-03-02 21:54:39 · 2143 阅读 · 1 评论