笔试面试之C语言

    原文发表于我的微信公众号"涛歌依旧",可以点击如下红色文字链接阅读:

  笔试面试之C语言(链接)


     从微信公众号把原文直接复制过来,内容如下(图片和表格可能丢失,格式可能错乱,故建议直接点击上述红色链接阅读):
 

      前面写了金三银四求职季(链接),现在来逐步聊聊笔试面试,先来说C语言。

      C语言是一门基础的计算机语言,很重要。如果是初学计算机编程,我建议把C语言作为第一门语言,而不是现在烂大街的python.

      如果说C语言很简单,总让人感觉有点轻浮。如果说C语言难,又让人感觉是没入门。所以,我想说:C语言不难。

      实际上,在很多公司中,纯用C语言的场景并不多,更常见的是C++或者Java,以及现在流行的Go.  比如,华为和腾讯主要是用C++, 阿里主要是用Java, 而有些小公司,则在尝试选用Go.

      C语言很重要,笔试面试中,也会涉及到一些,适当刷题是有必要的,能查缺补漏。每一次的笔试面试,都值得我们去充分准备,甚至是冗余准备。

     下面,仅仅针对C语言本身来聊聊,比较基础(不涉及到数据结构和算法以及计算机的其它相关知识):

1.指针和函数

      指针是C语言的精髓,函数几乎是任何计算机语言的重要思想,必须熟练掌握,来看下这段程序有没有问题:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
void GetMemory(char *p){    p = (char *)malloc(1000);}
void Test(void) {    char *str = NULL;    GetMemory(str);     strcpy(str, "testing");}

      这个程序考查了对指针以及函数传参的理解,是非常简单的问题。类似地,我们应该掌握函数指针、数组指针和指针数组这些基本的概念。

      在实际开发中,对空指针进行操作,几乎是万恶之源,踩过无数坑的朋友们,应该心有余悸。

2.sizeof

      sizeof也几乎是必考的题目,典型的需要注意点有:

       (1) 字符串末尾的'\0'

       (2) 结构体内存对齐

       (3) 函数形参的sizeof

       (4) 指针的sizeof

       (5) 数组的sizeof

       (6) 空结构体的sizeof

        

      这些应该算是非常基础了,可以找一些题目来查缺补漏。在实际开发中,我见过别人在函数中对形参char str[]求sizeof, 以为那是字符串的长度,搞笑啊。

3.const

       const的用法,在笔试和面试时,也经常出现,尤其是配合指针使用时,比如要熟知下面语句的含义:

  •  
const char *p = "abc";

       另外,关于const和宏的区别,也需要很清楚。在实际开发中,该用const的地方,建议都加,能增强程序的稳健性和可读性。

4.static

       static的用法,也经常被考查到。实际上,static就是限定了函数和变量仅在本文件内有效。在实际开发中,大家肯定见过单例,必然见过static.

5.extern

      extern的用法,也常见于笔试面试中,也必须要掌握。在实际开发中,当C和C++混在一起的时候,extern就显得尤为重要了。

6.字符串

      字符串在C语言中很常见,经常与sizeof和各类字符串操作函数一起考查,另外,要理解字符串和字符数组的区别。

      字符串需要特别注意越界问题,无论是笔试面试还是实际开发,都需要重视,该补'\0'的地方一定要补。很多进程崩溃的问题,都是字符串操作不当所致,见得太多了。

7. 宏和预编译

      宏和预编译也是C语言中经常涉及的点,基本的#define要掌握。#ifndef实现的头文件卫士,也是常考点。做过C语言程序实际开发的朋友,肯定会知道#ifndef的用途。

      #define与const的区别,#define与typedef的区别,都要了然于心。#include包含时,<>与""的区别也会经常被问到。

8. 零值比较

      各类型的值与零值的比较,已经是烂大街的题目了,网上到处都是。在准备笔试面试的同学,可以注意下。

9. 堆和栈

      堆和栈并不是C语言本身的内容,其区别也经常被考到。对于各种变量在内存中同的存储区域,也需要熟悉,实际上就是考查内存知识。

      在实际开发中,堆内存没有释放,容易让程序产生慢性病,积累到一定时间后爆发,所谓的内存内漏,让很多程序员不寒而栗。

10. 手写程序

      手写程序,也是笔试面试中必不可少的环节。需要注意非法输入的判断,养成严密的逻辑习惯。通常会考查诸如strcpy, strcmp, strcat之类基本函数的实现,看起来简单,但要完全写对,其实并不容易。

      有时会考查一些排序和查找之类的算法实现,或者数据结构(如链表)的基本操作。从手写程序中,能间接看出一个人的编码习惯和能力。

      这篇文章很简单,非常基础,只是对C语言笔试面试做一个基本的介绍,没有涉及到数据结构和算法,也没有涉及到实际开发中的一些经验问题,我们后面会对这些进行专门介绍。

      C语言虽然不难,但真正准备笔试面试时,建议要适当刷题,查缺补漏。

      每一次的笔试面试,都值得我们去充分准备,甚至是冗余准备。祝愿大家在笔试面试中取得好成绩,money多多。

长按或扫描二维码  可关注涛哥公众号

发布了2222 篇原创文章 · 获赞 4663 · 访问量 1995万+

猜你喜欢

转载自blog.csdn.net/stpeace/article/details/104487604