├── .gitignore ├── 404.html ├── CNAME ├── LICENSE ├── README.md ├── docs ├── PULL_REQUEST_TEMPLATE.md ├── code_of_conduct.md ├── contributing.md └── issue_template.md ├── favicon.ico ├── images ├── angular2.png ├── approachable-open-source-logo.png ├── command-line │ ├── branch-command.png │ ├── clone-commmand.png │ ├── commit-command.png │ ├── pop-command.png │ ├── push-command.png │ ├── stash-command.png │ └── status-command.png ├── compare-and-pr.png ├── copy-clone-url.png ├── directory-views-annotation.png ├── directory-views.png ├── editor-atom │ ├── add-new-file.png │ ├── add-project.png │ ├── add-question-to-list.png │ ├── expand-tree-view.png │ ├── finished-question.png │ ├── name-new-file.png │ └── select-project-folder.png ├── editor-vs-code │ ├── add-new-file.png │ ├── add-question-to-list.png │ ├── expand-view-explorer.png │ ├── file-add-folder.png │ ├── name-new-file.png │ ├── source-control.png │ └── welcome-add.png ├── es6.png ├── fork-loading.png ├── fork-repo.png ├── icons │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ └── safari-pinned-tab.svg ├── open-a-pr-options.png ├── open-a-pr.png ├── post-fork.png ├── post-pr-creation.png ├── sad_face.png ├── unused-so-far │ ├── Screen Shot 2017-10-13 at 9.06.28 PM.png │ ├── Screen Shot 2017-10-13 at 9.08.14 PM.png │ ├── Screen Shot 2017-10-13 at 9.08.30 PM.png │ ├── Screen Shot 2017-10-13 at 9.08.50 PM.png │ ├── Screen Shot 2017-10-13 at 9.09.19 PM.png │ ├── Screen Shot 2017-10-13 at 9.09.34 PM.png │ ├── Screen Shot 2017-10-13 at 9.09.39 PM.png │ ├── Screen Shot 2017-10-13 at 9.09.46 PM.png │ ├── Screen Shot 2017-10-13 at 9.10.16 PM.png │ ├── Screen Shot 2017-10-13 at 9.10.58 PM.png │ ├── Screen Shot 2017-10-13 at 9.11.15 PM.png │ ├── Screen Shot 2017-10-13 at 9.11.32 PM.png │ ├── Screen Shot 2017-10-13 at 9.12.18 PM.png │ ├── Screen Shot 2017-10-13 at 9.13.45 PM.png │ ├── Screen Shot 2017-10-13 at 9.14.35 PM.png │ ├── Screen Shot 2017-10-13 at 9.16.14 PM.png │ ├── Screen Shot 2017-10-13 at 9.16.32 PM.png │ ├── Screen Shot 2017-10-13 at 9.16.41 PM.png │ ├── noun_14432.png │ └── noun_14432.svg └── whiteboard-answers │ ├── table-layout.png │ └── takeout-object-model.jpg ├── index.html ├── sitemap.xml ├── styles.css ├── supplemental-documentation ├── dependencies.md ├── text-editor-explanation.md ├── using-atom.md └── using-vs-code.md └── views ├── contribute.html ├── questions ├── technical │ ├── Agile.html │ ├── Index_At_Array.html │ ├── OOPS.html │ ├── System_out_println.html │ ├── algorithms.html │ ├── angular2-questions.html │ ├── angularjs.html │ ├── anonymous-functions.html │ ├── async-programming.html │ ├── cdn.html │ ├── class-vs-object.html │ ├── closure.html │ ├── compiled-vs-interpreted.html │ ├── data-science.html │ ├── data-scientist.png │ ├── encapsulation.html │ ├── es6.html │ ├── functional-components.html │ ├── html5.html │ ├── importance-of-css.html │ ├── inheritance.html │ ├── java-annotations.html │ ├── java-collections.html │ ├── js-variables.html │ ├── linkedLists.html │ ├── page_load.html │ ├── polymorphism.html │ ├── recursion.html │ ├── regular-expressions.html │ ├── sdlc.html │ ├── unshift.html │ ├── what-are-crud-operations.html │ ├── what-are-primitive-datatypes.html │ ├── what-are-the-components-of-a-css-style.html │ ├── what-is-DOM.html │ ├── what-is-a-cdn.html │ ├── what-is-agile-software-development.html │ ├── what-is-an-api.html │ ├── what-is-cdn.html │ ├── what-is-flexbox.html │ ├── what-is-the-difference-and-similarity-between-agile-and-scrum.html │ └── when-to-use-using.html └── whiteboard │ ├── breadth-first-search.html │ ├── concatenate.html │ ├── find-duplicates-from-multiple-arrays.html │ ├── fizz-buzz.html │ ├── maxNumberArray.html │ ├── number-swap-no-temp.html │ ├── palindrome.html │ ├── rhyme-time.html │ ├── sql-joins.html │ ├── sum-strings.html │ └── takeout-object-model.html ├── technical.html └── whiteboard.html /.gitignore: -------------------------------------------------------------------------------- 1 | ##Folders 2 | .idea 3 | node_modules 4 | 5 | ##Files 6 | *.iml 7 | .DS_Store 8 | .vs -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 404 - Page NOT Found 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 |

404

17 | 18 |

Oops!! Page not found.

19 |
We're sorry, the page you're looking for doesn't seem to exist...
20 | 21 |

You probably want to go back to the homepage

22 | 23 |

24 | Approachable IO is an organization committed to creating projects that allow developers of all experience levels to contribute to the project. 25 | For more information about our goals and projects, click here. 26 |

