您的位置:首页 > 职场人生

面试题的汇总

2010-07-03 21:19 127 查看
今年10月份往后就要开始找工作了,虽然感觉自己的能力还很差,但不能灰心丧气,每天逛逛论坛,看看一些面试题,总结一下面试的知识,可以着急,但万万不可浮躁。

按照日期,红色的是我还不完全懂的东西。有人会的可以留言。

7月2日

有一间屋子的墙上装有100盏灯,分别编号为1到100,现在都灭着。屋外有100人,编号也分别从1到100,按顺序进屋。每个人都必须把自己编号的倍数按一下所对应灯的开关,例如1号人进去会把所有是1的倍数的灯的开关按一下,2号人进去会把所有是2的倍数的开关按一下。以此类推,请问最后有几盏灯还亮着?

首先这道题的本质是求1到100这些数有哪些的约数包括1和它本身)是奇数个。而之前小学的公式有一个数的约数比如12=22
*3,约数为(2+1)*(1+1)=6个,所以如果约数个数为奇数,则它的约数都是某个数的偶次幂,所以一定是完全平方数,结果为:1,4,9...81,100。

好吧,我承认这道题是行测里的,以后会有编程方面的问题。

7月3日

http://topic.csdn.net/u/20090211/16/773219a4-bb84-4702-8669-28fef466af62.html?9958

1.编程领域里经常使用的缩写:OS(open source,operating system);VS(visual studio);MS(microsoft);CS(Client/Server,Control System);RTOS(Real Time Operator System);SDK(Software Development Kits);IDE(Integrated Development Environment)。

2.下列几个C语言表达式是否正确?如果正确,写出它们表达的意思:

(1) a&b 正确,表示a和b按位与

(2) a&(&b) 正确,a和b的地址按位与

(3) a&&b 正确,表示逻辑与

(4) a**b 正确,第一个*表示乘,第二个*表示指针

3.在编程风格中,一般都要强调使用匈牙利命名法,下面是匈牙利命名法中一些公认的前缀,并给出变量名的例子,请写出它们所代表的变量类型:

前缀 变量名 描述前缀的意义

g_ g_Lock 全局变量

m_ m_Num 类成员

p pTrack 指针

h hModule 句柄

sz szText 字符串

dw dwMsg DWORD类型

4、头文件中ifndef / define / endif 是做什么用的?

避免重复引入

5、代码里有时可以看到extern “C”, 这语句是做什么用的?

  在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?
  C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。

更详细的解释:http://tech.163.com/06/0118/09/27O66HCC0009159Q.html

6、软件开发中说的check out, check in是什么意思?

源代码管理系统的签入,签出

7、C语言函数前面加static,和C++类的成员函数前面加static,两者的意义有何区别?

C的static是限制函数的为编译单元内部使用

C++类的static使函数成为类成员,而不是实例成员。

8、简单描述一下WIN32上 .c / .cpp / .rc / .obj / .res / .lib / .dll / .exe这几个后缀所表示的文件类型,以及他们之间的相互生成关系。如果你是LINUX程序员,前面这个问题答不上,那么请描述一下GCC编译的几个步骤和中间生成文件。

.c: C代码

.cpp: C++代码

.obj:目标代码(由.c或.cpp编译后产生) 对应gcc编译的.o文件

.rc:资源文件

.res:编译后的十进制资源(由.rc编译后产生)

上面这两个文件在gcc下好像没有,请高人解答

.exe:可执行程序 一般为程序名,gcc对可执行程序的后缀没有要求

.dll:动态链接库 c动态链接库文件“lib*.so*”

对于静态链接库win32里应该是.lib文件,gcc下应该是.a文件。此外.a文件可以使用ar命令将.o文件包含进来作为静态库文件。

7月4日

1、下列程序运行结果

int
main()

{

unsigned
char
a
=
0xA5
;

unsigned
char
b
=~
a
>>
4
;

printf(
"
b=%d/n
"
,b);

return

0
;

}

1
: 整值提升后:000000a5;

2
: 取反后 :ffffff5a;

3
: 右移4位 :若是算术右移fffffff5; 若是逻辑右移:0ffffff5

4
: 但是不论是算术右移和逻辑右移,截断后都为:f5即245

2、基础知识

一个字节1B=8bit,计算机以字节进行编址;一种类型的变量往往占多个字节;计算机一次存取、处理和传输的数据长度称为字,现在大多数计算机都是32位或64位的,也就是字长为32或64.而字长是由什么决定的呢?

计算机的字长取决于数据总线的宽度
.字长是指计算机内部参与运算的数的位数。它决定着计算机
内部寄存器、ALU和数据总线的位数,直接影响着机器的硬件规模和造价。字长直接反映了一台计算机的计算精度,为适应不同的要求及协调运算精度和硬件造价
间的关系,大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)和双倍字长运算。

8月10日

今天看了一下关于sizeof的内容,因为指针的大小是4个字节,所以当求*p的sizeof(p)的时候,不管p指向什么值都是4。

int *p;double *q;

sizeof(p)==4;sizeof(q)==4;//指针都是四位

sizeof(*p)==sizeof(int)==4;//int类型占4位,当然,大小还和平台相关

sizeof(*q)==sizeof(double)==8;//double类型占8位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: