From 7fbd660ecfa4f7ec137f807475f37a246f3e1d49 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 2 Oct 2017 23:49:09 -0500 Subject: [PATCH 01/71] Flesh out glossary, add references, convert links to md, add transpilation and fp info. (#24) --- front-end/javascript.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/front-end/javascript.md b/front-end/javascript.md index 9a3bc5e7..30bd8e3f 100644 --- a/front-end/javascript.md +++ b/front-end/javascript.md @@ -12,25 +12,26 @@ WIP. ## Glossary -- **Closure** - TBD +- **Closure** - "Closure is when a function is able to remember and access its lexical scope even when that function is executing outside its lexical scope." - [YDKJS](https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch5.md) - **Event Loop** - The event loop is a single-threaded loop that monitors the call stack and checks if there is any work to be done in the message queue. If the call stack is empty and there are callback functions in the message queue, a message is dequeued and pushed onto the call stack to be executed. -- **Hoisting** - TBD -- **Promise** - TBD +- **Hoisting** - "Wherever a var appears inside a scope, that declaration is taken to belong to the entire scope and accessible everywhere throughout." - [YDKJS](https://github.com/getify/You-Dont-Know-JS/blob/master/up%20%26%20going/ch2.md#hoisting) +- **Promise** - "The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value." - [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) + - Promises can contain an immediate value. - **Prototype** - TBD -- **This** - The `this` keyword does not refer to the function in which it is used or it's scope. It refers to the object on which a function is being executed and depends entirely on the call-site of the function. +- **This** - The `this` keyword does not refer to the function in which `this` is used or that function's scope. Javascript uses [4 rules](https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch2.md#determining-this) to determine if `this` will reference an arbitrary object, *undefined* or the *global* object inside a particular function call. ## Core Language ### Variables -- https://github.com/getify/You-Dont-Know-JS/blob/master/types%20&%20grammar/README.md#you-dont-know-js-types--grammar +- Reference: [Types and Grammar](https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch1.md) - Types - Scopes -- Coercion +- [Coercion](https://github.com/getify/You-Dont-Know-JS/blob/master/up%20%26%20going/ch2.md#coercion) ### Functions -- https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/README.md#you-dont-know-js-scope--closures +- Reference: [this & Object Prototypes](https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch3.md) - Declaration vs Expression - Closures - `.call`, `.apply` and `.bind` @@ -39,7 +40,7 @@ WIP. ### Prototypes and Objects -- Reference: https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/README.md +- Reference: [this & Object Prototypes](https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/README.md#you-dont-know-js-scope--closures) - Prototype chain - `this` keyword - https://rainsoft.io/gentle-explanation-of-this-in-javascript/ @@ -50,16 +51,16 @@ WIP. ### Async -- Reference: https://github.com/getify/You-Dont-Know-JS/blob/master/async%20&%20performance/README.md#you-dont-know-js-async--performance -- `setTimeout` and `setInterval` +- Reference: [Async and Peformance](https://github.com/getify/You-Dont-Know-JS/blob/master/async%20&%20performance/README.md#you-dont-know-js-async--performance) +- `setTimeout`, `setInterval` and event loop + - [setImmediate() vs nextTick() vs setTimeout(fn,0)](http://voidcanvas.com/setimmediate-vs-nexttick-vs-settimeout/) - Event Loop - - - Debounce and Throttle - Throttling enforces a maximum number of times a function can be called over time. - Debouncing enforces that a function not be called again until a certain amount of time has passed without it being called. - https://css-tricks.com/debouncing-throttling-explained-examples/ - Callbacks -- Promises +- [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) **Reference** @@ -96,7 +97,11 @@ WIP. - First, in strict mode a short list of identifiers become reserved keywords. These words are `implements`, `interface`, `let`, `package`, `private`, `protected`, `public`, `static`, and `yield`. In strict mode, then, you can't name or use variables or arguments with these names. - Second, strict mode prohibits function statements not at the top level of a script or function. +## Transpilation: TBD + ## Useful Links - https://medium.com/javascript-scene/10-interview-questions-every-javascript-developer-should-know-6fa6bdf5ad95#.l2n8icwl4 - https://github.com/mbeaudru/modern-js-cheatsheet +- [Functional Programming in Javascript - Javascript Allonge](https://leanpub.com/javascriptallongesix/read) +- [Dr. Frisby's Mostly Adequate Guide to Functional Programming](https://drboolean.gitbooks.io/mostly-adequate-guide/content/) From 647d30d0cf774e20a80b38c5c5024d4311025315 Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Tue, 3 Oct 2017 15:24:07 +0800 Subject: [PATCH 02/71] Elaborate on the why and who --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b6057b73..8b50bb20 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,11 @@ This handbook is pretty new and help from you in contributing content would be v ## Why do I want this? -This repository has content that covers all phases of a technical interview; from applying for a job to passing the interviews to offer negotiation. Technically competent candidates might still find the non-technical content helpful as well. +This repository has *practical* content that covers all phases of a technical interview; from applying for a job to passing the interviews to offer negotiation. Technically competent candidates might still find the non-technical content helpful as well. ## Who is this for? -Anybody who wants to land a job at a tech company but is new to technical interviews, or seasoned engineers who have not been on the other side of the interviewing table in a while and wants to get back into the game. +Anybody who wants to land a job at a tech company but is new to technical interviews, seasoned engineers who have not been on the other side of the interviewing table in a while and wants to get back into the game, or anyone who wants to be better at technical interviewing. ## How is this repository different? From cbe05deb1d84154b4e73d75caf38221285609f57 Mon Sep 17 00:00:00 2001 From: Juribiyan Date: Tue, 3 Oct 2017 18:54:05 +0500 Subject: [PATCH 03/71] Fixed errors in "undefined and undeclared" section (#27) --- front-end/interview-questions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front-end/interview-questions.md b/front-end/interview-questions.md index a4b36c8c..7f2b9fa6 100644 --- a/front-end/interview-questions.md +++ b/front-end/interview-questions.md @@ -675,12 +675,12 @@ console.log(foo == null); // true. Wrong, don't use this to check! function bar() {} var baz = bar(); -console.log(baz === undefined); // undefined +console.log(baz); // undefined ``` A variable that is `null` will have been explicitly assigned to the `null` value. It represents no value and is different from `undefined` in the sense that it has been explicitly assigned. To check for `null,` simply compare using the strict equality operator. Note that like the above, you should not be using the abstract equality operator (`==`) to check, as it will also return `true` if the value is `undefined`. -``` +```js var foo = null; console.log(foo === null); // true From aabf8917705e06b78f9dd4e3bf135488de4c631c Mon Sep 17 00:00:00 2001 From: Alex Prut Date: Tue, 3 Oct 2017 18:48:31 +0200 Subject: [PATCH 04/71] Added to Front-End Interview questions: more answers to question: What kind of things must you be wary of when designing or developing for multilingual sites? (#28) --- front-end/interview-questions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/front-end/interview-questions.md b/front-end/interview-questions.md index 7f2b9fa6..fd022388 100644 --- a/front-end/interview-questions.md +++ b/front-end/interview-questions.md @@ -84,6 +84,7 @@ In the back end, the HTML markup will contain `i18n` placeholders and content fo - Be mindful of how colors are perceived - Colors are perceived differently across languages and cultures. The design should use color appropriately. - Formatting dates and currencies - Calendar dates are sometimes presented in different ways. Eg. "May 31, 2012" in the U.S. vs. "31 May 2012" in parts of Europe. - Do not concatenate translated strings - Do not do anything like `"The date today is " + date`. It will break in languages with different word order. Using template parameters instead. +- Language reading direction - In English, we read from left-to-right, top-to-bottom, in traditional Japanese, text is read up-to-down, right-to-left. ###### References From 1dfdc57084f1b6dd00a15c38deefb9d9ecf3d1be Mon Sep 17 00:00:00 2001 From: Stephen Kempin Date: Wed, 4 Oct 2017 11:02:33 +0100 Subject: [PATCH 05/71] Grammar correction (#31) Correcting full stop typo to comma. --- front-end/interview-questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/interview-questions.md b/front-end/interview-questions.md index fd022388..9a04d1f5 100644 --- a/front-end/interview-questions.md +++ b/front-end/interview-questions.md @@ -621,7 +621,7 @@ For an in-depth explanation, do check out his [article on Medium](https://codebu ### Explain how prototypal inheritance works -This is an extremely common JavaScript interview question. All JavaScript objects have a `prototype` property, that is a reference to another object. When a property is accessed on an object and if the property is not found on that object, the JavaScript engine looks at the object's `prototype`. and the `prototype`'s `prototype` and so on, until it finds the property defined on one of the `prototype`s or until it reaches the end of the prototype chain. This behaviour simulates classical inheritance, but it is really more of [delegation than inheritance](https://davidwalsh.name/javascript-objects). +This is an extremely common JavaScript interview question. All JavaScript objects have a `prototype` property, that is a reference to another object. When a property is accessed on an object and if the property is not found on that object, the JavaScript engine looks at the object's `prototype`, and the `prototype`'s `prototype` and so on, until it finds the property defined on one of the `prototype`s or until it reaches the end of the prototype chain. This behaviour simulates classical inheritance, but it is really more of [delegation than inheritance](https://davidwalsh.name/javascript-objects). ###### References From 457ea288e23af0453d7942ef4993d8e648df4047 Mon Sep 17 00:00:00 2001 From: Cameron Burwell Date: Wed, 4 Oct 2017 10:00:29 -0700 Subject: [PATCH 06/71] Added Elevator Pitch section (#30) --- non-technical/self-introduction.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/non-technical/self-introduction.md b/non-technical/self-introduction.md index 30a95e1d..510b089a 100644 --- a/non-technical/self-introduction.md +++ b/non-technical/self-introduction.md @@ -5,6 +5,23 @@ You can rephrase the question like this: "Tell me about your journey into tech. How did you get interested in coding, and why was web development a good fit for you? How is that applicable to our _____ role or company goals?" +### The Elevator Pitch + +The Elevator Pitch is an indispensable tool for you as you move forward in your career. An Elevator Pitch is just that -- you pitch yourself to an executive that you want to impress and only have a short elevator ride to do so. Whether you're at a job fair with hundreds of other candidates and you have limited time or you are simply explaining who you are to a potential connection or client, it is important to be able to clearly and accurately describe your knowledge and skillset quickly and succinctly. Here are some tips to develop a good Elevator Pitch: + +- Sell yourself + - The whole point of this is to get you a job or make a connection that benefits your career. + - Tell them who you are, who you work for (or school and major), and what you do. +- KISS (Keep It Simple, Stupid) + - Tell them some highlights from your favorite / most impressive projects. + - Do not delve into the depths of how you reverse engineered a game and decrypted a packet to predict when to use your DKP on a drop. Tell them the executive summary: "I reverse engineered X game by decrypting Y packet to predict Z." If this catches their interest, they *will* ask further questions on their own. +- Why do *they* want *you*? + - This is where you use your knowledge of the company, knowledge of their technology stack(s), your unique talent that they want, etc. in order to solidify your ability to contribute to their company. +- PRACTICE! + - Lastly, you must practice your pitch! Having a great, succinct summary of your skills only helps if you can actually deliver it rapidly! You should practice keeping a quick but easy-to-follow pace that won't overwhelm them but won't bore them. It's a precarious balance, but can be ironed out with practice. + +Having an Elevator Pitch on hand is a great way to create a network and happen upon new job opportunities. There will often be times where you can't prepare for an interview or meeting, and it is incredibly handy to have a practiced pitch. + ###### References - [8 Secrets to Software Engineer Self Introduction](http://blog.gainlo.co/index.php/2016/10/14/8-secretes-software-engineer-self-introduction) From 969538bd5ce555d11707f70c75adb3737f16eef8 Mon Sep 17 00:00:00 2001 From: Tay Yang Shun Date: Thu, 5 Oct 2017 12:59:49 +0800 Subject: [PATCH 07/71] Repository structure clean up --- README.md | 6 +++--- non-technical/{format.md => interview-formats.md} | 0 non-technical/{psychological.md => psychological-tricks.md} | 0 non-technical/self-introduction.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename non-technical/{format.md => interview-formats.md} (100%) rename non-technical/{psychological.md => psychological-tricks.md} (100%) diff --git a/README.md b/README.md index 8b50bb20..97982d0b 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Carefully curated content to help you ace your next technical interview, with a - [How to prepare](preparing) for coding interviews - [Algorithm tips and the best practice questions](algorithms) categorized by topic - ["Front-end Job Interview Questions" answers](front-end/interview-questions.md) -- [Interview formats](non-technical/format.md) of the top tech companies +- [Interview formats](non-technical/interview-formats.md) of the top tech companies - [Behavioral questions](non-technical/behavioral.md) categorized by companies - [Good questions to ask your interviewers](non-technical/questions-to-ask.md) at the end of the interviews @@ -47,8 +47,8 @@ Also, existing resources focus mainly on algorithm questions, and lack in covera - [Front-end Job Interview Questions and Answers](front-end/interview-questions.md) 🔥⭐ - **[Non-Technical Tips](non-technical)** - Random non-technical tips that cover behavioral and psychological aspects, interview formats and "Do you have any questions for me?" - [Behavioral Questions](non-technical/behavioral.md) - - [Interview Formats](non-technical/format.md) - - [Psychological Tricks](non-technical/psychological.md) + - [Interview Formats](non-technical/interview-formats.md) + - [Psychological Tricks](non-technical/psychological-tricks.md) - [Questions to Ask](non-technical/questions-to-ask.md) - [Negotiation Tips](non-technical/negotiation.md) - **[Utilities](utilities)** - Snippets of algorithms/code that will help in coding questions. diff --git a/non-technical/format.md b/non-technical/interview-formats.md similarity index 100% rename from non-technical/format.md rename to non-technical/interview-formats.md diff --git a/non-technical/psychological.md b/non-technical/psychological-tricks.md similarity index 100% rename from non-technical/psychological.md rename to non-technical/psychological-tricks.md diff --git a/non-technical/self-introduction.md b/non-technical/self-introduction.md index 510b089a..6f78a8fc 100644 --- a/non-technical/self-introduction.md +++ b/non-technical/self-introduction.md @@ -14,12 +14,12 @@ The Elevator Pitch is an indispensable tool for you as you move forward in your - Tell them who you are, who you work for (or school and major), and what you do. - KISS (Keep It Simple, Stupid) - Tell them some highlights from your favorite / most impressive projects. - - Do not delve into the depths of how you reverse engineered a game and decrypted a packet to predict when to use your DKP on a drop. Tell them the executive summary: "I reverse engineered X game by decrypting Y packet to predict Z." If this catches their interest, they *will* ask further questions on their own. + - Do not delve into the depths of how you reverse engineered a game and decrypted a packet to predict when to use your DKP on a drop. Tell them the executive summary: "I reverse engineered X game by decrypting Y packet to predict Z." If this catches their interest, they *will* ask further questions on their own. - Why do *they* want *you*? - This is where you use your knowledge of the company, knowledge of their technology stack(s), your unique talent that they want, etc. in order to solidify your ability to contribute to their company. - PRACTICE! - Lastly, you must practice your pitch! Having a great, succinct summary of your skills only helps if you can actually deliver it rapidly! You should practice keeping a quick but easy-to-follow pace that won't overwhelm them but won't bore them. It's a precarious balance, but can be ironed out with practice. - + Having an Elevator Pitch on hand is a great way to create a network and happen upon new job opportunities. There will often be times where you can't prepare for an interview or meeting, and it is incredibly handy to have a practiced pitch. ###### References From 621472ecb6bb929372683190bf4a79cfb3b3139b Mon Sep 17 00:00:00 2001 From: Tay Yang Shun Date: Thu, 5 Oct 2017 13:43:45 +0800 Subject: [PATCH 08/71] Fix typo in HTML Interview Questions --- front-end/interview-questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-end/interview-questions.md b/front-end/interview-questions.md index 9a04d1f5..40851c15 100644 --- a/front-end/interview-questions.md +++ b/front-end/interview-questions.md @@ -154,7 +154,7 @@ Note: The `async` and `defer` attrib­utes are ignored for scripts that have no Putting ``s in the head is part of the specification. Besides that, placing at the top allows the page to render progressively which improves user experience. The problem with putting stylesheets near the bottom of the document is that it prohibits progressive rendering in many browsers, including Internet Explorer. Some browsers block rendering to avoid having to repaint elements of the page if their styles change. The user is stuck viewing a blank white page. It prevents the flash of unstyled contents. -**Placing ``s just before ``** +**Placing ``s just before ``** `