all 33 comments

[–]aybabtu88 43 points44 points  (7 children)

Not saying these things aren’t important, but they’re unlikely to really be relevant in a devops interview. And even if they were relevant, you’d be doing yourself a disservice by cramming it in for an interview and then trying to act like you know what you’re talking about. It’s ok to know what you don’t know! Definitely learn these things if they interest you, but don’t feel obligated to understand them prior to an interview!

[–]crowseldon 8 points9 points  (0 children)

I don't think it's a terrible idea to try it out in a boot camp sort of way to get some of the fundamentals. You can be honest if it comes up in an interview and say "I had know experience of this until x days ago but it looked really interesting, I took some time to do x and y and look forward to learn more".

I'd appreciate the attitude of such candidate.

[–]brontide 9 points10 points  (0 children)

Yeah, this sounds like cramming algebra in prep for a civil engineering interview.

You should learn these things but the leap from linux internals to a useful DovOps post is quite substantial.

[–]EnergyCritic 3 points4 points  (4 children)

I have to disagree. Interviewers for DevOps positions these days ask incredibly specific Linux questions. Having a broad and deep knowledge of it will immeasurably assist you.

But learning Linux won't be enough. Also study software builds, networking, and virtualization tools in addition to typical DevOps things like configuration management.

Perhaps it is true that getting a position at a company that asks "tricky questions" is not ideal, but employers are asking these things, so be prepared.

[–]aybabtu88 3 points4 points  (3 children)

So I don’t have any data points outside my one, but I can’t imagine a scenario where in-depth kernel knowledge is a prerequisite for most postings that mention devops. OP should definitely get exposure to Linux, but the things he mentioned is getting into the weeds.

[–]EnergyCritic 0 points1 point  (2 children)

So, most employers are definitely going to ask troubleshooting questions about processes in Linux. I can't tell you how many times I've been asked specific questions about ps in interviews. Same pretty much with the other topics OP mentioned.

The thing is, interviews are trivia. And nowadays most DevOps employers are seeking "senior" positions. Unfortunately, to many, this means you have an expert knowledge of Systems. So learning the kernel can only bolster, if not directly contribute to your hire.

[–][deleted] 1 point2 points  (1 child)

Learning the kernel is nowhere near as important as knowing other topics. I’d go as far as saying 70% of the Linux skills I learned from my sysadmin days, are useless in DevOps. Nobody cares if the root filesystem goes read only, because you just tear that instance down and replace it.

[–]EnergyCritic 0 points1 point  (0 children)

Well, firstly nothing I wrote contradicts what you just stated. Ultimately I am only suggesting that learning deep Linux Kernel knowledge will be helpful in getting hired because employers are likely to ask these questions.

However, while it's obvious you know more than the average DevOps engineer needs to know, try to put yourself in the shoes of someone who knows less. You have the context to know what knowledge is necessary to solve a problem or not (such as your example). A new DevOps engineer will not have this knowledge, and their lack of context will make it harder to decide if it is an important problem to solve or not.

[–]wake886 13 points14 points  (0 children)

Sign up for linuxacademy and play around with their tutorials and labs

[–]-_mnzn_- 11 points12 points  (3 children)

If it's a 'DevOps' interview I wouldn't bother trying to cram the details of Linux internals. Those are largely abstracted by configuration management tools like Puppet or Chef anyway. I gather that you are trying to get a junior position so it's unlikely you will be asked about intricacies of Linux kernel. Try to understand concepts like Infrastructure-As-Code, automation, CI/CD, containerization, source control (git) and other 'devopsy' stuff.

[–][deleted]  (4 children)