27 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | interview.approachable.io -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Approachable Open Source 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 8 | ### Please check if this PR fulfills these 9 | - [ ] The commit message is descriptive of changes 10 | - [ ] You have tried at least one local test (this includes viewing the changes on your local fork) 11 | - [x] Docs have been added / updated as needed (for bug fixes / features) 12 | 13 | ### What kind of change does this PR introduce? 14 | 15 | - [ ] Typo / Doc Update 16 | - [ ] Bug Fix 17 | - [x] Feature / New Item 18 | 19 | ### What is the new behavior (if this is a feature change)? 20 | 21 | - [ ] Added Interview Technical Question 22 | - [ ] Added Interview Whiteboard Question 23 | - [ ] Corrected existing items 24 | - [ ] Other 25 | 26 | ### Adding new question ? Please check if this PR fulfills these 27 | 28 | - [ ] `` tag has been updated 29 | - [ ] `<h1>` tag has been updated 30 | - [ ] new file is `kabob-case-like-this.html` 31 | - [ ] link to question has been added in `technical.html` or `whiteboard.html` 32 | 33 | ### Other information: 34 | <!-- Any notes or other thoughts you believe will be helpful in understanding the included changes--> 35 | -------------------------------------------------------------------------------- /docs/code_of_conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at <conduct@approachable.io>. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | -------------------------------------------------------------------------------- /docs/contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing to Approachable IO 2 | 3 | First off, thank you for considering contributing to our projects. If this is one of your first contributions, welcome to the open source community! 4 | 5 | ## What is an Approachable Open Source Project 6 | ### An Approachable Open Source project will: 7 | 8 | - allow those who are interested and committed, regardless of skill level, contribute to the project. 9 | - have at least one approachable issue that can be worked on without end and a guide for how to work on the issue so that a newcomer can always feel comfortable making their first pull request. We call this the `Infinitely Approachable Issue`. An excellent example of this can be found in the [getting-started](https://github.com/approachable-io/getting-started#getting-started) repository. 10 | 11 | Every project has tradeoffs, and that is OK as long as we're on the same page. An Approachable Open Source project will often: 12 | 13 | - sacrifice development speed, performance, and productivity every time if it makes the code easier for those with less technical expertise to participate in the project. 14 | - Write Everything Twice `WET` instead of following the coding standard of Don't Repeat Yourself `DRY`. 15 | Of course, `DRY` code written at a fast pace is still preferable to `WET` code written at a slow pace, but not at the cost of making a project less approachable. 16 | 17 | The bottom line is simple: If you would like to add to our project, please do! Don't be afraid to get a little `WET`! 18 | 19 | ## Code of Conduct 20 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 21 | 22 | Please be mindful that contributions to our projects come from people with varying levels of skill. 23 | 24 | [...See More](../code_of_conduct.md) 25 | 26 | ## How can I contribute 27 | The goal of Approachable IO is to create projects that allow developers of all experience levels to contribute to the project. Contributing to open source projects can be an intimidating endeavor, and Approachable IO is aiming to lower the complexity for those who wish to contribute to open source projects. 28 | 29 | Some quick examples: 30 | - Typos and Document updates 31 | - Following Tutorials on projects to help get your first Pull Requests in 32 | - Proposing new projects or features 33 | 34 | ## Your First Contribution 35 | 36 | Unsure where to begin contributing to Approachable IO? You can try out our [getting-started](https://github.com/approachable-io/getting-started#getting-started) project to go from no account to your first pull request. 37 | 38 | You can also take a look at our [issues](https://github.com/approachable-io/software-interview-prep) for either of the following labels to find a good start. 39 | 40 | - `good first issue` labels are great for first time contributions with little to no code knowledge necessary 41 | - `help wanted issues` labels are good for collaborative talk on implementation or possible guidance needed 42 | 43 | ## Submitting an Issue 44 | 45 | If you find a typo, broken link, or simply want to suggest a feature, you can use GitHub's Issues. For help submitting an issue you can view GitHub's [quick article](https://help.github.com/articles/creating-an-issue/) on creating an issue. 46 | 47 | ## What to include in issues 48 | We have created an [issue template](../docs/issue_template.md) that should guide you with a few quick questions to start the issue. You can add more or less information as long as you feel it covers the topic you are reporting. 49 | 50 | ## What to include in pull requests 51 | Like our issue template, we have a [pull request template](../docs/pull_request_template.md) to help make sure each pull request is descriptive of the changes being made. This is not a required document to fill out. Instead the template is to help remind contributors to describe all changes made to help reviewers make quick merges of each pull request. 52 | -------------------------------------------------------------------------------- /docs/issue_template.md: -------------------------------------------------------------------------------- 1 | <!-- 2 | Please use the below as a GUIDE not a Requirement. 3 | The more details we have the better the discussion will be 4 | --> 5 | ### ISSUE TYPE 6 | * [ ] Typo <!-- Document Correction Needed --> 7 | * [ ] Bug <!-- Functionality broken --> 8 | * [ ] Feature <!-- Suggestion for new functionality --> 9 | 10 | ### WHERE / WHAT 11 | <!-- Where is the issue? If possible indicate the name of all files affected --> 12 | 13 | ### EXPECTED BEHAVIOR 14 | <!-- FOR TYPO: Proposed Corrections for grammar review --> 15 | <!-- FOR BUGS: Provide any details to the behavior expected --> 16 | <!-- FOR FEAT: Provided details on how the feature should work and the benefits of adding the feature in --> 17 | 18 | ### REPRODUCTION STEPS 19 | <!-- FOR TYPO: Provide file name and section of typo / document correction --> 20 | <!-- FOR BUGS: Provide any steps required to reproduce the issue and screenshots when possible --> 21 | <!-- FOR FEAT: Suggested steps / flow to get desired affect --> 22 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/favicon.ico -------------------------------------------------------------------------------- /images/angular2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/angular2.png -------------------------------------------------------------------------------- /images/approachable-open-source-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/approachable-open-source-logo.png -------------------------------------------------------------------------------- /images/command-line/branch-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/command-line/branch-command.png -------------------------------------------------------------------------------- /images/command-line/clone-commmand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/command-line/clone-commmand.png -------------------------------------------------------------------------------- /images/command-line/commit-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/command-line/commit-command.png -------------------------------------------------------------------------------- /images/command-line/pop-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/command-line/pop-command.png -------------------------------------------------------------------------------- /images/command-line/push-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/command-line/push-command.png -------------------------------------------------------------------------------- /images/command-line/stash-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/command-line/stash-command.png -------------------------------------------------------------------------------- /images/command-line/status-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/command-line/status-command.png -------------------------------------------------------------------------------- /images/compare-and-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/compare-and-pr.png -------------------------------------------------------------------------------- /images/copy-clone-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/copy-clone-url.png -------------------------------------------------------------------------------- /images/directory-views-annotation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/directory-views-annotation.png -------------------------------------------------------------------------------- /images/directory-views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/directory-views.png -------------------------------------------------------------------------------- /images/editor-atom/add-new-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-atom/add-new-file.png -------------------------------------------------------------------------------- /images/editor-atom/add-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-atom/add-project.png -------------------------------------------------------------------------------- /images/editor-atom/add-question-to-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-atom/add-question-to-list.png -------------------------------------------------------------------------------- /images/editor-atom/expand-tree-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-atom/expand-tree-view.png -------------------------------------------------------------------------------- /images/editor-atom/finished-question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-atom/finished-question.png -------------------------------------------------------------------------------- /images/editor-atom/name-new-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-atom/name-new-file.png -------------------------------------------------------------------------------- /images/editor-atom/select-project-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-atom/select-project-folder.png -------------------------------------------------------------------------------- /images/editor-vs-code/add-new-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-vs-code/add-new-file.png -------------------------------------------------------------------------------- /images/editor-vs-code/add-question-to-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-vs-code/add-question-to-list.png -------------------------------------------------------------------------------- /images/editor-vs-code/expand-view-explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-vs-code/expand-view-explorer.png -------------------------------------------------------------------------------- /images/editor-vs-code/file-add-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-vs-code/file-add-folder.png -------------------------------------------------------------------------------- /images/editor-vs-code/name-new-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-vs-code/name-new-file.png -------------------------------------------------------------------------------- /images/editor-vs-code/source-control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-vs-code/source-control.png -------------------------------------------------------------------------------- /images/editor-vs-code/welcome-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/editor-vs-code/welcome-add.png -------------------------------------------------------------------------------- /images/es6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/es6.png -------------------------------------------------------------------------------- /images/fork-loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/fork-loading.png -------------------------------------------------------------------------------- /images/fork-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/fork-repo.png -------------------------------------------------------------------------------- /images/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /images/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /images/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /images/icons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <browserconfig> 3 | <msapplication> 4 | <tile> 5 | <square150x150logo src="/mstile-150x150.png"/> 6 | <TileColor>#00aba9</TileColor> 7 | </tile> 8 | </msapplication> 9 | </browserconfig> 10 | -------------------------------------------------------------------------------- /images/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/favicon-16x16.png -------------------------------------------------------------------------------- /images/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/favicon-32x32.png -------------------------------------------------------------------------------- /images/icons/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "icons": [ 4 | { 5 | "src": "/android-chrome-192x192.png", 6 | "sizes": "192x192", 7 | "type": "image/png" 8 | }, 9 | { 10 | "src": "/android-chrome-512x512.png", 11 | "sizes": "512x512", 12 | "type": "image/png" 13 | } 14 | ], 15 | "theme_color": "#ffffff", 16 | "background_color": "#ffffff", 17 | "display": "standalone" 18 | } -------------------------------------------------------------------------------- /images/icons/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/mstile-144x144.png -------------------------------------------------------------------------------- /images/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/mstile-150x150.png -------------------------------------------------------------------------------- /images/icons/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/mstile-310x150.png -------------------------------------------------------------------------------- /images/icons/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/mstile-310x310.png -------------------------------------------------------------------------------- /images/icons/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/icons/mstile-70x70.png -------------------------------------------------------------------------------- /images/icons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" standalone="no"?> 2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 3 | "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> 4 | <svg version="1.0" xmlns="http://www.w3.org/2000/svg" 5 | width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000" 6 | preserveAspectRatio="xMidYMid meet"> 7 | <metadata> 8 | Created by potrace 1.11, written by Peter Selinger 2001-2013 9 | </metadata> 10 | <g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)" 11 | fill="#000000" stroke="none"> 12 | <path d="M4175 6143 c-36 -2 -210 -20 -275 -28 -138 -18 -411 -94 -585 -165 13 | -118 -48 -408 -209 -467 -259 -7 -6 -34 -28 -60 -48 -27 -19 -48 -41 -48 -47 14 | 0 -11 11 -23 145 -171 110 -121 168 -193 219 -272 26 -40 49 -73 52 -73 3 0 15 | 33 18 67 41 173 115 432 225 622 263 17 4 41 9 55 11 118 25 234 33 405 30 16 | 105 -1 199 -5 210 -8 11 -3 43 -8 70 -11 82 -11 317 -74 390 -105 77 -33 233 17 | -107 245 -116 8 -7 38 -24 65 -40 104 -59 245 -173 372 -301 72 -73 134 -142 18 | 138 -154 3 -11 10 -20 14 -20 9 0 97 -124 148 -208 71 -117 164 -330 193 -442 19 | 5 -19 14 -53 20 -75 35 -131 58 -336 55 -495 -3 -116 -11 -224 -20 -260 -3 -8 20 | -7 -31 -10 -50 -9 -54 -45 -203 -55 -225 -4 -11 -18 -49 -30 -85 -36 -104 21 | -125 -276 -207 -399 -57 -86 -112 -150 -217 -256 -78 -77 -157 -153 -176 -168 22 | -19 -14 -57 -44 -85 -65 -111 -86 -312 -194 -465 -250 -106 -39 -258 -77 -370 23 | -92 -86 -12 -372 -16 -445 -6 -22 3 -60 8 -85 12 -94 12 -179 31 -350 79 -120 24 | 33 -341 130 -460 202 -30 18 -58 33 -63 33 -4 0 -109 -102 -233 -226 l-226 25 | -226 83 -61 c288 -211 637 -366 969 -431 14 -3 34 -7 45 -9 11 -3 40 -8 65 26 | -11 25 -3 55 -8 68 -11 49 -9 213 -18 337 -19 168 0 320 13 450 39 11 2 47 9 27 | 80 15 364 69 819 290 1134 552 114 95 272 253 358 359 154 189 329 493 411 28 | 714 67 180 130 428 147 580 4 33 9 69 12 80 3 11 6 117 8 235 3 192 -3 304 29 | -19 395 -2 17 -8 50 -11 75 -60 425 -292 925 -580 1254 -191 219 -447 435 30 | -675 570 -207 123 -546 255 -750 293 -14 2 -44 8 -68 14 -24 5 -60 11 -80 14 31 | -20 3 -48 7 -62 10 -63 13 -367 24 -475 18z"/> 32 | <path d="M2450 4550 l0 -351 -832 6 c-458 3 -873 7 -923 9 -88 4 -456 17 -545 33 | 20 l-45 1 1 -695 c1 -382 2 -697 3 -700 0 -3 526 -5 1168 -5 l1168 0 3 -333 2 34 | -332 680 680 c374 374 680 682 680 686 0 3 -306 311 -680 685 l-680 680 0 35 | -351z"/> 36 | </g> 37 | </svg> 38 | -------------------------------------------------------------------------------- /images/open-a-pr-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/open-a-pr-options.png -------------------------------------------------------------------------------- /images/open-a-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/open-a-pr.png -------------------------------------------------------------------------------- /images/post-fork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/post-fork.png -------------------------------------------------------------------------------- /images/post-pr-creation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/post-pr-creation.png -------------------------------------------------------------------------------- /images/sad_face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/sad_face.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.06.28 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.06.28 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.08.14 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.08.14 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.08.30 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.08.30 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.08.50 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.08.50 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.09.19 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.09.19 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.09.34 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.09.34 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.09.39 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.09.39 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.09.46 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.09.46 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.10.16 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.10.16 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.10.58 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.10.58 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.11.15 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.11.15 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.11.32 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.11.32 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.12.18 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.12.18 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.13.45 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.13.45 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.14.35 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.14.35 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.16.14 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.16.14 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.16.32 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.16.32 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/Screen Shot 2017-10-13 at 9.16.41 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/Screen Shot 2017-10-13 at 9.16.41 PM.png -------------------------------------------------------------------------------- /images/unused-so-far/noun_14432.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/unused-so-far/noun_14432.png -------------------------------------------------------------------------------- /images/unused-so-far/noun_14432.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0px" y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"><path d="M50,298.021v-84.045h142.859V172.23L276.776,256l-83.917,83.77v-41.748H50z M304.447,98.447 c-36.184,0-69.513,12.206-96.11,32.714l28.61,28.561c19.632-13.826,42.993-21.275,67.5-21.275c31.399,0,60.919,12.228,83.122,34.43 C409.772,195.081,422,224.601,422,256s-12.228,60.92-34.431,83.122c-22.203,22.203-51.723,34.431-83.122,34.431 c-24.507,0-47.868-7.449-67.5-21.275l-28.611,28.561c26.599,20.509,59.928,32.715,96.111,32.715 C391.461,413.553,462,343.014,462,256C462,168.986,391.461,98.447,304.447,98.447z"></path></svg> -------------------------------------------------------------------------------- /images/whiteboard-answers/table-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/whiteboard-answers/table-layout.png -------------------------------------------------------------------------------- /images/whiteboard-answers/takeout-object-model.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/images/whiteboard-answers/takeout-object-model.jpg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html> 2 | <html> 3 | <head> 4 | <meta charset="utf-8"> 5 | <title>Software Interview Prep | Approachable IO 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Software Interview Prep

26 |

Whiteboard and technical questions to prepare you for a software interviews

27 |

Whiteboard Questions

28 | View our list of whiteboard questions 29 | 30 |

Technical Questions

31 | View our list of technical questions 32 | 33 |

Contribute your interview questions

