• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
linux_ios
博客园    首页    新随笔    联系   管理    订阅  订阅

最近遇到问题

最近笔试面试的一些问题和感触 ,都是c,c++ 基础题 , 主要是做的题太少。 基础真的是没有, 这几年的大学生活都被狗吃了 真的很想吐槽自己的大学生活。 感觉找工作的一个月 都比大学学的基础都多。 现在不讲这些 马上把一些基础问题 重新回顾一下把。(最近复习我的C++啊)

class Bass {

public:

    Bass(){x = 1;}

 

    int x;

};

 

class Derive :public Bass {

    

    

public:

    Derive(){x = 2;}

 

    int x ;

};

 

 

int main(int argc, const char * argv[])

{

 

    Derive d;

    Bass & b1 = d;

    printf(" %i ,%li,%li",b1.x ,sizeof(b1),sizeof(d));

    return 0;

}

 输出 : 1 4 8 

记得面试碰到最多的问题是 sizeof  操作符的问题  一开始我都不知道这些 后来。。。。

看了 http://lemonmilk.blog.51cto.com/  找一段重要的贴一下

4。结构类型

在上面的程序中,

struct str{
                          double d;
                         char ch;
                          int data;
 }str_wu;
 struct str1{
                           char ch;
                            double d;
                             int data;
 }str_wu1;

两个不同的结构,但是内部的元素是相同的,都是double,int,char,只是顺序不一样,就结果不一样。why?

这时因为VC存储数据的时候要对其,具体的情况如下:

类型
  对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)

  Char
  偏移量必须为sizeof(char)即1的倍数

  int 
  偏移量必须为sizeof(int)即4的倍数

  float
  偏移量必须为sizeof(float)即4的倍数

  double
  偏移量必须为sizeof(double)即8的倍数

  Short
  偏移量必须为sizeof(short)即2的倍数

比如:str_wu,为上面的结构分配空间的时候,VC根据成员变量出现的顺序和对齐方式,先为第一个成员dda1分配空间,其起始地址跟结构的起始地址相同(刚好偏移量0刚好为sizeof(double)的倍数),该成员变量占用sizeof(double)=8个字节;接下来为第二个成员dda分配空间,这时下一个可以分配的地址对于结构的起始地址的偏移量为8,是sizeof(char)的倍数,所以把dda存放在偏移量为8的地方满足对齐方式,该成员变量占用sizeof(char)=1个字节;接下来为第三个成员type分配空间,这时下一个可以分配的地址对于结构的起始地址的偏移量为9,不是sizeof(int)=4的倍数,为了满足对齐方式对偏移量的约束问题,VC自动填充3个字节(这三个字节没有放什么东西),这时下一个可以分配的地址对于结构的起始地址的偏移量为12,刚好是sizeof(int)=4的倍数,所以把type存放在偏移量为12的地方,该成员变量占用sizeof(int)=4个字节;这时整个结构的成员变量已经都分配了空间,总的占用的空间大小为:8+1+3+4=16,刚好为结构的字节边界数(即结构中占用最大空间的类型所占用的字节数sizeof(double)=8)的倍数,所以没有空缺的字节需要填充。所以整个结构的大小为:sizeof(str_wu)=8+1+3+4=16,其中有3个字节是VC自动填充的,没有放任何有意义的东西。

还有好多是基础的太基础的问题  我都忽略了。 

来个简单的算法把

  参考:http://hi.baidu.com/aztfei/item/70042cdf3103fa866cce3fd0

 1 关于找出数组中第二大的数
 2 
 3 public int FindSecond(int[] arr)
 4 {
 5 int length=arr.length; //数组长度
 6 int max=arr[0];    // 当前第一项为最大项
 7 int second=arr[1]; //当前第二项为最大项
 8 if (max < second)     //比较第一二项的大小,根据大小设定max,second
 9 {
10    int temp = max;
11    max = second;
12    second = temp;
13 }
14 for(int i=2;i<length;i++)     //让后续的每一项和max,second比较,
15 {
16    if (arr[i] > max)            //修改max的值
17    {
18     second = max;
19     max = arr[i];
20    }
21    else if (arr[i] < second)   //比second小继续循环。
22    {
23     continue;
24    }
25    else                               // 此项即比max小,但比second数组大的项,把它重新复制给second
26    {
27     second = arr[i];
28    }
29 }
30 return second;
31 }

将字符串反序输出 

//反序一个字符串
void reverse(char s[])
{
 char c;
 int i,j;
 j = strlen(s) - 1;
 for(i = 0;i < j;i ++)
 {
  c = s[i];
  s[i] = s[j];
  s[j] = c;
  j --;
 }
}

void main(void)
{
 char str[LENGTH + 1];
 cout<<"Input a string:";
 cin>>str;
 reverse(str);
 cout<<"The string is reversed:"<<str<<endl;
}

 

问的最多的就是 手游的屏幕适配问题  可以看看

  http://blog.csdn.net/xiaominghimi/article/details/8918235

  http://www.ityran.com/archives/4018

最近逼自己做了一个完整的 demo 去应聘  , 那样即使你C++ 不是很好。 面试的大牛也会对你好点的 , 不会太为难你, 工资还可观点呵呵。

demo 就不放出来了。 呵呵。 技术太次了。

  想做手游的还是得看C++啊。

 

以上是我的最近面试碰到多一点的题, 有好多还没有整理 等有条件的把。

  最头疼的是 做那些操作系统 的题, 要看啊。 

做游戏那么麻烦么。 

  注: c++ c  数据结构  算法  操作系统  等

  

 

posted @ 2013-10-29 22:42  linux_ios  阅读(324)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3