
面试面筋
文章平均质量分 58
_王川
屌丝程序员
展开
-
面试题:强制类型转换
题目:下面程序结果是多少?(一)#include #include #include #include using namespace std;int main(){ float a=1.0f; cout<<(int)a<<endl; cout<<&a<<endl; cout<<(int &)a<<endl;//输出1065353216,(int&)a相当于将该浮点原创 2014-02-23 22:07:09 · 1502 阅读 · 0 评论 -
观察者模式
举个给教工发大米的例子来形象理解观察者模式:公会年底给教工发大米,但不知道什么时候发,因为公会也不知道何时大米才能到货,但是如果大米来了,教工就会做出响应,教工等着发大米就是观察者模式。有两种说法:一种是拉模式(Pull),就是教工时不时地到公会绕一圈,看看大米来了没有,这种当然不是一个好方法。还有一种模式,就是推模式(Push),大米如果到了公会,公会会给每个教工把大米送去,但这也不是一原创 2014-02-27 21:47:21 · 1245 阅读 · 2 评论 -
some面试题一览
收录一些有些许难度,又没有套路可循的面试题,(套路:比如一些题一看就是最短路径问题、动规问题、贪心问题等)1、给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数原创 2014-02-15 23:01:11 · 952 阅读 · 0 评论 -
面试题:编译、链接、载入
1、编译、链接、载入编译:将高级语言翻译成二进制代码链接:由链接程序将编译后形成的目标模块以及所需的库函数链接在一起,形成完成的载入模型。链接主要解决模块间的相互引用问题,分为地址和空间分配,符号解析和重定位几个步骤。载入:由载入程序将载入模块载入内存2、编译型语言与解释型语言编译型语言:编译程序将源程序翻译成目标程序后保存在另一个文件中,该目标程序可脱离编译程序直接在计算机上原创 2014-03-10 21:46:40 · 1492 阅读 · 0 评论 -
面试题:结构体
1、结构体中的冒号作用下列程序输出结果多少?#include #include typedef struct{ int a:2; int b:2; int c:1;}test;int main(){ test t; t.a=1; t.b=3; t.c=1; printf("%d\n%d\n%d\n",t.a,t.b,t.c); return 0;}结原创 2014-03-10 19:16:20 · 1635 阅读 · 0 评论 -
面试题:宏定义#define TRACE(S)(printf("%s\n",#S),S)
下列程序输出结果为多少?#include #include #define TRACE(S)(printf("%s\n",#S),S)int main(){ int a=5; int b=TRACE(a); const char *str="hello"; char des[50]; strcpy(des,TRACE(str)); printf("%s\n",des);原创 2014-03-10 19:07:05 · 2914 阅读 · 0 评论 -
数据库模式
数据库模式4个范式:1NF:数据库表的每一项都是不可分割的原子数据项,而不是集合、数组等;2NF:要求数据表的每个实例或记录必须可以被唯一地区分。例如员工表中的身份号码即可实现每一个员工的区分,该身份证号码即为候选键,在找不到候选键时,可额外增加属性以实现区分。假定选课关系表有学号、姓名、年龄、课程名称、成绩、学分属性,存在如下决定关系:(学号,课程名称)->(姓名,年龄,成绩,学分)原创 2014-02-28 14:40:38 · 1313 阅读 · 0 评论 -
Bridge桥接模式
有关于设计模式的问题,关键是理解理解桥接模式,可以借助蜡笔与毛笔的关系:如果我们用蜡笔画一幅画,需要大、中、小三种型号的蜡笔,还要有颜色,假设需要12中颜色,那么我们就需要36支蜡笔才行;但是如果我们用毛笔画一幅画,我们只需要三支型号的毛笔大、中、小,然后有12种颜色的颜料,这样我们只需要3支毛笔和12盒颜料就够了。这就是桥接模式,毛笔将笔和颜色分离开来,桥接模式的用意就是:将抽象原创 2014-02-27 21:34:39 · 933 阅读 · 0 评论 -
通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小
题目描述:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小。例如:var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];分析:很多情况下,贪心算法得到的解并不是最优解,但是这道题貌似是最优解思想:每次从AB中找到两个使得和原创 2014-02-16 16:38:28 · 2140 阅读 · 0 评论 -
含有指针类的拷贝
题目:下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。#include "iostream" #include #include using namespace std;template class Array { public: Array(unsigned arraySize):data(0), size(arrayS原创 2014-02-16 01:00:33 · 1068 阅读 · 0 评论 -
求1+2+…+n
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)这道题是道好题,何海涛面试100题中提供了如下方法:1、利用了静态成员变量和构造函数的特点,受教了#include "iostream" #include #include using namespace std;class T原创 2014-02-16 00:37:21 · 1738 阅读 · 0 评论 -
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数
腾讯面试题:给你10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数要求下排每个数都是先前上排那十个数在下排出现的次数。上排的十个数如下:【0,1,2,3,4,5,6,7,8,9】举一个例子,数值: 0,1,2,3,4,5,6,7,8,9分配: 6,2,1,0,0,0,1,0,0,00 在下排出现了6 次,1 在下排出现了2 次,2 在下排出现了1 次,原创 2014-02-15 22:55:39 · 2536 阅读 · 2 评论 -
软件测试基础
功能测试(主要是黑盒测试,也称行为测试):只考虑各个功能,不考虑整个软件的内部结构及代码。一般从软件产品的界面、架构出发、按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出使产品更加符合用户使用的要求。包括边界值测试:找到边界,然后在其边界及其边界附近选点;健壮性测试、最坏情况测试、特殊值测试、随机测试可用性测试:是用户和系统交互时对用户体验原创 2014-02-27 22:03:23 · 1195 阅读 · 0 评论 -
面试题:指针
一、指针1、利用指针实现两数交换:#include using namespace std;void swap1(int p,int q){ int t; t=p; p=q; q=t;}void swap2(int *p,int *q){ int *t; *t=*p; *p=*q; *q=*t;}void swap3(int *p,int *q){ int原创 2014-02-26 16:15:08 · 1113 阅读 · 0 评论 -
面试题:const、static、sizeof
#include using namespace std;class A{public: mutable int m; int f()const{ return ++m; } A(int i):m(i){}};int main(){ A a(0); cout<<a.f(); return 0;}const自不必多少,可以定义常量、修饰函数参数、修饰函原创 2014-02-25 22:41:30 · 1128 阅读 · 0 评论 -
面试题:运算符优先级
#include using namespace std;int main(){ unsigned char a=0xA5; unsigned char b=~a>>4+1; printf("%d\n",b); return 0;}首先是运算符优先级:=、~、>>和+优先级顺序是怎样的运算符优先级和口诀:一共有十五个优先级: 1 () []原创 2014-02-25 20:36:52 · 1544 阅读 · 0 评论 -
面试题:宏定义
1、求结构体struc里某个变量相对struc的偏移量#include using namespace std;class node{ virtual void g(){}; void f(){}public: int a; char b[20]; double c;};#define FIND(struc,e) (unsigned) &(((struc *)0)->e)原创 2014-02-25 21:20:04 · 1221 阅读 · 0 评论 -
面试题:位操作
1、求两个数的平均值分析:1、当然可以用(a+b)/2,但是若a和b值太大,难免a+b越界2、如果打开用a/2+b/2,但是在int中如果a,b都是奇数的话,那么结果就会比原来的值小13、考虑我们笔算加法时的情况,如果算a+b,如果不考虑进位情况即是a^b,各个位的前一位向后一位的进位是:(a&b),最后除以2即右移1位,所以位操作求平均值有(a&b)+((a^b)>>1)#i原创 2014-03-10 20:03:29 · 982 阅读 · 0 评论