
Written exam and interview
WQP_Ya_Ping
程序员的自我修养。。。
展开
-
new与malloc的10点区别
1. 申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。2. 返回类型安全性new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要原创 2016-03-10 20:49:08 · 573 阅读 · 0 评论 -
笔试面试题8--内联函数和宏的区别
面试例题:内联函数和宏的差别是什么?答案:内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编 译的时候内联函数可以直接被镶嵌到目标代码中。而宏只是一个简单的替换。 内联函数要做参数类型检查,这是内联函数跟宏相比的优势。 inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。 对于短小的代码来说inline增加空间消耗换来的是效率提高,这方面和宏原创 2016-05-14 14:50:32 · 608 阅读 · 0 评论 -
笔试面试题9--指针和引用的区别
面试例题1:指针和引用的差别? 答案: (1)非空区别。在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某 些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指 向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果 变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。 不存在指向空值的引用这个事原创 2016-05-14 14:53:24 · 1403 阅读 · 0 评论 -
笔试面试题10--特殊指针
面试例题1:写出函数指针、函数返回指针、const指针、指向const的指针、指向const的const指针 指针。 函数指针: void (*f)() 函数返回指针: void * f() const指针: const int* 指向const的指针: int *const 指向const的const指针: const int *const原创 2016-05-14 14:57:35 · 432 阅读 · 0 评论 -
笔试面试题11--整数与字符串转化
面试例题1:怎样将整数转化成字符串数,并且不用函数itoa?# if 0//整数转化为字符串,不使用itoa()# include <stdio.h>int main(){ int num = 12345; int i = 0; char temp[7],str[7]; while(num) { temp[i] = num%10 + '0';原创 2016-05-14 15:24:00 · 365 阅读 · 0 评论 -
笔试面试题12--字符串拷贝、链接、比较无库函数实现
面试案例1:字符串拷贝函数问题。(不调用库函数)char *strcpy(char *strDest, const char *strSrc){ assert((strDest != NULL) && (strSrc != NULL)); char *address = strDest; while((*strDest ++ = *strSrc ++) != '\0');原创 2016-05-14 15:37:52 · 481 阅读 · 0 评论 -
笔试面试13--给定 x, k ,求满足 x + y = x | y 的第 k 小的正整数 y
给定 x, k ,求满足 x + y = x | y 的第 k 小的正整数 y 。 | 是二进制的或(or)运算,例如 3 | 5 = 7。比如当 x=5,k=1时返回 2,因为5+1=6 不等于 5|1=5,而 5+2=7 等于 5 | 2 = 7。解法:程序原创 2016-05-19 17:39:25 · 2472 阅读 · 0 评论 -
笔试面试题16--微信红包
题目: 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数 的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。 给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。 测试样例: [1,2,3,2,2],5 返回:2解答://思想:某个红包金额,超过红包总数的一半,,所以当我们把红包金额原创 2016-06-02 11:54:11 · 3155 阅读 · 0 评论 -
剑指Offer之字符串空格替换问题
由于在剑指Offer书上或是别人写过的代码里,都没提及这道题的前提条件,导致我始终看不懂为何不用分配新内存,几经内存崩溃、访问越界,终于找出了原因,现在将完整代码展现给大家:: 原题目: 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 前提:原数组后有充足的空间容纳多的字符,所以本次并没原创 2016-06-04 23:38:19 · 421 阅读 · 0 评论 -
剑指Offer算法精炼(2)
//FileName :: Algorithm.cpp(剑指Offer)//Author :: Weiqp//Date :: 2016-6-14/*1. 输出链表倒数第K个节点 思想:使用两个指针p1,p2,起初同时指向链表头节点,先让p1向前走K-1步,然后两个指针同时向后移动, 当p1指向链表末尾,即p1->next为空时,p2此时正好指向倒数第K个节点*/#原创 2016-06-26 19:34:35 · 454 阅读 · 0 评论 -
剑指Offer算法精炼
//File:: test.cpp//Author:: Weiqp//Date:: 2016-6-4# if 0# include <iostream>using namespace std;void main(){ int n[][3] = {10,20,30,40,50,60}; int (*p)[3]; p = n; // 10原创 2016-06-05 20:18:51 · 483 阅读 · 0 评论 -
二叉树前序、中序、后续互求
基础: 前+中—>后 后+中—>前原创 2016-09-09 14:07:50 · 1029 阅读 · 0 评论 -
线程安全的概念,实现线程安全的几种方法
对于多线程编程,很多人概念不清,写代码的时候要么是处处加锁,影响性能不说,还容易莫名其妙的死锁,还有人对多线程敬而远之。C/C++: 1.局部变量局部使用是安全的 为什么?因为每个thread 都有自己的运行堆栈,而局部变量是生存在堆栈中,大家不干扰。 所以代码1 int local1; ++local1; 是安全的2.全局原生变量多线程读写是不安全的 全局变量是在堆(heap)中转载 2016-09-09 14:21:40 · 2668 阅读 · 0 评论 -
Typedef & # define
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。2)typedef是在编译时处理的。它在自己的作用域内给一原创 2016-09-09 14:25:55 · 305 阅读 · 0 评论 -
map/multimap/hashmap的区别
Map: STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据映射处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的.原创 2016-10-21 20:03:01 · 1926 阅读 · 0 评论 -
STL中Sort()源码剖析
点击打开链接Introspective Sorting(内省式排序算法)。它是一种混合式的排序算法,集成了堆排序、插入排序、快速排序三种算法各自的优点:在数据量很大时采用正常的快速排序,此时效率为O(logN)。一旦分段后的数据量小于某个阈值,就改用插入排序,因为此时这个分段是基本有序的,这时效率可达O(N)。在递归过程中,如果递归层次过深,分割行为有恶转载 2016-10-21 20:25:44 · 460 阅读 · 0 评论 -
KMP算法
KMP算法理解 最近在学习字符串的模式匹配算法,有简单的BF算法,大家自行百度很容易理解,但效率并不高。 KMP算法,引入了一个next数组,效率明显提升,大家可以访问上方蓝色链接进行了解。KMP算法理解起来有点难度,网上教程又让人眼花缭乱,所以分享一个容易理解的给大家!转载 2016-05-04 20:59:34 · 347 阅读 · 0 评论 -
五大常用算法
算法设计之五大常用算法设计方法总结::http://blog.youkuaiyun.com/zolalad/article/details/11393915转载 2016-05-11 22:58:25 · 413 阅读 · 0 评论 -
卡特兰数相关问题
详见链接::http://blog.youkuaiyun.com/han_xiaoyang/article/details/11938973原创 2016-05-12 17:32:42 · 398 阅读 · 0 评论 -
编程规范
编程规范http://www.codeceo.com/article/c-cpp-code-standards.html转载 2016-03-11 22:04:14 · 381 阅读 · 0 评论 -
C++运行时多态之虚表
C++三大特点是封装、继承、多态,这次我们来聊聊多态的情况之一“运行时多态”。运行时多态的实现靠虚函数,虚函数的具体实现又依赖虚函数表(虚表)。所以,虚表才是关键所在,下面从四种情况总结一下虚表的具体实现:基类Base:{virtual +f();virtual +g;virtual +h;} 1.一般继承(无虚函数覆盖)原创 2016-03-11 22:51:57 · 597 阅读 · 0 评论 -
8大排序算法详解
8大排序算法详解转载 2016-03-12 10:03:29 · 419 阅读 · 0 评论 -
什么函数才能成为虚函数?
一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。 设置虚函数须注意: 1:只有类的成员函数才能说明为虚函数; 2:静态成员函数不能是虚函数; 3:内联函数不能为虚函数; 4:构造函数不能是虚函数; 5:析构函数可以是虚函数,而且通常声明为虚函数。原因:内联函数需要在编译阶段展开,而虚函数是运行时动态绑定的,编译时无法展开; 构造函数在进行调用时还不原创 2016-05-11 14:55:23 · 1527 阅读 · 0 评论 -
Vim (.Virc/.Vimrc文件)常见配置
1..视当前自己安装的Linux系统而定,在/etc/vim下找到.vimrc文件;或者在/etc目录下找到.virc文件。2..使用命令chmod +x .vimrc 或 chmod +x .virc使文件获得修改权限。3..往文件末尾添加下列命令syntax on #语法高亮显示#如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:export原创 2016-05-11 22:22:09 · 1361 阅读 · 0 评论 -
笔试面试题1
1.以下函数中,和其它函数不属于一类的是(C)A.fwrite B. putc C.pwrite D.putchar E.getline F.scanf解析:(1).size_t fwrite(const void * ptr, size_t size, size_t nmemb, FIL原创 2016-05-12 09:20:36 · 1011 阅读 · 0 评论 -
笔试面试题2
2.假定CSomething是一个类,执行下面这些语句之后,内存里创建了__个CSomething对象。CSomething a();CSomething b(2);CSomething c[3];CSomething &ra = b;CSomething d=b;CSomething *pA = c;CSomething *p = new CSomething(4);原创 2016-05-12 09:46:14 · 327 阅读 · 0 评论 -
笔试面试题14---.h/.exe/.lib/.dll文件
1、 下列有关windows系统的EXE和DLL文件说法错误的是? A.EXE和DLL文件都是PE文件 B.EXE不能有导出函数,DLL可以有导出函数 C.EXE有x86和x64之分,则DLL没有 D.EXE可以单独运行,DLL则不行答案解析:BC PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,原创 2016-05-25 11:08:37 · 714 阅读 · 0 评论 -
笔试面试题15--作业调度算法
1.假设系统按单道方式运行且采用最短作业优先算法,有J1,J2,J3,J4共4个作业同时到达,则以下哪几种情况下的平均周转时间为10分钟? A.执行时间J1:1分钟 J2:5分钟 J3:9分钟 J4:13分钟 B.执行时间J1:1分钟 J2:4分钟 J3:7分钟 J4:10分钟 C.执行时间J1:2分钟 J2:4分钟 J3:6分钟 J4:8分钟 D.执行时间J1:3分钟 J2:6分钟 J3:原创 2016-05-25 11:23:34 · 1358 阅读 · 0 评论 -
面试笔试题4--如何判断主机是大端小端?
方法1#includeint main(void){ unsigned int x = 0x12345678; unsigned char *p = (unsigned char*)&x; printf("%0x,%0x,%0x,%0x\n",p[0],p[1],p[2],p[3]); return 0;} //输出结果为:78 56原创 2016-05-12 14:35:24 · 357 阅读 · 0 评论 -
面试笔试题5--大整数表示问题?
5. 大整数845678992357836701转化成16进制表示,最后两位字符是? A. AB B. EF C. 8B D. 9D解析:它要16进制最后两位,也就是二进制最后八位。那么最后八位怎么求?很简单,除二取余。这样从后往前写就是10111001。。。。二进制嘛,倒着写,最后两位位应该是100111原创 2016-05-12 14:44:22 · 1051 阅读 · 0 评论 -
大整数加减乘除问题
详见链接:http://www.ityuedu.com/article/5779445281/原创 2016-05-12 14:54:35 · 547 阅读 · 0 评论 -
笔试面试题6--递归思想
笔试面试题66.有一段楼梯台阶有15级台阶,以小明的脚力一步最多只能跨3级,请问小明登上这段楼梯有多少种不同的走法?( C ) A.2345 B.3261 C.5768 D.6843解析:类似斐波那契数列的思想,若所求方法表示为f(n),因为当台阶大于3时,可看做是f(n)=f(n-1)+f(n-2)+f(n-3);//因为踏入最后一节阶梯有原创 2016-05-12 23:16:40 · 921 阅读 · 0 评论 -
笔试面试题7--求因数个数
7.整数240有多少个因数?(C) A.36 B.54 C. 20 D.28解析:公式:因数个数 = (因子1 + 1)* (因子2 + 1)*(因子3 + 1)……240分解成4个2,1个3,1个5,那么因数个数就是(4+1)(1+1)(1+1)=5*2*2=20原创 2016-05-12 23:29:07 · 706 阅读 · 0 评论 -
选择、快速排序算法实现
排序算法在笔试面试中是常考的知识点之一,其中的选择排序和快排算法经常会要求面试者手写。由 于其代码量短小并且可以在短时间内考察出面试者的编程习惯和基本功。为了提高巩固自己的基本功,所以在此实现两个算法的源码,也供大家评阅://FileName: Sort Algorithm//Author : WQP_Ya_Ping//Date : 2016-5-13//打印原数组vo原创 2016-05-13 14:18:56 · 743 阅读 · 0 评论 -
C++11新标准
http://yangtaixiao.blog.163.com/blog/static/42235441201448101853955/转载 2016-10-21 20:33:41 · 720 阅读 · 0 评论