34 | Learn how to add your interview questions to the site 35 |
36 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | http://interview.approachable.io/ 5 | 2017-10-13 6 | always 7 | 0.8 8 | 9 | -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | height: 100vh; 3 | width: 70%; 4 | margin: 5% auto 0; 5 | font-family: sans-serif; 6 | } 7 | 8 | .text-container { 9 | box-sizing: border-box; 10 | padding: 0px 35px; 11 | } 12 | 13 | h1, h3{ 14 | margin-bottom: 0px; 15 | } 16 | h2{ 17 | margin-top: 0px; 18 | } 19 | 20 | p{ 21 | font-size: 18px; 22 | } 23 | 24 | img { 25 | display: block; 26 | max-width: 350px; 27 | margin: 0 auto; 28 | text-align: center; 29 | } 30 | 31 | .large-central-logo { 32 | width: 100%; 33 | } 34 | 35 | .top-left-logo { 36 | width: 40px; 37 | } 38 | 39 | @media only screen and (max-width: 760px) { 40 | body{ 41 | width: 90%; 42 | } 43 | } 44 | 45 | .hidden-answer input[type="checkbox"] { 46 | display: none; 47 | } 48 | 49 | .hidden-answer label { 50 | color: -webkit-link; 51 | cursor: pointer; 52 | display: block; 53 | font-size: 1rem; 54 | padding: .5rem 0; 55 | text-decoration: underline 56 | } 57 | 58 | .content { 59 | height: 0; 60 | padding: 0 .5rem; 61 | overflow: auto; 62 | } 63 | 64 | .hidden-answer input[type="checkbox"]:checked ~ label ~ .content { 65 | height: auto; 66 | min-height: 4rem; 67 | } 68 | 69 | /* For Page 404 */ 70 | 71 | .container_error { 72 | display: flex; 73 | align-items: center; 74 | justify-content: center; 75 | flex-direction: column; 76 | } 77 | 78 | .container_error h1{ 79 | margin-top: 0px; 80 | font-size: 5em; 81 | } 82 | 83 | .sad_face{ 84 | width: 100px; 85 | } 86 | -------------------------------------------------------------------------------- /supplemental-documentation/dependencies.md: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | 3 | Typically, most software projects will have dependencies that need to be installed before you can begin to work on 4 | the project. This will most likely be mentioned in the README of the project, but if not, you will have to explore 5 | and find out yourself. 6 | 7 | Most node/js projects will use npm as the package manager, so you can just run `npm install` 8 | (or `yarn`) in the package directory and it will install everything for you (provided you have node & npm or yarn installed on your 9 | computer already). 10 | 11 | Most python projects will have a requirements.txt file with all of the packages needed. You can 12 | install these with `pip install -r requirements.txt`. 13 | 14 | Some projects don't have any dependencies at all. This differs 15 | based on what languages the projects use, and who writes them, so reading the README is the best way to find out. 16 | 17 | Once you have all the dependencies installed for your project (none are needed for this one, hooray!), it's time to add your contribution. 18 | -------------------------------------------------------------------------------- /supplemental-documentation/text-editor-explanation.md: -------------------------------------------------------------------------------- 1 | # Text Editor Explanation 2 | 3 | VS CODE!?!?! Flame war commence!!!! I know, I know. There are a million different options here, and we can argue forever about the "Best" editor (spoiler: There isn't one), but we're making the call here to use Visual Studio Code because: 4 | 5 | - it is relatively lightweight (Unlike full Visual Studio) 6 | - it is approachable and familiar to most computer users (unlike Vim) 7 | - it is free (unlike Sublime or Webstorm) 8 | - it has support for git functionality (unlike Notepad++) - Here we can get into a separate debate about learning all git commands from the command line right away, but remember, approachablity always wins here, and teaching yet another interface (especially one as intimidating as the command line) is not preferable 9 | 10 | If you're comfortable with something else, feel free to use something else, but here, we are making this decision under the "Approachability Guideline" of "sacrifice development speed, performance, and productivity every time if it makes the code easier for those with less technical expertise to participate in the project." The easiest thing here is to just pick one and not present first-time contributors an overwhelming number of options that could paralyze them. 11 | 12 | If you would like to rewrite this section in another free, simple, light-weight IDE (like Atom) we would be willing to include it as supplemental material. 13 | 14 | All of that said, as much as possible, Approachable IO attempts to be editor agnostic, and we are open to feedback. 15 | -------------------------------------------------------------------------------- /supplemental-documentation/using-atom.md: -------------------------------------------------------------------------------- 1 | # Using Atom to Add a New Question 2 | 3 | This guide will walk you through the process of adding a new question 4 | to this repository using the Atom text editor. Atom is available for free 5 | [here](https://atom.io) and works on OS X, Windows, and Linux. 6 | 7 | Once you have Atom installed and opened, you'll be ready to create your new 8 | question. 9 | 10 | ### Add your project to Atom 11 | 12 | To get started, you'll want to add this repository to Atom as a new project. 13 | 14 | Right-click the Tree View on the left side of the screen (under the "Projects" 15 | header), then choose "Add Project Folder" (pictured below). 16 | 17 | If you don't see the Tree View when you open Atom, you can toggle its visibility 18 | using the keyboard shortcut `Ctrl-\` on Windows and Linux or `Cmd-\` on OS X. 19 | 20 | ![Adding a new project folder in Atom.][add-project] 21 | 22 | A dialog should appear asking you to select a folder. 23 | 24 | Navigate to where you stored your clone of this repository (the directory is 25 | probably named `software-interview-prep`), select the folder, and accept 26 | (hit "Select Folder"). 27 | 28 | ![Selecting the correct project directory.][select-project-folder] 29 | 30 | ### Add a new HTML file for your question 31 | 32 | Now that you've added this repository to Atom as a project, you can create a 33 | new `.html` file with your question. 34 | 35 | Expand the tree view of this project so that it looks something like the picture below. 36 | You'll want to expand until you can see the contents of the `views/questions` directory: 37 | 38 | ![Expanded tree view of this repository in Atom.][expand-tree-view] 39 | 40 | Depending on whether your question is a whiteboard question or a technical question, 41 | you'll add a new file to either the `views/questions/whiteboard` directory or 42 | the `views/questions/technical` directory. For this example, we'll add a 43 | new whiteboard question. 44 | 45 | Right-click the question directory (`whiteboard` in our case) and choose "New File": 46 | 47 | ![Adding a new file to a directory in Atom.][add-new-file] 48 | 49 | Enter the new filename in the dialog that appears. 50 | The filename should be the name of your question, with words separated by dashes, 51 | ending with `.html`: 52 | 53 | ![Naming the new file.][name-new-file] 54 | 55 | ### Adding your finished question to the list 56 | 57 | Once you've finished writing the HTML file for your new question, you should see 58 | that your file's color has changed to green in the tree view: 59 | 60 | ![A completed question in an HTML file.][finished-question] 61 | 62 | The last step is to add your question to the main list. If you wrote a whiteboard 63 | question, this list will be in `views/whiteboard.html`; technical 64 | questions go in `views/technical.html`. 65 | 66 | Open the relevant file (for us, it's `whiteboard.html`) and find the `

` 67 | element with the text "Software Interview Whiteboard Questions" or 68 | "Software Interview Technical Questions". 69 | 70 | Underneath this header (still inside the `.text-container` div), add a new link 71 | (``) that leads to your project. The new element should follow the pattern 72 | shown below (which matches the existing link elements in the file). Note the 73 | `href` value of the link: 74 | 75 | ![Adding your question to the general list. The link tag should follow the same format as the others in the file.][add-question-to-list] 76 | 77 | ### Next steps 78 | 79 | Now you're ready to stage and commit your changes and submit a pull request! 80 | Return to the [main guide](../README.md) for instructions on how to do this. 81 | 82 | 83 | 84 | [add-project]: ../images/editor-atom/add-project.png 85 | [select-project-folder]: ../images/editor-atom/select-project-folder.png 86 | [expand-tree-view]: ../images/editor-atom/expand-tree-view.png 87 | [add-new-file]: ../images/editor-atom/add-new-file.png 88 | [name-new-file]: ../images/editor-atom/name-new-file.png 89 | [finished-question]: ../images/editor-atom/finished-question.png 90 | [add-question-to-list]: ../images/editor-atom/add-question-to-list.png 91 | -------------------------------------------------------------------------------- /supplemental-documentation/using-vs-code.md: -------------------------------------------------------------------------------- 1 | # Using Visual Studio Code to Add a New Question 2 | 3 | This guide will walk you through the process of adding a new question 4 | to this repository using the Visual Studio Code editor. VS Code is available for free 5 | [here](https://code.visualstudio.com/) and works on Windows, OS X, and Linux. 6 | 7 | Once you have VS Code installed and opened, you'll be ready to create your new 8 | question. 9 | 10 | ### Add your project to VS Code 11 | 12 | To get started, you'll want to add this repository to VS Code as a new project. 13 | 14 | When you first open VS Code, by default, you will be shown a "Welcome" screen. If you have already cloned your repository simply choose "Open folder..." and select the directory you are working in. 15 | 16 | ![Opening a new project folder in VS Code from Welcome][welcome-add] 17 | 18 | If you don't see the Welcome screen when you open VS Code, you can open a folder by accessing the File menu or activating the keyboard shortcut `CTRL+K CTRL+O` on Windows. 19 | 20 | ![Opening a new project folder in VS Code from file menu][file-add-folder] 21 | 22 | A dialog should appear asking you to select a folder. 23 | 24 | Navigate to where you stored your clone of this repository (the directory is 25 | probably named `software-interview-prep`), select the folder, and accept 26 | (hit "Select Folder"). 27 | 28 | ![Selecting the correct project directory.][select-project-folder] 29 | 30 | ### Add a new HTML file for your question 31 | 32 | Now that you've added this repository to VS Code as a project, you can create a 33 | new `.html` file with your question. 34 | 35 | Expand the tree view of this project in the Explorer so that it looks something like the picture below. If you do not see the Explorer you can use the shortcut `CTRL+Shift+E` and it should appear. 36 | You'll want to expand until you can see the contents of the `views/questions` directory: 37 | 38 | ![Expanded Explorer view of this repository in VS Code.][expand-view-explorer] 39 | 40 | Depending on whether your question is a whiteboard question or a technical question, 41 | you'll add a new file to either the `views/questions/whiteboard` directory or 42 | the `views/questions/technical` directory. For this example, we'll add a 43 | new technical question. 44 | 45 | Right-click the question directory (`technical` in our case) and choose "New File": 46 | 47 | ![Adding a new file to a directory in VS Code.][add-new-file] 48 | 49 | Enter the new filename in the dialog that appears. 50 | The filename should be the name of your question, with words separated by dashes, 51 | ending with `.html`: 52 | 53 | ![Naming the new file.][name-new-file] 54 | 55 | ### Adding your finished question to the list 56 | 57 | Once you've finished writing the HTML file for your new question, you should see your source control shows changes on the left hand menu: 58 | 59 | ![Changes shown in source control.][source-control] 60 | 61 | The last step is to add your question to the main list. If you wrote a whiteboard 62 | question, this list will be in `views/whiteboard.html`; technical 63 | questions go in `views/technical.html`. 64 | 65 | Open the relevant file (for us, it's `technical.html`) and find the `

