求职笔试题集合

1、用 C 语言写一个函数交换两整数的值,不借助第三个变量

方法一:

a = a + b; 
b = a - b; 
a = a - b; 
不过提出了最大的问题,就是两个正数的溢出问题。

方法二:

a = a - b; 
b = a + b; 
a = b - a; 

还是存在溢出的情况:一正数与一负数。

方法三:

a = a^b;
b = a^b;
a = a^b;

不存在溢出。

2、500张骨牌整齐地拍成一行,按顺序编号为1、2、3、…………499、500。第一次拿走所有奇数位置上的骨牌,第二次再从剩余的骨牌中拿走所有奇数位置上的骨牌,以此类推,请问最后一张骨牌编号是多少?

第一次拿走后剩下的骨牌编号:2n

第二次拿走后剩下的骨牌编号:4n

第三次拿走后剩下的骨牌编号:8n

…………

第m次拿走后剩下的骨牌编号:n*(2的m次方)

因为 n*(2的m次方) <= 500,所以n=1的时候,能取到最大的m,所以依据2的几次方特性可以得知, 2的m次方=256,所以m=8,所以最后一个骨牌编号是256.

3、下面两段代码输出结果是什么?

代码段1:

#include    <stdio.h>

int main(void)
{
    int a ,x ;
    for( a = 0, x = 0; a <= 1 && !x++ ; a++ )
    {
	a++;
    }
    
    printf("%d,%d\n",a,x);
    return 0;
}

代码段2:

#include    <stdio.h>

int main(void)
{
    int a ,x ;
    for( a = 0, x = 0; a <= 1 && !x++ ; )
    {
	a++;
    }
    
    printf("%d,%d\n",a,x);
    return 0;
}

!x++ 看起来是一个表达式,其实是两个表达式,分别为!x,和x++。

结果是

2,1

1,2

4、有两个表格如下:

a

idplay_idvalues
1171
2182
b

idplay_idothers
1191
2202
3213
执行下面的SQL语句,得到结果是?

A,SELECT a.play_id FROM a, b WHERE values=1 AND a.play_id=b.play_id

B,SELECT a.play_id FROM a,b WHERE values=1

答案:

A,17

B,17

      17

      17

5、JVM来运行这个class文件的原理。

参考答案:

Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的, 类装载器所做的工作实质是把类文件从硬盘读取到内存中,这个过程我们叫做【加载 】。加载完成之后,我们就可以进行一系列的运行前准备工作了,比如: 为类静态变量开辟空间,将常量池存放在方法区内存中并实现常量池地址解析,初始化类静态变量等等。

6、下面C 语言代码输出什么?

#include    <stdio.h>

int main(void)
{
    int b = 3;
    int arr[]={6,7,8,9,10};
    int * ptr;
    ptr = arr;
    *(ptr++) += 123;
    printf("%d,%d\n",*ptr,*(++ptr));
    return 0;
}

答案:8,8

printf("%d,%d\n",*ptr,*(++ptr));

是从右边开始执行的。

7、用一个表达式,判断一个数X是否是2的N次方,不可以使用循环语句。

答案:2的N次方二进制是:10,100,1000,10000.......如果X减1后与X运算,答案若是0,则X是2的N次方。

8、下面的代码实现了什么功能:

int f(int x, int y)
{
       return (x&y)+((x^y)>>1);
}
答案:x&y取得是x和y的相同位,这个结果是x和y相同位的一半,x^y是取x和y不同位,右移相当与除以2,所以这个函数的功能是取两个数的平均数。

9、有两个变量a和b,不使用判断语句找出两个数中值较大的那个。

答案:int   max = ((a+b)+abs(a-b))/2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值