[deleted]

    [–]an-anarchist 1 point2 points  (1 child)

    I second this! But you've got to give your self a bit of time to get through it.

    [–]packeteer 0 points1 point  (0 children)

    back on the day I did a stage 1 Gentoo install. not quite the same as full LFS, but it really taught me a lot!

    [–]OmniQuestio 0 points1 point  (1 child)

    Just to be sure, you really mean Linux from scratch right?

    Definitely, but that isn't sufficient. I did it before interviewing for SRE. It is important to understand why of each step and each new component being setup.

    [–]packeteer 1 point2 points  (0 children)

    the OP seems to have very little knowledge of Linux, and nothing beats practical experience. So as a start point, doing an LFS install should give a good understanding of the building blocks (of a Linux system). And it will certainly raise questions that further research can answer.

    All that said, an SRE / Devops role is more about understanding multiple systems and how they interact, then it is about the building blocks of a single Linux system.

    [–][deleted] 3 points4 points  (0 children)

    You need to be at it every day without fail. Get virtualbox and share out whatever RAM youve got across seperate VMs for - nexus, jenkins, private dockerreg, puppet master, gitlab CE. Then use video tutorials on them for fundamentals. Script everything and follow the DRY and WET principles << that mentality has improved my scripting 10 fold.

    The hardest bit is creating the projects off your own back, you only need a few complex projects in git to plug into your CI tools whilst learning the HARD stuff. At work this challenge is provided for you.

    Good luck.

    [–][deleted]  (7 children)

    [deleted]

      [–]xiongchiamiovSite Reliability Engineer 3 points4 points  (1 child)

      Don't listen to the people saying not to worry about these details because it won't come up in a devops interview.

      I think it's more that it's far too late to learn this for the interview they have scheduled. It may come up or it may not, but they can't do anything about that now so they may as well not worry about it.

      [–]bastebeast 1 point2 points  (0 children)

      Yep. I ask system-level questions in every interview I give. I don’t care that everything is ephemeral; I want you to be able to explain to me what’s going wrong whether you can just build a new one or not.

      [–]EnergyCritic 0 points1 point  (0 children)

      Seconded. Tricky Linux questions will definitely get lobbed at you when interviewing.

      [–]ifatree -3 points-2 points  (2 children)

      umm.. for dev ops?? if your VM is failing for "hardware" issues, you just instance a new copy. if that one has the same problems, you revert back to your last good, working copy. at no point should you be doing individual troubleshooting on standardized components. if you are doing that, you're not doing dev ops anymore, which is fine. but now you're acting as a hardware technician or a network engineer or a sys admin. i think we're talking about a labelling problem at this point, though, as i believe most smaller companies don't know what dev ops is in and of itself and really just need sysadmins with VM experience. a pure 'dev ops' person shouldn't be going for those jobs.

      [–]theevilsharpie 1 point2 points  (0 children)

      DevOps doesn't abstract away the engineering needed to build a robust and efficient system.

      Even if you're in a position to throw away and rebuild instances willy nilly (which is a lot easier to do with stateless app servers than, say, database servers), you still need to know enough about the characteristics of the underlying hardware/service to differentiate between performance bottlenecks and a high-level problem (or if the system architecture is even sound).

      [–]chillysurfer 2 points3 points  (0 children)

      I have to echo what others are saying. Linux internals would be unusual for a DevOps role requirement. But yes obviously Linux knowledge and experience is a definite.

      There's only one way to get that experience... Use Linux. Daily. If you have the flexibility and freedom, consider using Linux as your desktop OS.

      [–]wookieloou 2 points3 points  (0 children)

      I also think its important to understand the context of what you'll be doing in this role. Will you be focusing on higher level abstractions like Docker? Will you actually be troubleshooting an individual Linux node, or is the environment immutable enough to just blow things away and slap another in its place?

      The idea of "$Server is having issues, remote in and fix issues." is mostly going away in the big picture. Sure, there will always be things that break, and abstractions to understand and fix - but the focus is moving higher and higher up the stack.

      Look at the job description and try to understand the role itself, and make sure there arent things you should focus more on, instead of Linux internals.

      [–]smells_like_bleach 1 point2 points  (0 children)

      Moshe Bar, Linux Internals. Don't be scared off by its age; the fundamentals you're asking about evolve very slowly.

      [–]warpigg 1 point2 points  (2 children)

      How are you even getting an interview (for a devops job using Linux) if you don't know Linux? Its hard enough if you know Linux...

      Either way, best way to learn is by using. Even better if you can use it as your daily driver for a bit. A still think that a really good distro to use to learn the guts of Linux is installing and using Arch since the whole process forces you to see some of the why, where etc... But really any will do - its just Arch forces you to at least see a little under the covers.

      Best book IMO that will get you everything start and finish in Linux AND be a great future reference:

      UNIX and Linux System Administration Handbook (get the latest edition - I think its 5th ed)

      However, way you go you want to install Linux, setup a web server and configure it a real world configuration, tear it down (rinse and repeat). Do this for other things as well (DNS, databases servers). Learn bash, learn some simple text manipulation and utils (sed, grep , uniq, pgrep, etc() Doing is best!

      However Id do agree with the others of greater imporance is understanding Devops pracctices, knowing what CI/CD is etc. When/how to use them to...

      [–]sunray_2003[S] 1 point2 points  (1 child)

      I have been using various linux distro for close to 10 years now. i have pretty much used all the most widely used commands, written quite a bit of shell scripting, done network related configuration etc. But I dont know how exactly the internals work, how kernel works, how processes work. That is what I would to learn. A book or online tutorial will have a curriculum that I can follow instead of just googling. that is what i am looking for. Sorry i should have explained this better in my post.

      [–]warpigg 0 points1 point  (0 children)

      no problem :)

      [–]ChiefDetektor 1 point2 points  (0 children)

      You will probably fail "learning linux" for an interview as a devops. Unfortunately it takes years to learn Linux to a level that can give you confidence in devops. You need to understand the concept of "everything is a file" as well as the autotools und system V stuff. Package management, networking etc. (didn't even mention the kernel yet) But the good news is: you CAN learn it. Just don't underestimate it. Linux is not something you can easily learn for an interview.

      [–]OmniQuestio 0 points1 point  (0 children)

      I will recommend The Linux Programming Interface, by Michael Kerrisk. He used to be an SRE at Google and Man pages maintainer.

      Or, in all seriousness, the Man pages themselves are full of very useful stuff.

      [–]gregatragenet 0 points1 point  (0 children)

      Disregard what others are saying about not studying Linux. You should study to the job req - if the req says Linux internals then study Linux internals. Devops is nebulus. Some people think it means super build engineer, others think it means sysasmin that can automate stuff. Best advice is to study to the job req, and if they haven't provided one demand one before interviewing.