面试要想在编程面试中脱颖而出
你的好日子就要来了。你得到了一家顶级科技公司的面试机会,你知道,那是你一直梦想和祈祷能进入的公司。你心里七上八下的。无论你是新手还是专业人士,你仍然需要为面试做准备。
在过去十年左右的时间里,我曾多次坐在面试官和被面试者的两边,看过足够多的面试,我知道其中的模式。通常情况下,面试的C编程部分会从关于C语言、理论和结构的问题开始,以了解应聘者对这个主题的了解程度。接下来是一些“阅读”代码,然后实际编写程序。
在本文中,我将带您了解典型的C理论问题。我们将分别讨论实际的编程问题。准备好开始了吗?我们开始吧。
如果您是新手,您可能想知道如何最好地展示您的技能,并掩盖您缺乏大量的编程经验。一些好的C语言编程肯定会有帮助。
如果您已经有了丰富的编程经验,那么您编写代码的时候可能几乎是在自动驾驶模式下。你知道你的东西。但你还记得那个理论吗?你能在面试时解释一下吗?它总是有助于唤醒你的记忆,回想起流行词汇C编程课程。
什么是空指针?
它是一个指针,不指向任何东西,即任何内存地址。它被定义为“NULL”,并且有一个内部值,保证是唯一的,不同于任何有效的指针。它通常用作占位符,直到你给指针赋了一个实际值并对有效指针进行交叉检查。
你知道有什么方法可以减少创建的可执行文件的大小吗?
如果包含多个库,我们可以尝试动态链接它们。
什么是静态变量?什么时候使用?
即使在定义静态变量的块终止后,声明为静态变量的变量仍将继续存在。静态变量有两种主要用途:
- 在函数调用之间保留一个值。
- 将函数或全局变量的作用域限制在特定文件内
一个变量可以既是常量又是易失性的吗?
虽然这看起来像是矛盾,但却是可能的。的常量修饰符表示此代码块不能更改该变量,但可以通过此代码之外的方式更改该变量。
什么是宏?使用宏还是函数更好?
宏是在编译时展开为内联代码的预处理指令。这通常用于定义一些经常使用的限制、变量或代码片段。使用宏的优点是i)它是类型无关的ii)没有像函数调用那样的开销。然而,宏只能用于简单的代码片段,因为宏的“文本”是逐字内联放置的。
你知道enum是什么吗?宏和枚举相同吗?
枚举是枚举的缩写,是Ansi c中的一种变量类型。枚举可以用来将它们映射到更有意义的名称,而不是使用int来表示一组值。对于处理一组值,枚举是比宏更好的选择,尽管它可能是个人的选择。首选枚举的一些原因是它们是类型定义和有符号的。这意味着当有一组紧密关联的顺序整数时,它们工作得非常好。
你知道内存拷贝(memcpy)和字符串拷贝(strcpy)函数吗?它们可以互换使用吗?
一个存储器副本被设计用来处理任何类型的数据。您必须显式列出要复制的字节数。另一方面,字符串副本是一种专门的内存副本。它仅用于复制字符串。它将源的每个字节复制到目标,直到到达结束空字符为止。
是否有可能在程序退出后执行代码?
标准C库有一个atexit()函数,可以在程序结束时用于执行清理操作。你可以通过传递你想要的函数指针来做任何你想做的操作。
声明变量和定义变量之间的区别是什么?
声明一个变量只是告诉编译器它的类型。还没有为它分配内存。在定义变量时,它也会分配空间来存储变量。您也可以在声明变量时初始化它。
什么是指针和地址?
地址是内存中存储变量的位置。指针是存储地址的变量。
参数如何传递给函数?
除了数组和函数,C通过值传递参数或形参。这意味着它在函数中创建参数值的本地副本。函数不能修改传递给它的实际参数。
x++和x+1有什么不同吗?
是的,没有。它们都给出相同的输出。只是x++可以直接映射到INR或递增机器指令,而x+1将映射到读取和添加,因此需要更多的指令。
这是很多C的问题!现在你应该已经让他们相信你是专业的了!
如果你漏掉了任何一个答案,不用担心。说你不知道其中一个答案是可以的。你不会因为漏掉了一个答案而受到严厉的评判。保持冷静,继续下一个任务。面试更可能会对你的态度和能力进行全面的考察。这很容易通过快速的C课程来提高你的编程技能。
虽然在这篇文章中我们关注的是C类问题,但为了真正做好面试准备,你也应该这么做考虑所有其他方面。
所有最好的!面试成功!