Everything that kills me makes me feel alive!

Janna ·
更新时间:2024-09-20
· 878 次阅读

**

记一次失败的面试

**

2020.3.19 天晴

“你的专业排名是多少?”
“**%。”
“你上过什么编程相关的课程?”
“C语言,汇编,微机原理,计算机控制技术,单片机原理。”
“最熟悉的是什么?” //担心答不上,还贴心地问最擅长什么
“C语言。”
“那说一下变量的生命周期。”
“全局变量……局部变量……”
“说下static全局和局部。”
“static……”
“说下宏?”
“宏……”
“在编译前会对宏进行什么操作?”
“?” //概念都记不清,我太菜了

“先写一个结构体吧,里面包含两个整形,一个字符数组。”

“OK”

struct one{ int a; int b; char c[6]; };

求结构体中字符数组c相对结构体的偏移量。” //问题来了

我:而结构体内元素的偏移量,啥?

看似稳如老狗,实则慌不择路地写下代码,然后在老师教学生般的指导下把代码改成了这样:

typedef struct one aa; int move(){ struct one *p; int x; p=(aa*)malloc(sizeof(aa)); x=(p->c)-(&p->a); return x; }

结果还是错的,但这就是最终版本了。
/* 不用编译器试错,我也很很绝望啊,往日敲代码都是敲完编完再改的。(原来这就是我菜的借口) */
听完问题的一瞬间我就明白了——是我没玩过的。我知道天生我菜必有用,没想到紧张让我菜上加菜。
然后就是面试官询问我擅长的其他项目,试图抢救一下。
然而我却不解风情地在原地自裁的路上越走越远。
然后就没有然后了。
我们问好后依依惜别。
直到那一瞬我才明白了事情的严重性。
原来,这就是结局了。
“说好的做题呢???”我心里大大的问号。
明白事实,在一切结束之后:“哦,原来做过了。这么简单的题目都做不来,救不了的。”

确实,这么简单,救不了的啊

很快就收到了凉凉的短信。
把编译器打开呼吸节奏渐渐地平缓。
是啊,就这么简单。
在一瞬间我想到了两种可能。
法1:指针强制类型转换,相减 。
法2:结构体总长减字符数组占位。

//定义结构体 typedef struct one{//之后程序中,若定义struct变量,C语言下struct不能省略,c++语言下可以省略struct int a; int b; char c[CL]; }one; // //方法一:指针强制类型转换,相减 void roadOne(one *p){ long long n; n=(long long)p->c-(long long)&p->a;//64位系统,指针为8位 ,故强制转换为long long printf("方法一:指针强制类型转换,相减 ,字符数组的偏移量为:%lld\n",n); } // //方法二: 构体总长减字符数组占位 void roadTwo(one *p,int length,int cLength){ int n; if(cLength%4==0)//若整除4,则字符数组长度等于其在结构体中的占位 n=length-cLength; else//否则不足4位,补足 4位 n=length-4*(cLength/4+1); printf("方法二:结构体总长减字符数组占位,字符数组的偏移量为:%d\n",n); }

简单得我像是弱智。
还有百度到的法3:使用offsetof()。

//方法三:使用offsetof() void roadThree(){ int n; n=offsetof(one,c);//求偏移量函数,输入为结构体名和其中变量名 printf("方法三:使用offsetof(),字符数组的偏移量为:%d\n",n); }

awsl
However, everything that kills me makes me feel alive!

言而总之,这次失败的面试告诉我:
请用 "我选择,我负责,我想办法"
替代 “我不知,我害怕,我选择放弃” !!!

“去解题吧!就像所有问题都有答案一样!”

(经验+0.5,当前经验值1.5。)


作者:whfy



everything alive

需要 登录 后方可回复, 如果你还没有账号请 注册新账号