` 66 | element with the text "Software Interview Whiteboard Questions" or 67 | "Software Interview Technical Questions". 68 | 69 | Underneath this header (still inside the `.text-container` div), add a new link 70 | (``) that leads to your project. The new element should follow the pattern 71 | shown below (which matches the existing link elements in the file). Note the 72 | `href` value of the link: 73 | 74 | ![Adding your question to the general list. The link tag should follow the same format as the others in the file.][add-question-to-list] 75 | 76 | ### Next steps 77 | 78 | Now you're ready to stage and commit your changes and submit a pull request! 79 | Return to the [main guide](../README.md) for instructions on how to do this. 80 | 81 | 82 | [welcome-add]: ../images/editor-vs-code/welcome-add.png 83 | [file-add-folder]: ../images/editor-vs-code/file-add-folder.png 84 | [select-project-folder]: ../images/editor-atom/select-project-folder.png 85 | [expand-view-explorer]: ../images/editor-vs-code/expand-view-explorer.png 86 | [add-new-file]: ../images/editor-vs-code/add-new-file.png 87 | [name-new-file]: ../images/editor-vs-code/name-new-file.png 88 | [source-control]: ../images/editor-vs-code/source-control.png 89 | [finished-question]: ../images/editor-vs-code/finished-question.png 90 | [add-question-to-list]: ../images/editor-vs-code/add-question-to-list.png 91 | -------------------------------------------------------------------------------- /views/contribute.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Contribute to Software Interview Questions | Approachable IO 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Contribute to Software Interview Questions

26 |

Help others by contributing your interview questions to this site by following this guide! This project is an Approachable Open Source project from Approachable IO, which means we try to make it as straightforward as possible to contribute to the project.

27 |

Don't have an interview question to share but still want to get involved? Regardless of your skill level, we're glad you're here and would love your contribution to our projects. If you're looking for how to get involved with your very first open source project, check out our getting-started project which will guide you through your very first open source contribution.

28 |

Your contributions are also welcome on any of our projects on our Github Account, including the project for this website!

29 |
30 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /views/questions/technical/Agile.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Agile Methodology | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Agile Methodology!

26 | 27 | More technical interview questions 28 | 29 |

What is Agile Methodology in Project Management

30 |

31 | Agile is a process by which a team can manage a project by breaking it up into several stages and involving constant 32 | collaboration with stakeholders and continuous improvement and iteration at every stage. The Agile methodology begins 33 | with clients describing how the end product will be used and what problem it will solve. This clarifies the customer's 34 | expectations to the project team. Once the work begins, teams cycle through a process of planning, executing, and 35 | evaluating — which might just change the final deliverable to fit the customer's needs better. Continuous collaboration 36 | is key, both among team members and with project stakeholders, to make fully-informed decisions. 37 |

38 |
39 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /views/questions/technical/Index_At_Array.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Array Index | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Why Array Index of an array in C starts with 0

26 | 27 | More technical interview questions 28 | 29 |

The array index in C starts with 0 because in C the name of an array is a pointer, which is a reference to a memory location. Therefore, an expression *(arr + n) or arr[n] locates an element n-locations away from the starting location because the index is used as an offset. Likewise, the first element of the array is exactly contained by the memory location that array refers (0 elements away), so it should be denoted as *(arr + 0) or *(arr) or arr[0].

30 |

31 | C programming language has been designed this way, so indexing from 0 is inherent to the language. 32 | 33 | However, some languages give user a choice to start index from zero or any other positive integer. For an example, in Fortran, when an array is declared with integer a(10) (an array of 10 integer elements), the index starts from 1 and ends at 10. However, this behavior can be overridden using a statement like, integer a(0:9), declaring an array with indices from 0 to 9. 34 |

35 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /views/questions/technical/OOPS.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OOPS | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Object Oriented Programming!

26 | 27 | More technical interview questions 28 | 29 |

What is OOPS?

30 |

31 | Object oriented design started right from the moment computers were invented. 32 | Programming was there, and programming approaches came into the picture. 33 | Programming is basically giving certain instructions to the computer. 34 |

35 |

36 | The OOP concept was basically designed to overcome the drawback of the above programming methodologies, 37 | which were not so close to real-world applications. The demand was increased, 38 | but still, conventional methods were used. This new approach brought a revolution 39 | in the programming methodology field. 40 |

41 |

42 | Object-oriented programming (OOP) is nothing but that which allows the writing of 43 | programs with the help of certain classes and real-time objects. We can say that 44 | this approach is very close to the real-world and its applications because the 45 | state and behaviour of these classes and objects are almost the same as real-world objects. 46 |

47 |
48 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /views/questions/technical/System_out_println.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Print | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

How does System.out.println in java work?

26 | 27 | More technical interview questions 28 | 29 |

30 | System.out.println(exp); is used to display messages to the command window. If we go further to the functioning of System.out.println() statement, we will find that: 31 | 32 |
1. System is a class built into the core Java language and it is defined within the java.lang package. 33 | 34 |
2. out is a public static member of the System class, of type PrintStream. 35 | Thus, the expression System.out refers to an object of type PrintStream. 36 | 37 |
3. The (overloaded) println method of the PrintStream class accepts an expression as an argument and displays it in String form to the standard output window (i.e., the command-line window from which the program was invoked). There are multiple println overloaded methods with different arguments. Every println makes a call to print method and adds a newline. 38 |
Internally, print calls write() and write() takes care of displaying data to the standard output window. 39 |

40 |

41 | We therefore don't need to ever instantiate a System object to print messages to the screen; we simply call the println method on the System class's public static PrintStream member, out. 42 | 43 |
Now, you might be thinking that can we create an object of PrintStream and call println function with that object to print to the standard output (usually the console)? The answer is NO. When you want to print to the standard output, then you will use System.out.
That's the only way. Instantiating a PrintStream will allow you to write to a File or OutputStream you specify, but don't have anything to do with the console. 44 | 45 |
However, you can pass System.out to PrintStream and then invoke println on PrintStream object to print to the standard output 46 |

47 |
48 |

49 | An 50 | Approachable Open Source project from 51 | Approachable IO 52 |

53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /views/questions/technical/algorithms.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Algorithm | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Algorithm

26 | 27 | More technical interview questions 28 | 29 |

What is Algorithm?

30 |

31 | Algorithm is a step by step procedure, which defines a set of instructions to be executed in certain order to get the desired 32 | output. 33 |

34 |

Why we need to do algorithm analysis?

35 |

36 | A problem can be solved in more than one ways. So, many solution algorithms can be derived for a given problem. We 37 | analyze available algorithms to find and implement the best suitable algorithm. 38 |

39 |

What are the criteria of algorithm analysis?

40 |

41 | An algorithm are generally analyzed on two factors − time and space. That is, how much execution time and how much 42 | extra space required by the algorithm. 43 |

44 | 45 |
46 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /views/questions/technical/angular2-questions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Data Science | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 |

Angular 2+

27 |

Angular is single page Application. 28 | Angular 4 is a JavaScript framework for building web applications and apps in JavaScript, html, and TypeScript, which is a superset of JavaScript. 29 | Angular provides built-in features for animation, http service, and materials which in turn has features such as auto-complete, navigation, toolbar, menus, etc. 30 | The code is written in TypeScript, which compiles to JavaScript and displays the same in the browser. 31 |

32 | 33 | 34 |

What is Type Script?

35 |

TypeScript is an open-source programming language developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript, and adds optional static typing to the language. 36 | TypeScript is designed for development of large applications and transcompiles to JavaScript. 37 |

38 | 39 |

What is Angular CLI?

40 |

Angular CLI makes it easy to start with any Angular project. 41 | Angular CLI comes with commands that help us create and start on our project very fast. 42 | Let us now go through the commands available to create a project, a component and services, change the port, etc. 43 |

44 | 45 |

What is Module in Angular?

46 |

Module in Angular refers to a place where you can group the components, directives, pipes, and services, which are related to the application. 47 |
48 |

How to define module in Angular2+ ?
49 |

To define module, we can use the NgModule. 50 | When you create a new project using the Angular –cli command, the ngmodule is created in the app.module.ts file by default. 51 |

52 |

53 | 54 |

What are components in Angular?

55 |

Major part of the development with Angular 4 is done in the components. Components are basically classes that interact with the .html file of the component, which gets displayed on the browser. We have seen the file structure in one of our previous chapters. The file structure has the app component and it consists of the following files − 56 |
57 |

- app.component.css
58 |
- app.component.html
59 |
- app.component.ts
60 |
- app.module.ts
61 |

62 | 63 |

What are routing in Angular2 ?

64 |

Routing basically means navigating between pages. You have seen many sites with links that direct you to a new page. This can be achieved using routing. Here the pages that we are referring to will be in the form of components. We have already seen how to create a component. Let us now create a component and see how to use routing with it. 65 |

66 | 67 |

What are services in Angular2 ?

68 |

We might come across a situation where we need some code to be used everywhere on the page. It can be for data connection that needs to be shared across components, etc. Services help us achieve that. With services, we can access methods and properties across other components in the entire project. 69 |

70 | 71 |
72 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /views/questions/technical/angularjs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | What is AngularJS | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 |

What is AngularJS

27 |

AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend 28 | HTML's syntax to express your application's components clearly and succinctly. AngularJS's data binding and dependency injection 29 | eliminate much of the code you would otherwise have to write. And it all happens within the browser, making it an ideal partner 30 | with any server technology. 31 |

32 | 33 |

AngularJS follows the traditional MVC architecture that comprises a model, a view, and a controller. 34 |

    35 |
  • Model: the model is an abstract representation of your data.
  • 36 |
  • Views: the view represents the presentation layer and the actual UI.
  • 37 |
  • Controller: the controller represents how user interactions are handled and binds both the model and the view.
  • 38 |
39 |

40 | 41 |
42 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /views/questions/technical/anonymous-functions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Anonymous Function | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 |
26 |

Anonymous Functions

27 | 28 | More technical interview questions 29 | 30 |

What is a typical use case for anonymous functions in Javascript?

31 |

32 | Anonymous functions can be used for 33 |

34 |
    35 |
  1. Brevity 36 |
  2. 37 |
  3. Isolating scope
  4. 38 |
39 |

40 | Brevity 41 |

42 |

If you are only using a function once and you're calling it right away, you probably don't want to wetten up your 43 | code by defining it. You could write code like this: 44 |

45 |
46 | var habits = ['making eye contact uncomfortably long',
47 |   'instigating slouching contests',
48 |   'saying good morning cheerfully to people who are probably not morning people'];
49 | function habbitsCallback(habbit, i) {
50 |   console.log(i + '. ' + habbit + '.');
51 | );
52 |
53 | habbits.forEach(habbitsCallback);
54 | 55 | 56 |
57 |

But usually you will not define a callback function if you're only using it once. You'd use an anonymous function 58 | instead: 59 |

60 |
61 | habits.forEach(function(habbit, i) {
62 |   console.log(i + '. ' + habbit + '.');
63 | });
64 |
65 |

66 | Isolating scope 67 |

68 |

69 | Sometimes you just want a little privacy. If you are writing code in a section that could possibly 70 | conflict with variable names or something from another section of your code, you can isolate it with an 71 | anonymous function. One example is with an immediately invoked function expression: 72 |

73 |
74 | (function() {
75 |   var habits = 'I have some interesting habits.';
76 | }();
77 | 78 | console.log(habits); //habits is not defined; 79 |
80 |

I have never seen that used, so to me a more familiar example is when using a Javascript library like 81 | jQuery or framework like Angular.js: 82 |

83 |
84 | app.controller('HabbitController', ['HabbitService', function (HabbitService) {
85 |   var habbit = 'Eating cold pop tarts';
86 | }
87 | console.log(habbit); //habbit is not defined.
88 |

More detailed discussion of local and global scope with anonymous functions: 89 | https://stackoverflow.com/questions/17058606/why-using-self-executing-function 90 |

91 | 92 |
93 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /views/questions/technical/async-programming.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Asynchronous Programming | Software Interview Technical Questions 7 | 8 | 12 | 13 | 14 | 15 | 16 | 21 | 27 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 50 | 51 |
52 |

Asynchronous Programming in JavaScript

53 | 54 | More technical interview questions 55 | 56 |

57 | What is asynchronous programming, and why is it important in JavaScript? 58 |

59 |

60 | Synchronous programming means that, barring conditionals and function 61 | calls, code is executed sequentially from top-to-bottom, blocking on 62 | long-running taks such as a network request. 63 |

64 |

65 | Asynchronous programming means that the engine runs in an event loop. 66 | When a blocking operation is needed, the request is started, and the 67 | code keeps running without blocking. When the response is ready, an 68 | interrupt is fired, which causes an event handler to be run, where the 69 | control flow continues. This way, a program thread can handle many 70 | concurrent operations. 71 |

72 |

Examples

73 |

74 | User interfaces are asynchronous by nature, and spend most of their time 75 | waiting for user input to interrupt the event loop and trigger event 76 | handlers. 77 |

78 |

79 | Node is also asynchronous by default. This means that the server works 80 | in the same way. It waits in a loop for a network request, and accepts 81 | more incoming requests while the first one is being handled. 82 |

83 |
84 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /views/questions/technical/cdn.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | CDNs | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Content Delivery Networks

26 | 27 | More technical interview questions 28 | 29 |

What is a CDN and what advantages or disadvantages does it have?

30 |

31 | A content delivery network, also known as a CDN, transparently connects users with web content. Rather than retrieving information from just one central server, CDNs feature multiple servers that are spread out geographically. Whichever server is physically closest to the user will deliver the content. Each server, or point of presence (PoP), stores an identical copy of data so it is ready for transfer. 32 |

33 |

34 | There are several advantages to using CDNs. Distributing service spatially increases content availability and improves speed and performance. Applications using CDNs can better protect against hackers, spammers, and other security threats. 35 |

36 |

37 | CDNs also come with some disadvantages. For one, they incur extra cost. They make website deployment more complicated. And depending on where users are geographically, servers may not actually get the content closer to them. 38 |

39 |
40 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /views/questions/technical/class-vs-object.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Class vs Object | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Classes and Objects in OOP

26 | 27 | More technical interview questions 28 | 29 |

What are classes and objects in OOP, and what's the distinction between the two?

30 |

31 | A Class is a blueprint of sorts; it outlines what attributes and 32 | functionalities a particular type of structure should have. For example, 33 | a Car object could have color, top speed, and transmission type attributes 34 | and accelerate, brake, and turn signal functions. 35 |

36 |

37 | An Object is an instance of a Class. For instance (if you'll excuse the pun), 38 | myCar would be an instance of the class Car with color = gray, top 39 | speed = 15mph, transmission type = automatic. It would inherit the methods 40 | accelerate, brake, and turn signal functions from Car. 41 |

42 |

An object is a member or an "instance" of a class.

43 |

44 | If channel is a class, Start Sports, BBC, and ESPN are its objects. If water is a Class, "Fresh Lime Water" and "Soup" are its objects. 45 |
46 | Although you might find this explanation vague, this is the answer that I could think of. 47 |
48 | Here is how you can learn about and distinguish classes: 49 |
50 | Say you have a class "CAR" 51 |
52 | Its objects are Hyundai, Ford, Suzuki. It will have the same methods but different designs -> this is how you can relate objects and classes with the real world. 53 |

54 |
55 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /views/questions/technical/closure.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Closures in JavaScript | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Closures in JavaScript

26 | 27 | More technical interview questions 28 | 29 |

What is a Closure in JavaScript?

30 |

31 | A closure is a function that can access the outer function's variables. A closure has access to its own scope, to the outer function's variables, and to the global scope. 32 |

33 |

Why would you use a closure?

34 |

Separation of concerns is an important part of development, and closures allow you to give objects data privacy. The innermost function has access to information outside its scope, but you cannot access the innermost function's information from outside sources.

35 | 36 |
37 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /views/questions/technical/compiled-vs-interpreted.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Compiled vs Interpreted | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Compiled vs Interpreted Languages

26 | 27 | More technical interview questions 28 | 29 |

What are differences between compiled and interpreted languages? Name an example of each.

30 |

31 | Compiled languages must be run through a separate "compiler" program, while interpreted languages are run through an "interpreter" automatically when the code is executed. A compiler converts the code to machine code, a language the computer can understand. Interpreters perform the same function, but they translate the code as it is run, removing the extra step of compiling. 32 |

33 |

34 | In terms of processing speed, compiled languages tend to run faster because they are translated all at once. Interpreted languages, on the other hand, are a bit slower because they are being run though an interpreter on the fly. 35 |

36 |

37 | Compiled languages include BASIC, C++, C#, Java, and Swift. Some examples of interpreted languages are JavaScript, PHP, Python, and Ruby. 38 |

39 |
40 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /views/questions/technical/data-science.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Data Science | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What is Data Science

26 | 27 | 28 | More technical interview questions 29 | 30 | 31 |

Data Science

32 |

33 | Data Science is a multi-disciplinary field that combines skills in 34 | software engineering and statistics with domain experience to 35 | support the end-to-end analysis of large and diverse data sets, 36 | ultimately uncovering value for an organization and then 37 | communicating that value to stakeholders as actionable results. 38 |

39 | 40 | 41 |

Data Scientist

42 |

43 | Person who is better at statistics than any software engineer and 44 | better at software engineering than any statistician. 45 |

46 | 47 |

What Skills Do You Need?

48 |
    49 |
  • 50 | Mathematics - Calculus, Linear Algebra

    51 |
  • 52 |
  • 53 | Statistics - Hypothesis, Testing, Regression

    54 |
  • 55 |
  • 56 | Programming - SQL, R/Python

    57 |
  • 58 |
  • 59 | Machine Learning - Supervised and Unsupervised Learning, Model Fitting

    60 |
  • 61 |
  • 62 | Business/Product Intuition - Interpret and communicate results to non-technical audience

    63 |
  • 64 |
65 | 66 |
67 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /views/questions/technical/data-scientist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/approachable-io/software-interview-prep/ddf14221c0f9b0e827a254b3870eec01a5ff6624/views/questions/technical/data-scientist.png -------------------------------------------------------------------------------- /views/questions/technical/encapsulation.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Encapsulation | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Encapsulation

26 | 27 | More technical interview questions 28 | 29 |

What is encapsulation, and why is it important in OOP?

30 |

31 | Encapsulation is the idea that access to the inner workings of an 32 | object should be controlled carefully. A module is considered 33 | "encapsulated" iff its implementation is completely hidden, and it can 34 | only be accessed through a documented interface. 35 |

36 |

37 | Encapsulation is important because it helps to compartmentalize 38 | elements within a larger project, and by so doing, helps to minimize 39 | the risk of misuse of particular functionalities. For example, think 40 | of how cars work; the driver gets a steering wheel, brakes, 41 | accelerator, et cetera, and it's only through these that they control 42 | how the car moves. The car itself handles the actual acceleration and 43 | turning, because the actual inner workings of the engine are too 44 | complex for the average user. If the user were to be allowed to meddle 45 | with the innermost workings of the vehicle, they could cause all kinds 46 | of damage due to their ignorance of how the actual act of acceleration 47 | (or what have you) was supposed to be performed. 48 |

49 |
50 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /views/questions/technical/functional-components.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Functional Components | Software Interview Technical Questions 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 27 | 28 |
29 |

Functional Components in JavaScript

30 |
31 | 32 | More technical interview questions 33 | 34 | 35 | 36 |

The different functional components in JavaScript are-

37 |

38 | First-class functions: Functions in JavaScript are utilized as first class objects. This usually means that these 39 | functions can be passed as arguments to other functions, returned as values from other functions, assigned to variables 40 | or can also be stored in data structures. 41 |

42 |

43 | Nested functions: The functions, which are defined inside other functions, are called Nested functions. They are called 44 | 'everytime' the main function is invoked. 45 |

46 |
47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /views/questions/technical/html5.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | What is Html 5 | Software Interview Technical Questions 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 31 | 32 | 33 | 34 | 35 | 37 | 38 |
39 | 40 |

What is HTML5?

41 |

HTML5 is the latest version of the HyperText Markup Language that can be referred to the WWW (World Wide 42 | Web) primary language, this markup language enhances a text file with bits of code, and this code which we 43 | can say as “markup” describes the structure of the document. 44 | 45 | HTML5 provides some standard features like that of CSS, HTML, JavaScript, and DOM, which in turn will reduce 46 | the requirement of external plugins. It’s more markup to replace scripting, better error handling, etc. 47 | HTML5 is device independent. 48 |

49 | 50 |

What is 51 | ? What are the different types of 52 | that are available?

53 |

The 54 | declaration provides instruction to the web browser to understand what information it should be 55 | display, and the need to start with 56 | declaration. In HTML5, DOCTYPE declaration is very short, and case-insensitive, and 57 | is written at the top of every HTML5 page. 58 | 59 |

The following DOCTYPE are also supported in HTML5:

60 | 61 |
    62 |
  • 63 | < !DocTYpe html> 64 |
  • 65 |
    66 |
  • 67 | < !dOCtype html> 68 |
  • 69 |
    70 |
  • 71 | < !doctype html> 72 |
  • 73 |
74 | 75 |

There are 3 types of DOCTYPES as mentioned below:

76 | 77 |
    78 |
  • Strict Doctype
  • 79 |
    80 |
  • Frameset Doctype
  • 81 |
    82 |
  • Transitional Doctype
  • 83 |
84 |

85 | 86 |

What is a tag in HTML5?

87 |

A tag is a special content in HTML5, which is surrounded by an angle bracket (<,>). A slash (/) symbol is 88 | used to close the tag after completing the block. 89 |

90 | 91 |

For Example

92 | 93 |
94 | < title> this is my browser < /title> 95 |
96 | 97 |

An Html5 tag is a set of characters that develop a formatted command for a web page. These formatted commands 98 | communicate and send the instruction to the Browser.

99 | 100 |

What is the minimum number of HTML5 tags that are required to create a Web page?

101 |

Drag and Drop is the most important User Interface concept which makes it easy to grab an object and Drag it 102 | at the place you want with the help of a mouse click. 103 | 104 | Some common features that are mostly used by Drag and Drop operation include move, link or copy. 105 | 106 | We can drag an image using elements, type = 107 | < img draggable=“true”> 108 | , to make an image draggable and set the draggable image attribute to true. 109 |

110 | 111 |

Why do we use HTML5?

112 |

HTML5 supports animation, drawing, audio, video, etc and it easily embeds a video on the web page. It does 113 | not require any additional software like Flash for watching videos. 114 | 115 |

Some of the important reasons to use HTML5 are given below:

116 | 117 |
    118 |
  • Legacy and cross-browser support
  • 119 |
    120 |
  • Better interactions
  • 121 |
    122 |
  • Smarter storage
  • 123 |
    124 |
  • Cleaner code
  • 125 |
126 | 127 |

128 | 129 |

What is a hyperlink? Does it only apply to text?

130 |

The hyperlink is a link that allows a user to move from one web page to another web page when clicked. 131 | Hyperlink concept is used on text and as well as image, and we can convert an image into a link with the 132 | help of < a href=“ ”….< /a>> tags. 133 |

134 | 135 |

What’s one main result if you do not specify a doctype in an HTML page?

136 |

New HTML5-specific tags will not be interpreted by the browser. 137 |

138 | 139 |
140 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /views/questions/technical/importance-of-css.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Importance of CSS 4 | 5 | 6 | Cascading Style Sheets, commonly known as CSS, is an integral part of the modern web development process. It is a highly effective HTML tool that provides easy control over layout and presentation of website pages by separating content from design. 7 | Although CSS was introduced in 1996, it gained mainstream popularity by the early 2000s when popular browsers started supporting its advanced features. The latest version, CSS3, has been available since 1998 and was last updated in September 2008. 8 | Benefits of CSS in Web Development 9 | Improves Website Presentation 10 | The standout advantage of CSS is the added design flexibility and interactivity it brings to web development. Developers have greater control over the layout allowing them to make precise section-wise changes. 11 | As customization through CSS is much easier than plain HTML, web developers are able to create different looks for each page. Complex websites with uniquely presented pages are feasible thanks to CSS. 12 | Also Read: 6 Important Steps for Planning Your Web Design 13 | Makes Updates Easier and Smoother 14 | CSS works by creating rules. These rules are simultaneously applied to multiple elements within the site. Eliminating the repetitive coding style of HTML makes development work faster and less monotonous. Errors are also reduced considerably. 15 | Since the content is completely separated from the design, changes across the website can be implemented all at once. This reduces delivery times and costs of future edits. 16 | Helps Web Pages Load Faster 17 | Improved website loading is an underrated yet important benefit of CSS. Browsers download the CSS rules once and cache them for loading all the pages of a website. It makes browsing the website faster and enhances the overall user experience. 18 | This feature comes in handy in making websites work smoothly at lower internet speeds. Accessibility on low end devices also improves with better loading speeds. 19 | Limitations of CSS Technology 20 | Browser Dependent 21 | The only major limitation of CSS is that its performance depends largely on browser support. Besides compatibility, all browsers (and their many versions) function differently. So your CSS needs to account for all these variations. 22 | However, in case your CSS styling isn’t fully supported by a browser, people will still be able to experience the HTML functionalities. Therefore, you should always have a well structured HTML along with good CSS. 23 | Also Read: Are You Making These Responsive Design Mistakes? 24 | Difficult to retrofit in old websites 25 | The instinctive reaction after learning the many advantages of CSS is to integrate it into your existing website. Sadly, this isn’t a simple process. CSS style sheets, especially the latest versions, have to be integrated into the HTML code at the ground level and must also be compatible with HTML versions. Retrofitting CSS into older websites is a slow tedious process. 26 | There is also the risk of breaking the old HTML code altogether and thus making the site dead. It’s best to wait till you redesign your website from scratch. 27 | As you can see from above points, the advantages of CSS development outweigh its limitations. It is a very useful web development tool that every programmer must master along with basic HTML. 28 | 29 | 30 | -------------------------------------------------------------------------------- /views/questions/technical/inheritance.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Inheritance | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Inheritance

26 | 27 | More technical interview questions 28 | 29 |

What is inheritance, and why is it important in OOP?

30 |

31 | Inheritance further extends the sort of familial metaphor in OOP, and 32 | much like the actual concept, it just means that child classes get 33 | what their parents had (with the exception that no one need die for OOP 34 | inheritance to take place, and child classes needn't fight over who gets 35 | what). 36 |

37 |

38 | It's important to note that inheritance is for "is-a" relationships, not 39 | for "has-a" relationships. For example, the class "Bathroom" should 40 | inherit from the "Room" class (because a bathroom is a room), but a "Shower" 41 | class should NOT inherit from "Bathroom" (because though a bathroom has 42 | a shower, the statement "a shower is a bathroom" is both inaccurate and 43 | markedly insalubrious). 44 |

45 |
46 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /views/questions/technical/java-annotations.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Java Annotations | Software Interview Technical Questions 7 | 8 | 12 | 13 | 14 | 15 | 16 | 21 | 27 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 50 | 51 |
52 |

Java Annotations

53 | 54 | More technical interview questions 55 | 56 |

57 | What is Java Annotations? 58 |

59 |

60 | Java Annotations provide information about the code and they have no direct effect on the code they annotate. Annotations are introduced in Java 5. Annotation is metadata about the program embedded in the program itself. It can be parsed by the annotation parsing tool or by the compiler. We can also specify annotation availability to either compile time only or till runtime also. 61 |

62 |

63 | Annotations have a number of uses, among them: 64 |

    65 |
  • Information for the compiler — Annotations can be used by the compiler to detect errors or suppress warnings.
  • 66 |
  • Compile-time and deployment-time processing — Software tools can process annotation information to generate code
  • 67 |
  • Runtime processing — Some annotations are available to be examined at runtime.
  • 68 |
69 |

70 |

Java defines seven built-in annotations:

71 |

72 |

    73 |
  • Three are included in java.lang: @Deprecated, @Override and @SuppressWarnings
  • 74 |
  • Four are imported from java.lang.annotation: @Retention, @Documented, @Target, and @Inherited.
  • 75 |
76 |

77 | 78 |
79 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /views/questions/technical/java-collections.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Java Collections Framework | Software Interview Technical Questions 7 | 8 | 12 | 13 | 14 | 15 | 16 | 21 | 27 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 50 | 51 |
52 |

Java Collections Framework

53 | 54 | More technical interview questions 55 | 56 |

57 | What is Java Collections Framework? 58 |

59 |

60 | Java Collections Framework is very rich with features, it is designed for representing and manipulating the collections, helps developer with providing many inbuilt features, function to manage data. 61 |

62 |

63 | It has got many advantages as listed below: 64 |

    65 |
  • Reduces programming effort
  • 66 |
  • Increases performance
  • 67 |
  • Provides interoperability between unrelated APIs
  • 68 |
  • Reduces the effort required to learn APIs
  • 69 |
  • Reduces the effort required to design and implement APIs
  • 70 |
  • Reuse
  • 71 |
72 |

73 |

Interfaces in framework:

74 |

75 | Java Collections framework has got many interfaces which we can use based on our required implementation, like Collection, Set, List, Map, Queue, Dequeue, Iterator, SortedSet, SortedMap etc 76 |

77 |
78 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /views/questions/technical/js-variables.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Javascript Variables | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 |

Javascript Variables

27 | 28 |

How do you create variables and what are the differences between methods?

29 | 30 |

* let and const available in ES2015 or ES6

31 | 32 |
33 | 34 |

How to set a variable:

35 | 36 |
37 | 38 |

var declaration

39 |
40 |
41 | 42 |
43 | 44 |

Variable Declaration Types:

45 | 46 |
47 | 48 |

var, let, const

49 |
50 |
51 | 52 |

What's the difference?

53 | 54 |

When discussing the differences in declaration methods, you primarily need some knowledge of scope. In Javascript there are two kinds of scope – global scope, and function scope. Function scoped variables cannot be accessed outside of the function in which they are create.

55 | 56 |

The difference between var and let is its focus in scope. Var is scoped to the function as a whole, while let is scoped to the block it was created in. A block in this case is easily referenced as anything within curly brackets {}. Let is more tightly defined, throwing a reference error when returned undefined. Var would handle this by finding a fallback and is accessible before its declaration.

57 | 58 |

Const is very similar to let in that it is block scoped and returns a reference error before its declaration. The major difference is that a let variable can be re-assigned while a const variable cannot. It remains constant. This is perfect for immutable arrays or objects.

59 | 60 |
61 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /views/questions/technical/linkedLists.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Linked Lists | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Linked Lists

26 | 27 | More technical interview questions 28 | 29 |

What is a Linked List?

30 |

31 | Linked List is a data structure which consists of nodes and each node holds some data and a pointer to another node in the list. 32 |

33 |

What limitations of arrays?And how linked lists solved those limitations?

34 |
35 |
    36 |
  1. We must know the size of the array during the compilation time. But in the linked lists there is no need to specify the size of the list for the compilation time. Linked lists can store data without specifying the amount of data
  2. 37 |
  3. The data in the array are seperated in the computer memory by the same distance, which means that inserting an array requires the shifting of other data in the array. But in the linked lists the nodes can be stored anywhere in the memory, so there is no need to shift the other nodes
  4. 38 |
39 |
40 | 41 |
42 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /views/questions/technical/page_load.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Page Load | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Name 3 ways to decrease page load (perceived or actual load time).

26 | 27 | More technical interview questions 28 | 29 |

30 | Page load time can be decreased in a number of ways. Limiting the number of requests on page is often the first step a developer will take. 31 | Serving minified images and code is another useful step that will decrease the actual load time of a page. 32 |
33 | While both of the above mentioned methods will create a finite decrease in load time, there are other methods that may result in a perceived decrease in page load. 34 | The most frequently used methods is to display a spinner or loading animation. Users will understand that something is happening behind the scenes and display more patience than if the page was static. 35 |

36 |
37 |

38 | An 39 | Approachable Open Source project from 40 | Approachable IO 41 |

42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /views/questions/technical/polymorphism.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Polymorphism | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Polymorphism

26 | 27 | More technical interview questions 28 | 29 |

What is polymorphism, and why is it important in OOP?

30 |

31 | Polymorphism comes from the Greek roots "poly," which means "many" and 32 | "morphe," which means "forms." It's a concept that allows for the 33 | construction of general data structures and methods, which is invaluable 34 | in OOP. 35 |

36 |

37 | In the context of programming, polymorphism is the capacity of a given 38 | object to be regarded as an instance of its own class, an instance of 39 | its superclass, or an instance of its superclass's superclass (and so 40 | on and so forth up the hierarchy). This is valuable because it allows 41 | for the creation of interfaces that can be used to provide an 42 | instruction set of sorts for numerous subclasses. In other words, it 43 | makes it possible to use the same general formulae to construct similar 44 | objects, which means we don't need to rewrite the same functionality 45 | over and over again. This minimizes the potential for some miniscule 46 | difference being introduced (as will invariably occur when different 47 | people work on the same code) into the codebase. It may not sound like 48 | a huge problem, but it's actually one of the most insidious, ubiquitous, 49 | and apoplectic-rage inducing problems in team programming. It's the 50 | reuse and recycling of code that polymorphism enables that makes it so 51 | valuable in programming! 52 |

53 |
54 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /views/questions/technical/recursion.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Recursion | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Recursion

26 | 27 | More technical interview questions 28 | 29 |

What is Recursion?

30 |

31 | Recursion is the process of defining a problem (or the solution to a problem) in terms of (a simpler version of) itself. 32 |

33 |

34 | Recursion means "defining a problem in terms of itself". This can be a very powerful tool in writing algorithms. Recursion comes directly from Mathematics, where there are many examples of expressions written in terms of themselves. For example, the Fibonacci sequence is defined as: F(i) = F(i-1) + F(i-2) 35 |

36 |

Here is an example code to calculate the power of a number provided with the exponent

37 |
38 |           def power(base,exp):
39 |               if(exp==1):
40 |                   return(base)
41 |               if(exp!=1):
42 |                   return(base*power(base,exp-1))
43 |           base=int(input("Enter base: "))
44 |           exp=int(input("Enter exponential value: ")
45 |           print("Result:",power(base,exp))
46 |         
47 | 48 |
49 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /views/questions/technical/regular-expressions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Regular Expressions | Software Interview Technical Questions 8 | 9 | 10 |

Regular Expressions (Regex)

11 | 12 | More technical interview questions 13 | 14 | 15 |

What are regular expressions?

16 |

They are strings and characters used as a search pattern which has multiple uses such 17 | as for searching text, matching certain words and values, or replacing text. 18 |

19 | 20 |

How do you use regular expressions?

21 | 22 |

Regex characters are placed in diagonal brackets '/regex characters/'. 23 | There are two main methods to test expressions with

24 | 25 |

1) .test()

26 |

This method will return a boolean. First, you will define a set of characters you want to match

27 | let regexEx = /char/ 28 |

Then, use the test method on regexEx, it will return true if characters 29 | match, false if they dont

30 | regexEx.test('character') 31 |

The above example will return true since 'char' is within the 'character' argument.

32 | 33 |

2) .match()

34 |

This take an expression to match as an argument, and will return an array with the first value being the match found. 35 | There are multiple expressions that can be used, check out regex101 to see different expressions 36 | which can be used and practice with them.

37 |

In the following example, a 'wildcard' is used which uses a period (.) to match any single character.

38 | let regexEx = /./
39 | let stringEx = 'character'
40 | stringEx.match(regexEx) //[ 'c', index: 0, input: 'character', groups: undefined ] 41 |

The above example returns an array, where the first value will be the value returned, which 42 | in the above case is 'c' because the period matches the first character and only that character. 43 |

44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /views/questions/technical/sdlc.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Software Development Life Cycle | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Software Development Life Cycle

26 | 27 | More technical interview questions 28 | 29 |

What is software process or Software Development Life Cycle (SDLC)?

30 |

31 | Software Development Life Cycle, or software process is the systematic development of software by following every stage in 32 | the development process namely, Requirement Gathering, System Analysis, Design, Coding, Testing, Maintenance 33 | and Documentation in that order. 34 |

35 |

What are SDLC models available?

36 |

37 | There are several SDLC models available such as Waterfall Model, Iterative Model, Spiral model, V-model and Big-bang 38 | Model etc. 39 |

40 |

What are various phases of SDLC?

41 |

42 | The generic phases of SDLC are: Requirement Gathering, System Analysis and Design, Coding, Testing and implementation. The 43 | phases depend upon the model we choose to develop software. 44 |

45 |

Which SDLC model is the best?

46 |

47 | SDLC Models are adopted as per requirements of development process. It may very software-to-software to ensuring which model 48 | is suitable. 49 | 50 |

We can select the best SDLC model if following answers are satisfied -

51 |
    52 |
  • Is SDLC suitable for selected technology to implement the software ?
  • 53 |
  • Is SDLC appropriate for client’s requirements and priorities ?
  • 54 |
  • Is SDLC model suitable for size and complexity of the software ?
  • 55 |
  • Is the SDLC model suitable for type of projects and engineering we do ?
  • 56 |
  • Is the SDLC appropriate for the geographically co-located or dispersed developers ?
  • 57 |
58 |

59 |
60 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /views/questions/technical/unshift.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Unshift() method | Software Interview Technical Questions 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 27 | 28 |
29 |

Unshift method in JavaScript

30 |
31 | 32 | More technical interview questions 33 | 34 | 35 | 36 |

Unshift()

37 |

38 | This method is functional at the starting of the array, unlike the push(). It adds the desired number of elements to the 39 | top of an array. For example - 40 |

41 |
var name = [ "john" ];
42 |         name.unshift( "charlie" );
43 |         name.unshift( "joseph", "Jane" );
44 |         console.log(name);
45 |

46 | The output is shown below: 47 |

48 |
[" joseph "," Jane ", " charlie ", " john "]
49 |
50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /views/questions/technical/what-are-crud-operations.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | What are CRUD operations? | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What are CRUD operations?

26 | 27 | 28 | More technical interview questions 29 | 30 | 31 |

What are CRUD operations?

32 |

CRUD is an acronym representing the four basic functions of persisted storage (most commonly a database).

33 |
    34 |
  • 35 | Create - In SQL, this translates to an INSERT statement. This is how data is initially loaded to storage. 36 |
  • 37 |
  • 38 | Read - In SQL, this translates to a SELECT statement. This is how data is retrieved and ultimated consumed by an application. 39 |
  • 40 |
  • 41 | Update - In SQL, this translates to an UPDATE statement. This is how data is modified in storage. 42 |
  • 43 |
  • 44 | Delete - In SQL, this translates to a DELETE statement. This is how data is hard-deleted (permanently removed) from storage. This should not be confused with a soft-delete which may be implemented as an update to an "Active" or "Enabled" property. 45 |
  • 46 |
47 | 48 |
49 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /views/questions/technical/what-are-primitive-datatypes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Primitive Data Types JavaScript | Software Interview Technical Questions 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 27 | 28 |
29 |

What Are 6 Primitive Data Types in JavaScript?

30 |
31 | 32 | More technical interview questions 33 | 34 | 35 | 36 |

Primitive Data Types in JavaScript

37 |

38 | There are six (6) types considered primitive types, which have no methods of their own and are not objects. These are: 39 |

    40 |
  • Boolean — true or false
  • 41 |
  • Null — no value
  • 42 |
  • Undefined — a declared variable but hasn’t been given a value
  • 43 |
  • Number — integers, floats, etc
  • 44 |
  • String — an array of characters i.e words
  • 45 |
  • Symbol — a unique value that's not equal to any other value
  • 46 |
47 |

48 |
49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /views/questions/technical/what-are-the-components-of-a-css-style.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | What is CSS and Its Purpose | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What is CSS and Its Purpose

26 | 27 | 28 | More technical interview questions 29 | 30 | 31 |

What is CSS

32 |

CSS stands for Cascading Style Sheets and is a style language that expresses the presentation of structured documents. The most common use of CSS is with HTML for web design, though these sheets can also be used with other markup languages such as XML.

33 | 34 |

Why use CSS

35 |

CSS allows styles to be added, momdified, or removed quickly for an entire page or site. This reduction in coding, which was once very repetivie in HTML, saves the programmer time and reduces keyed errors. We gain the added benefit of a faster load time for websites as a style can be loaded once and saved in cache for use throughout an entire site instead of loading a style per element.

36 | 37 |

How Do I Add CSS to HTML files

38 |
    39 |
  • 40 | Inline - Adding a <style> attribute to an element in your HTML file 41 |
    42 | 43 | <h1 style="color:red;"> is a Red Heading</h1> 44 | 45 |
  • 46 |
  • 47 | Internal - Adding the <style> element to your <head> section 48 |
    <head>
    49 |     <style>
    50 |         h1 {color: red;}
    51 |     </style>
    52 | </head>
    53 |
  • 54 |
  • 55 | External - Adding <link> to an external CSS sheet in your <head> section 56 |
    <head>
    57 |     <link rel="stylesheet" href="styles.css">
    58 | </head>
    59 |
  • 60 |
61 |

What is CSS specificity?

62 |

CSS specificity is the set of rules applied to CSS selectors in order to determine which style is applied to an element. The more specific a CSS style is, the higher point value it gets.

63 | 64 |

What are the components of a CSS Style?

65 |

Every style in CSS is made up of three parts :

66 |
    67 |
  • 68 | Selector − This is the tag at which that particular style will be applied. For instance, tags like <table> and <body> could be selectors. 69 |
  • 70 |
  • 71 | Property - This is essentially the attribute under an HTML tag which will be modified using the CSS styling code. These could be color, width, text-align etc. 72 |
  • 73 |
  • 74 | Value - These are assigned to those attributes/properties to provide styling. For example, Blue could be assigned to the color property. 75 |
  • 76 |
77 |
78 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /views/questions/technical/what-is-DOM.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | hat is the Document Object Model (DOM)? 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What is the Document Object Model (DOM)?

26 | 27 | 28 | More technical interview questions 29 | 30 | 31 |

What is the "Document Object Model" or DOM?

32 | 33 |

The Document Object Model (DOM) is a programming interface for HTML and XML documents. It represents the page so that programs can change the document structure, style, and content. The DOM represents the document as nodes and objects. That way, programming languages can connect to the page. 34 | 35 | A Web page is a document. This document can be either displayed in the browser window or as the HTML source. But it is the same document in both cases. The Document Object Model (DOM) represents that same document so it can be manipulated. The DOM is an object-oriented representation of the web page, which can be modified with a scripting language such as JavaScript.

36 | 37 |

Why is it important to web development?

38 |

All of the properties, methods, and events available for manipulating and creating web pages are organized into objects (for example, the document object that represents the document itself, the table object that implements the special HTMLTableElement DOM interface for accessing HTML tables, and so forth). This documentation provides an object-by-object reference to the DOM. 39 | 40 | The modern DOM is built using multiple APIs that work together. The core DOM defines the objects that fundamentally describe a document and the objects within it. This is expanded upon as needed by other APIs that add new features and capabilities to the DOM. For example, the HTML DOM API adds support for representing HTML documents to the core DOM.

41 | 42 |

Code example

43 |
    44 |
  • 45 | Proper use 46 |
    47 |                         var paragraphs = document.getElementsByTagName("p");
    48 |                     // paragraphs[0] is the first 

    element 49 | // paragraphs[1] is the second

    element, etc. 50 | alert(paragraphs[0].nodeName); 51 | 52 |

    53 |
  • 54 |
55 |
56 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /views/questions/technical/what-is-a-cdn.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | What is a CDN and what advantages or disadvantages does it have? 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 |

What is a CDN and what advantages or disadvantages does it have?

18 | A CDN is a content delivery network, it cashes content from large websites. It can help 19 | increase the speed,performance, and user experience of the website. However, CDN services 20 | are typically pretty expensive. 21 |
22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /views/questions/technical/what-is-agile-software-development.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | What is Agile software development? | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What is Agile software development?

26 | 27 | 28 | More technical interview questions 29 | 30 | 31 |

What does it mean to be Agile in the context of software development?

32 |

Being Agile means your development team collaborates closely with the end users of your product to iterate quickly and roll out value in small chunks. This allows the software product to respond quickly to changing requirements and ensure that effort developing invalid solutions is minimized as much as feasible.

33 | 34 |

How does this contrast with other software development methodologies?

35 |

The most prevalent competing methodology to Agile is Waterfall. In that approach, the development process is strictly linear from requirements collection to end user delivery. This approach is typically less-favored because of the high risk to the value of the resulting solution which grows proportionally to the scale and timeline of the project.

36 | 37 |

How does this relate to scrum?

38 |

Scrum is a popular framework in which development progress is managed. At a high level, a development team will have recurring work cycles known as "sprints" which typically last 2-3 weeks in length. These sprints are scoped narrowly enough so that some value can be delivered to users upon sprint completion.

39 | 40 |
41 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /views/questions/technical/what-is-an-api.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | What is an API | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What is an API

26 | 27 | More technical interview questions 28 | 29 |

What is an API?

30 |

31 | An API, also known as an Application Program Interface, is an exposed method (or collection of methods) for use by an external service to make use of your service. APIs can take many forms with varying levels of robustness and convenience to developers. When APIs are public, they will typically be accompanied with documentation and a promise to not make breaking changes which impact dependent services. 32 |

33 |
34 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /views/questions/technical/what-is-cdn.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | CDNs | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Content Delivery Networks

26 | 27 | More technical interview questions 28 | 29 |

What is a CDN and what advantages or disadvantages does it have?

30 |

31 | A Content Delivery Network(CDN) is a cluster of geographically distributed servers being used to deliver static content like images, scripts, CSS and libraries quickly to visitors from the nearest server. In simpler words; when visitors browse any website, CDN chooses the nearest server to deliver static content used in website. CDN allows the visitors faster page loads and enhanced user experience... 32 |

33 |

34 | What are the Advantages of Content Delivery Network (CDN)? 35 |

36 |
    37 |
  • CDN is extremely useful for the Websites with larger Images and videos but struggling with loading speeds. Despite the obvious benefits, following are some potential downside of CDN.
  • 38 |
  • CDN copies your static contents to geographically dispersed servers, hence your website load is divided among them. Ultimately, your website is highly available to your visitors.
  • 39 |
  • CDN service is probably primary step to improve your SEO strategies and lift Google page rankings. Because, poor and slow loading websites will face more challenges to rank good in search engines.
  • 40 |
41 |

42 | Having learning the advantages/benefits of CDN (Content Delivery Network), it will be cool to also know what are the disadvantages/drawsback of using CDN (Content Delivery Network), because knowing the Do's and Dont's of a thing makes one utilize it very well and be conscious of what it can do. 43 |

44 |

45 | What are the Disadvantages of Content Delivery Network (CDN)? 46 |

47 |
    48 |
  • Storing some sensitive files on CDN network may open potential security vulnerabilities. Because, does not matter what you store at CDN; it will be copied to all distributed servers.
  • 49 |
  • CDN network contains most updated static data. Hence, you may find difficulties in application development. In other words, to preview latest changes you made, you will need Internet connection as you won’t have a local copy. This could be a headache for non technical writer or Blogger.
  • 50 |
  • Using CDN, you are creating additional “point of failure”. If the CDN network goes down you may lose website visibility.
  • 51 |
52 |
53 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /views/questions/technical/what-is-the-difference-and-similarity-between-agile-and-scrum.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | What is the difference and similarity between Agile and Scrum? | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What is Agile software development?

26 | 27 | 28 | More technical interview questions 29 | 30 | 31 |

Difference between Agile and Scrum –

32 |

Agile is a broad spectrum, it is a methodology used for project management while Scrum is just a form of the Agile that describes the process and its steps more concisely. Agile is a practice whereas scrum is a procedure to pursue this practice.

33 | 34 |

Similarity between Agile and Scrum –

35 |

The Agile involves completing projects in steps or incrementally. The Agile methodology is considered to be iterative in nature. Being a form of Agile, Scrum is same as that of the Agile. It is also incremental and iterative.

36 |
37 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /views/questions/technical/when-to-use-using.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | What is the "using" statement and its purpose? | Software Interview Technical Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

What is the "using" statement and its purpose?

26 | 27 | 28 | More technical interview questions 29 | 30 | 31 |

What is the "using" statement

32 |

It provides a convenient syntax that ensures the correct use of IDisposable objects. It ensures that the Dispose() method is called on the object even if an excepton occurs during code execution.

33 | 34 |

When should it be used

35 |

It should be used whenever dealing with objects that implement IDisposable to ensure they are cleaned up properly after use. It also makes code easier to read and maintain.

36 | 37 |

Code example

38 |
    39 |
  • 40 | Proper use 41 |
    using (var connection = new SqlConnection(connectionString))
    42 | {
    43 |     connection.Open();
    44 |     // Do stuff here
    45 | }
    46 |
  • 47 |
  • 48 | Equivalent code to the above example, but without the using statement - Avoid this 49 |
    var connection = new SqlConnection(connectionString);
    50 | try
    51 | {
    52 |     connection.Open();
    53 |     // Do stuff here
    54 | }
    55 | finally
    56 | {
    57 |     connection.Dispose();
    58 | }
    59 |
  • 60 |
61 | 62 |
63 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /views/questions/whiteboard/breadth-first-search.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Breadth First Search | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Breadth First Search in Python

26 | 27 | More whiteboard interview questions 28 | 29 | 30 |

Question:

31 |

Using Python, create breath first search algorithm in tree.

32 | 33 |

Approach:

34 |

Create tree using dictionary in python,than use the property of list (append or pop).

35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /views/questions/whiteboard/concatenate.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Concatenate | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Concatenate

26 | 27 | More whiteboard interview questions 28 | 29 |

Question:

30 | 31 |

How can you concatenate two strings?

32 | 33 |
34 | 35 | 36 |
37 |

38 | Use the (.) dot operator. For instance: 39 |

40 |             $foo = "Hello";
41 |             $bar = "World!";
42 |             echo $foo . " " . $bar;
43 | 
44 |         
45 | Would result into "Hello World!" 46 |

47 |
48 |
49 |
50 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /views/questions/whiteboard/find-duplicates-from-multiple-arrays.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Find Duplicates from Multiple Arrays | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Find Duplicates from Multiple Arrays

26 | 27 | More whiteboard interview questions 28 | 29 | 30 |

Question:

31 |

Write a function to return duplicates (if any, in any order) that appear in multiple arrays (represented as a 2D array). Each array contains only unique integers.

32 |

Example:

33 |

Input: [[9,3,5,7,8,22], [29,13,6,4,3,22,9], [15,3,9,22,44]]

34 |

Output: [3,9,22]

35 | 36 |

Approach:

37 |

Since the input is a 2D array (an array within an array), we'll have to use a nested loop to iterate over all the numbers in each array. We'll also have to keep a count of every duplicate we find to make sure it appears in each array inside the input array.

38 | 39 |
40 | 41 | 42 |
43 | 44 |
45 |
46 |
47 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /views/questions/whiteboard/fizz-buzz.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Fizz Buzz | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Fizz Buzz

26 | 27 | More whiteboard interview questions 28 | 29 |

Question:

30 | 31 |

Write a loop that prints numbers from 1 to 100. If the number is divisible by 3, print 'Fizz'. If the number is divisible by 5, print 'Buzz'. If the number is divisible by 15, print 'FizzBuzz'

32 | 33 |

Approach:

34 | 35 |

Most programming languages have either a modulus operator or function that can be called. This will give you the remainder from dividing one number by another, for example, in Javascript you would use var a % var b. If the number is divisible, there will be no remainder.

36 | 37 |

Another point to consider is how your loop will be evaluated. In most cases it will be necessary to check the given conditions in reverse order. Check that the number is divisible by 15 first, then check if it is divisible by 5, then check if divisible by 3, and, if not, print the number. This is a little gotcha, because 15 is divisible by 3 and 5, you will never get to that part of your conditional statement, unless it is first.

38 | 39 |
40 | 41 | 42 |
43 | 44 |
45 |
46 |
47 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /views/questions/whiteboard/maxNumberArray.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Max Number in Array | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Maximum Number in an Array

26 | 27 | More whiteboard interview questions 28 | 29 | 30 |

Question:

31 |

Write a function that returns the maximum number in an array.

32 | 33 |

Approach:

34 |

A simple way to get started would be to take a variable and then intialize it to the first index of the array. Loop through the array and if the number at the current index is greater than the intialized number at the start, then reinitialized the variable to the number at the current index. After doing this for the entire array, the max number would be saved in the variable. In python, you can use "max" function to get the maximum number in an array!

35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 | 43 | 44 | 45 |
46 | 47 |
48 |
49 | 50 |
51 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /views/questions/whiteboard/number-swap-no-temp.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Number swap without temporary variable | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Number swap without temporary variable

26 | 27 | More whiteboard interview questions 28 | 29 | 30 |

Question:

31 |

Using C#, swap the values of x and y without using a tempoary or third variable. x = 20 and y = 10

32 | 33 |

Approach:

34 |

Most programming languages have a feature to iterate over a string. Utilize it creatively to check if the string is the same right-to-left and left-to-right.

35 | 36 |
37 | 38 | 39 |
40 |
41 |                  using System; 
42 |                    
43 |                  class NumberSwap { 
44 |                  public static void Main() 
45 |                      { 
46 |                          int x = 20; 
47 |                          int y = 10; 
48 |                          Console.WriteLine("Before swap:"); 
49 |                          Console.WriteLine("x value: " + x); 
50 |                          Console.WriteLine("y value: " + y); 
51 |                          x = x + y; 
52 |                          y = x - y; 
53 |                          x = x - y; 
54 |                          Console.WriteLine("After swap:"); 
55 |                          Console.WriteLine("x value: " + x); 
56 |                          Console.WriteLine("y value: " + y); 
57 |                      } 
58 |                  } 
59 |                 
60 | 61 |
62 |
63 |
64 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /views/questions/whiteboard/palindrome.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Palindrome Check | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Palindrome Check

26 | 27 | More whiteboard interview questions 28 | 29 | 30 |

Question:

31 |

Write a function that checks if a string is a palindrome, which means that it is the same word whether read left-to-right or right-to-left.

32 | 33 |

Approach:

34 |

Most programming languages have a feature to iterate over a string. Utilize it creatively to check if the string is the same right-to-left and left-to-right.

35 | 36 |
37 | 38 | 39 |
40 | 41 |
42 | 43 | 44 | 45 |
46 | 47 |
48 |
49 |
50 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /views/questions/whiteboard/rhyme-time.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Rhyme Time 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Rhyme Time

26 | 27 | More whiteboard interview questions 28 | 29 |

Question:

30 | 31 |

32 | Write a function that returns the number of strings in the array that rhyme with the string. 33 |
For the purpose of this exercise, rhyming is considered to be identical except for the first letter. 34 |
35 |
For example, 'mist' would rhyme with 'gist', but not with 'cyst'. 36 |
37 |
String: 'sane' 38 |
Array: [ 'cane', 'came', 'rain', 'Jane', 'dame', 'main' ] 39 |
40 |
41 |
How would you change the code to make that function work with strings of any length. 42 |
Array: [ 'explain', 'hurricane', 'airplane', 'wane', 'insane', 'blame', 'shame', 'again', 'detain' ] 43 |

44 | 45 |

Approach:

46 | 47 |

To solve this question, you will need to apply two techniques. The first is to loop through the array, the second is to compare the strings.

48 | 49 |

Think about how you can manipulate strings to access only the part of the string that you're interested in.

50 | 51 |
52 | 53 | 54 |
55 | 56 |
57 |
58 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /views/questions/whiteboard/sql-joins.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | T-SQL Joining Tables | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

T-SQL Joining Tables

26 | 27 | More whiteboard interview questions 28 | 29 |

Question:

30 | 31 |

Based on the two tables listed below, write a SQL query to return a list of all invoices. Each invoice should 32 | return with an ID, billing date, customer's name, an dthe name of the customer that refered them, if available. 33 |

34 | 35 | SQL Table Diagram 36 | 37 |

Approach:

38 | 39 |

This question is a rather simple one and is normally used to simply see the programming style of each applicant. 40 | A few key things to consider when writing your statement: 41 | 42 |

    43 |
  • How many joins are needed? Should they be inner or outer joins?
  • 44 |
  • Should you use a table alias? If so, how simple should it be?
  • 45 |
  • Are column names ambiguous and need some additonal clarifiaciton / alias?
  • 46 |
47 | 48 |

49 | 50 | 51 |
52 | 53 | 54 |
55 | 56 | SELECT i.Id, i.BillingDate, c.Name, r.Name AS ReferredByName
57 | FROM Invoices i
58 | INNER JOIN Customers c ON i.CustomerId = c.Id
59 | LEFT JOIN Customers r ON c.ReferredBy = r.Id
60 | ORDER BY i.BillingDate; 61 |
62 |

Note: This first join assumes that all invoices will have a corresponding customer represented. This may not 63 | actually be the case and would exclude invoices with a "bad" cusotmer id. If these are not important, then the 64 | above query will work. 65 |

66 |
67 | 68 | 69 | 70 |
71 | 72 | SELECT i.Id, i.BillingDate, c.Name, r.Name AS ReferredByName
73 | FROM Invoices i
74 | LEFT JOIN Customers c ON i.CustomerId = c.Id
75 | LEFT JOIN Customers r ON c.ReferredBy = r.Id
76 | ORDER BY i.BillingDate; 77 |
78 |

Using double left joins will ensure that all invoices will display even if they do not have a matching customer 79 | listed in the customers table. These may or may not be important to the client. They may also wish to have the 80 | NULL values replaced with different values if the results are going to be client facing. In this case you could 81 | include the ISNULL funciton. 82 |

83 |
84 | 85 | 86 |
87 |
88 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /views/questions/whiteboard/sum-strings.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Sum List of Strings | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Sum List of Strings

26 | 27 | More whiteboard interview questions 28 | 29 |

Question:

30 | 31 |

Write a function that takes in a list of strings that represent numbers and return the total after adding them all.

32 | 33 |

Approach:

34 | 35 |

Most programming languages have a feature to iterate over a list, and to convert from a string to a number. Utilize them both to solve this problem.

36 | 37 |
38 | 39 | 40 |
41 | 42 |
43 | 44 | 45 | 46 |
47 | 48 |
49 |
50 |
51 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /views/questions/whiteboard/takeout-object-model.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Restaurant/Customer Object Model | Software Interview Whiteboard Questions 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 |

Takeout Order Object Model

26 | 27 | More whiteboard interview questions 28 | 29 |

Question:

30 | 31 |

How would you structure a system in which you needed to manage a take-out restaurant?

32 |

33 | (Hint: Break down the problem into actors, or in other words, what 34 | different people/objects need to interact in this problem, and what they 35 | need to be able to do! Start with Order and Customer objects!) 36 | 37 |

38 | 39 | 40 |
41 | 42 | 43 | 44 |

Above is one possible solution from TutorialsPoint!

45 |

Click the image for their UML Object Modeling tutorial!

46 |
47 |
48 |
49 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /views/whiteboard.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Software Interview Whiteboard Questions | Approachable IO 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 82 | 89 | 90 | 91 | 92 | --------------------------------------------------------------------------------