今天去北京仙掌面试,这是一家做手机游戏的公司,我面试的职位是C/C++软件工程师。
可谓是丢人丢大发了,一个笔试就直接让人家鄙视了,其实笔试试题不是很难,这充分说明一个问题,暴露出以前很多的缺点。
第一点,动手能力太差,很多编程题目知道怎么去写,也可以用伪代码写出来,但是用计算机语言写出来就出现了问题。比如说今天的第一道编程题目,涉及到的知识点只有些顺序结构的问题,我却没有准确的表达出来。
第二点,基础太差。有几道是位运算的题目,一道是用最有效率的办法计算2乘以8等于几?另一道是使用位运算符来交换整数变量X和Y。在这个知识点上也能够出现这样的问题,真的是不应该。第一道用移位运算符可以实现吧 ,可我也不敢写出来。 第二道则是完全没有想到,只知道有临时变量和另外一种方法可以实现,却没有想到异或运算符。
另外的几点知识点也不是很扎实,比如const,++,指针诸如此类的东西,还有算法的东西,比如表,遍历,A*算法。
晚上再次和哥哥谈起培训的事,这一次我也彻底打消了自己这样的想法 。看了他用java实现的游戏, 我真的觉得好惭愧。 这不仅仅是代码的问题, 这是一种怎样的人生态度。 为什么别人能做到的事情你就不能做到??????
另附:
1.使用位运算符来交换整数变量X和Y
#include<iostream>
using namespace std;
int swap(int* x , int* y) ;
int main()
{
int a = 3 , b = 4 ;
cout << a << " " << b << endl ;
swap(&a,&b) ;
cout << a << " " << b << endl ;
return 0 ;
}
int swap(int* x , int* y)
{
*x = *x ^ *y ;
*y = *y ^ *x ;
*x = *x ^ *y ;
return 0 ;
}
c中异或运算的具体用法
:
异或:若参加运算的两个二进制位同号,则结果为0;异号则为1.即 0异或0=0,1异或0=1,1异或1=0.
应用:
1.使特定位翻转。假设有01111010,想使其低4位翻转。可以将它与00001111进行异或运算。结果为01110101
2.与0异或,保留原值。如012异或00=012.
3.交换两个值,不用临时变量。假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a异或b;
b=b异或a;
a=a异或b;
2.A*算法
可见 http://www.cppblog.com/Tim/archive/2011/10/07/33217.html
3.其他诸如指针,const,算法等知识点自行复习。