
面试题以及经验总结
zhangxinrun_业余erlang
这个作者很懒,什么都没留下…
展开
-
delete与delete [] 真正区别
<br />我们通常从教科书上看到这样的说明:<br />delete 释放new分配的单个对象指针指向的内存<br />delete[] 释放new分配的对象数组指针指向的内存<br />那么,按照教科书的理解,我们看下下面的代码:<br />int *a = new int[10];<br />delete a; //方式1<br />delete [] a; //方式2<br />肯定会有很多人说方式1肯定存在内存泄漏,是这样吗?<br />1. 针对简单类型 使用new分配后的转载 2010-11-27 15:18:00 · 784 阅读 · 0 评论 -
深入理解C++中的mutable关键字
<br />mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。<br /><br /> 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。<br /><br /> 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalb转载 2010-11-24 17:20:00 · 760 阅读 · 0 评论 -
求二进制数中1的个数
原创:http://blog.163.com/wupengzhi2005@126/blog/static/17101002201082971255213/// 求二进制数中1的个数<br />#include <stdio.h><br /><br />// 方法1<br />int getCount1(unsigned int n)<br />{<br /> int cnt = 0;<br /> while(n)<br /> {<br /> // 取得二进制数的最右边的位<b转载 2011-02-27 21:16:00 · 850 阅读 · 0 评论 -
用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出
原创:http://blog.163.com/wupengzhi2005@126/blog/static/17101002201082992252813/// 用户输入M,N值,从1至N开始顺序<br />// 循环数数,每数到M输出该数值,<br />// 直至全部输出<br />#include <stdio.h><br /><br />// 节点<br />typedef struct node<br />{<br /> int data;<br /> node* next;<br />}转载 2011-02-27 21:19:00 · 5496 阅读 · 2 评论 -
获取数组第二大的数
// 获取数组第二大的数<br />#include <stdio.h><br /><br />#define MY_INT_MIN 0x80000000<br />int getSecondMax(const int* num, const int size)<br />{<br /> int max = num[0];<br /> int secondMax = MY_INT_MIN;<br /> <br /> for(int i=1; i<size; i++)<br />转载 2011-02-27 22:08:00 · 998 阅读 · 0 评论 -
一道表达式的经典试题
<br />写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)<br />int a = 4;<br />(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);<br />a = ?<br />答:C 错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;<br />改后答案依次为9,10,10,11。<br /> <br /> <br />------------------------原创 2011-02-27 15:08:00 · 1109 阅读 · 0 评论 -
sizeof(a=0)
原创:http://blog.163.com/wupengzhi2005@126/blog/static/17101002201082965021807/// sizeof(a=0)<br />#include <stdio.h><br /><br />int main()<br />{<br /> int a = -1;<br /> int b = sizeof(a=0);<br /> <br /> // 程序实际输出-1<br /> // 原因:<br /> // s转载 2011-02-27 21:21:00 · 1150 阅读 · 0 评论 -
求数组中连续三个数和得最大值
// 求数组中连续三个数和得最大值<br />// 要求数组长度不小于3<br />#include <iostream><br />using namespace std;<br /><br />// 整型的最小值<br />#define MY_INT_MIN int((int(-1) > 0 ? 0: (int(1)<<( (sizeof(int)<<3) - 1))))<br /><br />int main()<br />{<br /><br /> int num[] = {1,2,4,-1转载 2011-02-27 22:33:00 · 3568 阅读 · 1 评论 -
IT公司机试常考的一道题--将任意字符串逆序输出或者输出所有排列
<br />这道题是近几年来各大IT公司招程序员时机试很容易考的一道题,逆序输出很简单,会写程序的人都会。但是输出一段字符串的所有排序情况却不是所有人一时半会能写出来的,结合网友的代码,我整合了一下。代码如下:<br />-----------------------------------------------------------------<br />//逆序输出任意字符串<br />#include <stdio.h><br />#include <stdlib.h><br />#include原创 2011-02-10 17:32:00 · 1732 阅读 · 0 评论 -
关于C语言的逻辑短路
<br />在C标准中,有这样的规定:<br />在“exp1 && exp2” 中如果exp1为false,则不再计算exp2的值 <br />在“exp1 ¦ ¦ exp2” 中如果exp1为true,则不再计算exp2的值 <br />这种机制被称为”逻辑短路“,一是为了优化,更重要的是为了提高代码的可移植性,避免产生二义性<br />但并不是所有的实现都支持这种机制<br />比如如下的C代码:<br />view plaincopy to clipboardprint?<br />void con原创 2011-03-01 21:39:00 · 3406 阅读 · 1 评论 -
缓冲还是不缓冲?这是个问题
<br />Linux,unix在内核中设有 缓冲区高速缓冲或页面高速缓冲,大多数磁盘I/O都通过缓冲进行,采用延迟写技术。<br />sync:将所有修改过的快缓存区排入写队列,然后返回,并不等待实际写磁盘操作结束<br />fsync:只对有文件描述符制定的单一文件起作用,并且等待些磁盘操作结束,然后返回。<br />fdatasync:类似fsync,但它只影响文件的数据部分。fsync还会同步更新文件的属性。<br />fflush:标准I/O函数(如:fread,fwrite)会在内存建立缓冲,该转载 2011-03-07 15:27:00 · 1025 阅读 · 0 评论 -
JAVA 打印 M*N的螺旋矩阵(递归) 效率低得很
<br />import java.io.*;<br />import java.util.*;<br />public class LXM {<br /> int m;<br /> int n;<br /> int jz[][];<br /> int num;<br /> LXM()throws IOException{<br /> Scanner cin = new Scanner(new BufferedReader(new InputStreamReade转载 2011-03-13 13:07:00 · 2618 阅读 · 0 评论 -
大数据量,海量数据 处理方法总结
转载:http://www.cppblog.com/longzxr/archive/2010/10/24/131047.html大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法转载 2011-12-09 20:47:57 · 1717 阅读 · 0 评论 -
C++中const总结
<br />对于基本声明<br />1. const int r=100; //标准const变量声明加初始化,因为默认内部连接所以必须被初始化,其作用域为此文件,编译器经过类型检查后直接用100在编译时替换<br />2. extend const int r=100; //将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义<br />3. const int r[ ]={1,2,3,4};<br />struct S {i转载 2010-11-24 17:27:00 · 614 阅读 · 0 评论 -
关于初始化C++类成员
<br />在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种: <br />第一种方法: CMYClass::CSomeClass(){ x=0; y=1;}<br />第二种方法: CSomeClass::CSomeClass() : x(0), y(1){}<br />本文将要探讨这两种方法的异同以及如何使用这两种方法。 <br /> 从技术上说,第二种方法比较好,但是在大多数情况下,两者实际上没有什么区别。第二种语法被称为成员初始化列表转载 2010-11-24 14:31:00 · 625 阅读 · 0 评论 -
C++中的动态绑定与静态绑定
C++中,非虚函数都是静态绑定,而虚函数却是动态绑定。 为了能够更清楚地了解静态绑定与动态绑定,我们可以看下面这个例子:#includeusing namespace std;class B{public: void fun(){ cout} };class D: public B{public://void fun()//{ //cout//} };int main(){D x; B *pB = &x; pB->fun();转载 2010-11-23 21:18:00 · 757 阅读 · 0 评论 -
网络协议的介绍
在网络的各层中存在着许多协议,它是定义通过网络进行通信的规则,接收方的发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息,以这种规则规定双方完成信息在计算机之间的传送过程。下面就对网络协议规范作个概述。 ARP(Address Resolution Protocol)地址解析协议 它是用于映射计算机的物理地址和临时指定的网络地址。启动时它选择一个协议(网络层)地址,并检查这个地址是否已经有别的计算机使用,如果没有被使用,此结点被使用这个地址,如果此地址已经被别的计算机使用,正在转载 2010-11-27 15:30:00 · 1063 阅读 · 0 评论 -
算法复杂度
<br />简介 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析 <br /> <br />的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 编辑本段1、时间复杂度<br /> (1)时间频度 <br /> 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行转载 2010-11-27 21:55:00 · 672 阅读 · 0 评论 -
实现两个整数交换
晚上他们参加完网龙的笔试回来,我问了考的题目。 <br /><br />整体感觉很侧重基础,而且又要求有主观想法。 <br /><br />第一个编程题是:用 C 语言写一个函数交换两整数的值,不借助第三个变量。 <br />事实上这个题目一听到就有了想法,因为以前有做过,形如: <br /><br />(方法一:) <br />a = a + b; <br />b = a - b; <br />a = a - b; <br /><br />不过提出了最大的问题,就是两个正数的溢出问题。这个确实是缺限,以前转载 2010-11-28 15:58:00 · 5278 阅读 · 0 评论 -
单链表逆序
//已知链表的头结点head,写一个函数把这个链表逆序 ( Intel) #include using namespace std; struct Node { int data ; Node *next ; }; typedef struct Node Node ; Node* ReverseList(Node* head) { if (!head || !head->next) { return head;转载 2010-11-28 21:47:00 · 1102 阅读 · 0 评论 -
程序员面试题精选---“itoa函数”和“atoi函数”
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题。建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同。首先我们分析如何完成基本功能,即如何把表示整数的字符串正确地转换成整数。还是以"345"作为例子。当我们扫描到字符串的第一转载 2010-12-01 20:46:00 · 6634 阅读 · 1 评论 -
对象创建问题:heapOnly,stackOnly代码(C++代码)
class HeapOnly <br />{ <br />public: <br /> HeapOnly()<br /> { <br /> cout<<"constructor. "<<endl; <br /> } <br /> void destroy()<br /> { <br /> delete this; <br /> } <br />private: <br /> ~HeapOnly(){} <br />}; int main() <br />{ <br /> Heap转载 2010-12-03 12:26:00 · 1867 阅读 · 2 评论 -
阿里云面试总结
电话问题1:构造和析构函数中的虚函数调用;电话问题2:C++中的异常可不可以是引用;电话问题3:TCP状态中的close_wait是什么状态;电话问题4:排序算法的时间复杂度;面试问题1.atoi函数编写;答案:自己写的atoi函数----(注意:自己定义的atoi函数和库的atoi函数一样的时候,抛出异常时会引起异常退出,个人认为是异常没有不知道被那个函数抛出,所以coredump)#include #include #include #include #include #include #include原创 2010-12-05 16:17:00 · 13363 阅读 · 3 评论 -
排序算法--分类
<br />快速排序法:<br />#include<iostream><br />using namespace std;<br /> <br />void QuickSort(int *pData,int left,int right)<br />{<br /> int i(left),j(right),middle(0),iTemp原创 2010-12-07 14:20:00 · 914 阅读 · 0 评论 -
面试70问 经典回答
<br />1、请你自我介绍一下你自己,<br /> 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”。企业喜欢有礼貌的求职者。<br /> 2、你觉得你个性转载 2010-12-14 22:27:00 · 1233 阅读 · 0 评论 -
变量的扩展问题--总结
测试代码如下:#include int main(){ int i = 3901710319; (越界) unsigned int j = i; unsigned long test1 = i; unsigned long test2 = j; long test3 = i; long test4 = j; printf("test1 = %lu, test2 = %lu, test3 = %lu, test4 = %lu/n", test1, test2, test3, test4); return 0原创 2010-12-23 14:49:00 · 1469 阅读 · 0 评论 -
已知前序是ABCDEFG 中序是CBEDAFG 求二叉树的后序?
<br />已知前序是ABCDEFG 中序是CBEDAFG 求二叉树的后序?<br />1.首先从取前序第1个字母(A) 按此字母把中序分成两段 (CBED) (AFG)<br />2.A做根 (CBED)做左子树 (FG)右子树<br />3.再按长度把前序后面的部分分成(BCDE) (FG)问题就转换成已知前序是BCDE 中序是CBED 求二叉树和已经前序是FG 中序是FG<br />看出来了没有,递归求解的.<br />下面的步骤省略分析.<br />前序 中序 : 根 左子树分解 右子树分解<br原创 2010-12-23 15:17:00 · 4438 阅读 · 0 评论 -
如何判断一个长字符串能否被一个数整除(注意:长字符串很长,不能转换为整数)
<br />bool devString(const char *str, int devnum)<br />{<br /> assert((str != NULL) && (devnum != 0));<br /> int tmp = 0;<br /> while(*str != '/0')<br /> {<br /> if ((*str > '9') || (*str < '0'))<br /> {<br /> throw "Input String include invalid char!"转载 2010-12-28 11:16:00 · 2834 阅读 · 0 评论 -
程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结
转载:http://blog.csdn.net/v_july_v/article/details/6543438程序员面试、算法研究、编程艺术、红黑树4大经典原创系列集锦与总结作者:July--结构之法算法之道blog之博主。时间:2010年10月-2011年6月。出处:http://blog.csdn.net/v_JULY_v 。声明:版权所有,侵犯必究。转载 2011-12-15 16:18:43 · 2051 阅读 · 0 评论