{"id":11,"date":"2017-05-06T12:00:07","date_gmt":"2017-05-06T19:00:07","guid":{"rendered":"https:\/\/www.zenterview.com\/blog\/?p=11"},"modified":"2017-08-14T22:36:18","modified_gmt":"2017-08-15T05:36:18","slug":"engineering-interview-process-and-resources","status":"publish","type":"post","link":"https:\/\/www.zenterview.com\/blog\/engineering-interview-process-and-resources\/","title":{"rendered":"Engineering Interview Process and Resources"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Guide to landing a new job as a junior, mid or senior IC position in front-end, backend, full-stack roles as an engineer or developer in a technology company.<\/span><\/p>\n<h2><b>Step 1 &#8211; Preparation<\/b><\/h2>\n<p><em>Coding Practice<\/em><span style=\"font-weight: 400;\"> &#8211; coding interviews need coding practice. Pick up one programming language \u00a0you are most comfortable with and solve 30-40 coding\/algorithm questions (mix of easy, medium, hard) &#8211; so that you are able to solve coding\/algorithm problems reasonably quickly, understand big-O analysis, optimizations and apply the principles to similar types of problems. Resources: <\/span><span style=\"font-weight: 400;\"><a href=\"https:\/\/leetcode.com\/\">Leetcode.com<\/a>, <a href=\"http:\/\/www.geeksforgeeks.org\/\">GeeksForGreeks<\/a><\/span><\/p>\n<p><em>Shortlist Companies<\/em><b> &#8211;<\/b><span style=\"font-weight: 400;\"> create a list of companies you want to work for. Classify them in three groups: (A) you will be excited to join any company in this list (B) this is your fallback list of companies you&#8217;d be okay to work at but you would go to work at an (A) companies if you ever get an opportunity (Z) companies you don&#8217;t want to work for but may be great for loop practice and as a stepping stone opportunity if nothing works out (your current job is in this list too). Use a simple tool such as a <\/span><a href=\"https:\/\/sheets.google.com\/\"><span style=\"font-weight: 400;\">Google Sheet<\/span><\/a><span style=\"font-weight: 400;\"> to organize this step. Put name of the company &#8211; date you applied and track followups. \u00a0Resources: <\/span><a href=\"https:\/\/news.ycombinator.com\/\"><span style=\"font-weight: 400;\">Hacker News<\/span><\/a><span style=\"font-weight: 400;\"> (monthly thread on &#8216;who is hiring&#8217;), <\/span><a href=\"https:\/\/breakoutlist.com\/\"><span style=\"font-weight: 400;\">breakout list<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><em>Profile Update and Review<\/em><span style=\"font-weight: 400;\"> &#8211; Update your LinkedIn profile. Update your resume: add your github profile and add concrete results (with numbers\/percentages, if applicable) of what you accomplished by yourself and through your team. Be truthful, but be expressive and impressive. If you add links to documents, projects or demos, make sure they are functional. When you feel you are ready with your best work, have a few people critically review your resume &#8211; use a real-time collaboration tool like <\/span><a href=\"https:\/\/docs.google.com\/\"><span style=\"font-weight: 400;\">Google Docs<\/span><\/a><span style=\"font-weight: 400;\"> and ask reviewers to leave comments.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">There is no finishing Step 1. Each of these three things will continue to evolve as you move through rest of steps. Feel free to evolve your shortlist of companies, tweak your resume and practice more questions through rest of steps.<\/span><\/p>\n<h2><b>Step 2 &#8211; Apply<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Startups (and public companies) &#8211; Check out <\/span><a href=\"https:\/\/alist.co\/candidates\"><span style=\"font-weight: 400;\">AList<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/triplebyte.com\/\"><span style=\"font-weight: 400;\">Triplebyte<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/hired.com\/x\/YFB2K8\"><span style=\"font-weight: 400;\">Hired<\/span><\/a><span style=\"font-weight: 400;\"> &#8211; take time to make an impressive profile.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Public companies &#8211; apply directly through their websites. If it is an (A) list company, take the time to write a personalized cover letter (even if optional).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It is highly recommended you get your resume forwarded through someone you know at the company; this fast-tracks your application.<\/span><\/p>\n<h2><strong>Step 3 &#8211; Intro call<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">If you go through A-List or Hired &#8211; you may directly speak to a hiring manager as the first call but in most other cases it will be a recruiter. This is simply an intro call. The recruiter will speak to you to assess: 1) your basic communication skills 2) what team you may be a good fit for 3) any visa requirements or special situations 4) salary expectation. They will give you background on the company and the opportunity. At the end of call, they will have concrete next steps which most likely would be to schedule the tech screen. You should have a few dates and times in mind but if you need to figure it out, you can always get back through email.<\/span><\/p>\n<h2><b>Step 4 &#8211; Technical Screen(s)<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">This is a test to check to your coding and problem solving skills. Different companies have different bar for this test but expect to solve a coding\/algorithm problem on a code sharing live environment, produce running code and run against some test cases by the interviewer. It helps to get familiar with an online coding environment. It is important to ask clarification questions and discuss edge case conditions. When you\u2019re done with coding the solution make sure to review it\u00a0and test it against few edge cases before declaring your code is ready. <\/span><span style=\"font-weight: 400;\">This step is usually binary &#8211; you go on if you do good &#8211; you\u2019re out if you do bad here. The core reason for this is companies with healthy candidate flow can live with false negatives. Borderline is usually \u2018no\u2019, in many cases there will be a second screen. Resources: <a href=\"https:\/\/stackoverflow.blog\/2017\/04\/27\/how-to-talk-about-yourself-in-an-interview\/\">How to talk about yourself in an interview<\/a><\/span><\/p>\n<h2><b>Step 5 &#8211; Onsite Loop<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Onsite loops vary a lot. Expect a full day of coding, systems design, culture-fit, behavior questions etc. For junior and mid-level engineers, the interview is more focused on coding and algorithms. For senior engineers, system design may carry more weight than the coding interview.<\/span><\/p>\n<p>Small companies and startups prefer that you bring your own laptop to the interview with your coding environment already set up and will give you a coding problem and after you discuss your approach and the pros\/cons they would like you to code it up. The expectation is that you&#8217;ll write a runnable and working code. Many companies will expect you to write extremely clean and modular code with edge cases validation. The intention is judge how good a code you&#8217;ll write if you joined the team the next day as there isn&#8217;t ample time for ramp up in startups. Bigger companies are also adapting bring your laptop but a large number of them still rely on whiteboard coding which can be quite intimidating if you don&#8217;t practice it a bit in advance.<\/p>\n<p>The key is to communicate with the interviewer and clarify the problem as much as you can before you start to solve it and make sure you agree on the general approach before you start to coding anything. If you are looking to write pseudo code first to writing a working algorithm, make sure to communicate it to the interviewer. If you&#8217;re going to handle the edge cases in the end, make sure you communicate to the interviewer.<\/p>\n<p>System design interviews are open-ended and will require you to clarify the requirements thoroughly before you can design a system. Imagine that you&#8217;re in a hackathon and you have 45-minutes to 1 hour to come up with a design of something the company may eventually ship. Read <a href=\"https:\/\/www.hiredintech.com\/courses\/system-design\">this guide<\/a>\u00a0and check out\u00a0<a href=\"https:\/\/github.com\/donnemartin\/system-design-primer\">system design primer<\/a>.<\/p>\n<p>Culture interviews are mainly designed to validate your working style with the values of the company. Expect to answer what you learned from past experiences, why you left your previous positions, why do you want to work for this company etc. Read <a href=\"https:\/\/resources.workable.com\/cultural-fit-interview-questions\">this<\/a>\u00a0and <a href=\"https:\/\/www.thebalance.com\/cultural-fit-interview-questions-1918498\">this<\/a>.<\/p>\n<p>If you did everything right but did not get an offer, don&#8217;t worry and move on. If you can get the recruiter on the call, you may be able to get some feedback which could be useful for your next onsite.<\/p>\n<h2><b>Step 6 &#8211; Negotiate and Accept<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">You can always negotiate an offer. The easiest way to negotiate a better offer is to have competing offers from similar companies or competitors. You can negotiate your joining bonus, relocation, salary, equity and pretty much everything else. It is important to understand that this is your chance to ask for what you want and will make you comfortable.\u00a0Resources: <a href=\"https:\/\/github.com\/jlevy\/og-equity-compensation\">Guide to equity compensation<\/a>\u00a0<\/span><\/p>\n<h2><b>Step 7 &#8211; Make the best out of this opportunity &#8211; kick butt!<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Now that you have decided to take this opportunity, give it your all! Don\u2019t hold back. Learn, grow and enjoy!<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If this guide helped you or if you have any comments or suggestions, please let us know at <\/span><a href=\"mailto:hello@zenterview.com\"><span style=\"font-weight: 400;\">hello@zenterview.com<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guide to landing a new job as a junior, mid or senior IC position in front-end, backend, full-stack roles as an engineer or developer in a technology company. Step 1 &#8211; Preparation Coding Practice &#8211; coding interviews need coding practice. Pick up one programming language \u00a0you are most comfortable with and solve 30-40 coding\/algorithm questions [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":8,"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":21,"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/posts\/11\/revisions\/21"}],"wp:attachment":[{"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zenterview.com\/blog\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}