17.12.2017 at 12:00 am

To Know C

Those who know C, and those who actually don't.

... You'd be surprised at how people simply don't understand or know the basics of the language. We rather focus on how well the candidate knows the basics. Pointers are key and you should know how to use them like the back of your hand. Being able to use C data structures like structs, enums, etc. are also vital. Being able to manipulate data at both the byte level and the bit level (do you understand bit masking, bitwise logic, etc.).

When we conduct interviews, we don't focus on the algorithms or data structures that you see in higher level languages because that gets rather difficult in a language like C. We will ask things like do you know how to reverse an array or find content in strings as these require you to fundamentally understand memory, pointers, etc. and they aren't necessarily difficult algorithms. We do ask questions that try to see how well someone knows some of the tricks that you see in C, like doing multiplication/division by 2 using bit shifting, checking if a number of even or odd by bit checking instead of using modulo, etc.

Beyond the language itself, you also have to have a good understanding of how the code interacts with the OS. A big one is do you understand stack vs. heap? We may ask how you would write a function that returns an array (many candidates will try to create an array on the stack in the function which obviously doesn't work vs. using the heap or creating it on the stack in the calling function). Do you understand the basics of how functions are called and the implications of that (i.e. buffer overflows leading to security vulnerabilities)? A lot of OS basics are important to us, like understanding paging and the memory hierarchy. ...

Basically, and I think you can tell, is that we want our C developers to be more than someone who can write a C program and compile it. We want someone who understands what every line of code in the program is doing and how that program interacts with the OS and the hardware. This takes a lot of knowledge and is a lot different than higher level programming languages where such information isn’t as important as knowing how to apply the tools of the language. [...]

- Reddit

Filed under:
Words: 402 words approx.
Time to read: 1.61 mins (at 250 wpm)
, , , , , , , , ,

Other suggested posts

  1. 29.03.2023 at 10:57 am / Moving Away from Todoist - to Taskwarrior, SSH & Dropbox - Part 2
  2. 02.07.2021 at 09:51 am / The Problem With New Tools
  3. 03.01.2020 at 10:46 am / Git for Legal Practice
  4. 23.08.2018 at 09:53 am / Nostalgic Non-Memories
  5. 12.07.2016 at 12:00 am / Refunctin' Blocks
  6. 11.08.2015 at 12:00 am / Proper Denials and Bare Denials
  7. 05.07.2014 at 12:00 am / Jack Hamm on (Artistic) Practice
  8. 08.12.2013 at 12:00 am / Alien Blue Entrances
  9. 16.08.2010 at 12:00 am / You Have Reason
  10. 14.08.2010 at 12:00 am / 豹変
© Wan Zafran. See disclaimer.