├── .github ├── FUNDING.yml └── workflows │ └── links_checker.yml ├── .gitignore ├── LICENSE.txt ├── README.md ├── extras └── cheat sheets │ ├── C Reference Card (ANSI) 2.2.pdf │ ├── Coding Interview Python Language Essentials.pdf │ ├── Cpp_reference.pdf │ ├── Java Fundamentals Cheatsheet.pdf │ ├── STL Quick Reference 1.29.pdf │ ├── big-o-cheatsheet.pdf │ ├── bits-cheat-sheet.pdf │ ├── git-cheat-sheet-education.pdf │ ├── python-cheat-sheet-v1.pdf │ └── system-design.pdf ├── programming-language-resources.md └── translations ├── README-af.md ├── README-ar.md ├── README-bg.md ├── README-bn.md ├── README-cn.md ├── README-de.md ├── README-el.md ├── README-es.md ├── README-fa.md ├── README-fr.md ├── README-he.md ├── README-hi.md ├── README-id.md ├── README-it.md ├── README-ja.md ├── README-kh.md ├── README-ko.md ├── README-pl.md ├── README-ptbr.md ├── README-ru.md ├── README-th.md ├── README-tr.md ├── README-tw.md ├── README-uk.md ├── README-ur.md ├── README-uz.md ├── README-vi.md └── how-to.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: jwasham 2 | -------------------------------------------------------------------------------- /.github/workflows/links_checker.yml: -------------------------------------------------------------------------------- 1 | name: Links Checker 2 | 3 | on: 4 | ## Allow triggering this workflow manually via GitHub CLI/web 5 | workflow_dispatch: 6 | 7 | ## Run this workflow automatically every month 8 | schedule: 9 | - cron: '0 0 1 * *' 10 | 11 | jobs: 12 | link_checker: 13 | name: Check links and create automated issue if needed 14 | runs-on: ubuntu-latest 15 | env: 16 | REPORT_FILE: links-report 17 | steps: 18 | ## Check out code using Git 19 | - uses: actions/checkout@v3 20 | 21 | - name: Check all links at README.md but skips translations files 22 | id: lychee 23 | uses: lycheeverse/lychee-action@v1.4.1 24 | with: 25 | output: ${{ env.REPORT_FILE }} 26 | format: markdown 27 | ## Do not fail this step on broken links 28 | fail: false 29 | ## Allow pages replying with 200 (Ok), 204 (No Content), 30 | ## 206 (Partial Content) in at most 20 seconds with HTML content. 31 | args: >- 32 | --verbose 33 | --accept 200,204,206 34 | --headers "accept=text/html" 35 | --timeout 20 36 | --max-concurrency 10 37 | --no-progress 38 | README.md 39 | env: 40 | ## Avoid rate limiting when checking github.com links 41 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 42 | 43 | - name: Lychee's exit code 44 | ## https://github.com/lycheeverse/lychee#exit-codes 45 | run: echo Lychee exit with ${{ steps.lychee.outputs.exit_code }} 46 | 47 | - name: Find the last report issue open 48 | uses: micalevisk/last-issue-action@v1.2 49 | id: last_issue 50 | with: 51 | state: open 52 | labels: | 53 | report 54 | automated issue 55 | env: 56 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 57 | 58 | - name: Create issue from report file 59 | if: ${{ steps.last_issue.outputs.has_found == 'false' }} 60 | uses: peter-evans/create-issue-from-file@v4 61 | with: 62 | title: Link checker report 63 | content-filepath: ${{ env.REPORT_FILE }} 64 | issue-number: ${{ steps.last_issue.outputs.issue_number }} 65 | labels: | 66 | report 67 | automated issue 68 | 69 | - name: Update last report open issue created 70 | if: ${{ steps.last_issue.outputs.has_found == 'true' }} 71 | uses: peter-evans/create-issue-from-file@v4 72 | with: 73 | title: Link checker report 74 | content-filepath: ${{ env.REPORT_FILE }} 75 | issue-number: ${{ steps.last_issue.outputs.issue_number }} 76 | labels: | 77 | report 78 | automated issue 79 | 80 | - name: Close last report open issue 81 | if: ${{ steps.lychee.outputs.exit_code == 0 }} 82 | uses: peter-evans/close-issue@v2 83 | with: 84 | issue-number: ${{ steps.last_issue.outputs.issue_number }} 85 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | *.iml 3 | personal-9894.md 4 | 5 | # Targets Windows & Unix temporary files 6 | ~$* 7 | *~ 8 | 9 | # OS generated files # 10 | ###################### 11 | .DS_Store 12 | .DS_Store? 13 | ._* 14 | .Spotlight-V100 15 | .Trashes 16 | ehthumbs.db 17 | Thumbs.db 18 | 19 | # Sublime Files 20 | .sublime -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Attribution-ShareAlike 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution-ShareAlike 4.0 International Public 58 | License 59 | 60 | By exercising the Licensed Rights (defined below), You accept and agree 61 | to be bound by the terms and conditions of this Creative Commons 62 | Attribution-ShareAlike 4.0 International Public License ("Public 63 | License"). To the extent this Public License may be interpreted as a 64 | contract, You are granted the Licensed Rights in consideration of Your 65 | acceptance of these terms and conditions, and the Licensor grants You 66 | such rights in consideration of benefits the Licensor receives from 67 | making the Licensed Material available under these terms and 68 | conditions. 69 | 70 | 71 | Section 1 -- Definitions. 72 | 73 | a. Adapted Material means material subject to Copyright and Similar 74 | Rights that is derived from or based upon the Licensed Material 75 | and in which the Licensed Material is translated, altered, 76 | arranged, transformed, or otherwise modified in a manner requiring 77 | permission under the Copyright and Similar Rights held by the 78 | Licensor. For purposes of this Public License, where the Licensed 79 | Material is a musical work, performance, or sound recording, 80 | Adapted Material is always produced where the Licensed Material is 81 | synched in timed relation with a moving image. 82 | 83 | b. Adapter's License means the license You apply to Your Copyright 84 | and Similar Rights in Your contributions to Adapted Material in 85 | accordance with the terms and conditions of this Public License. 86 | 87 | c. BY-SA Compatible License means a license listed at 88 | creativecommons.org/compatiblelicenses, approved by Creative 89 | Commons as essentially the equivalent of this Public License. 90 | 91 | d. Copyright and Similar Rights means copyright and/or similar rights 92 | closely related to copyright including, without limitation, 93 | performance, broadcast, sound recording, and Sui Generis Database 94 | Rights, without regard to how the rights are labeled or 95 | categorized. For purposes of this Public License, the rights 96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 97 | Rights. 98 | 99 | e. Effective Technological Measures means those measures that, in the 100 | absence of proper authority, may not be circumvented under laws 101 | fulfilling obligations under Article 11 of the WIPO Copyright 102 | Treaty adopted on December 20, 1996, and/or similar international 103 | agreements. 104 | 105 | f. Exceptions and Limitations means fair use, fair dealing, and/or 106 | any other exception or limitation to Copyright and Similar Rights 107 | that applies to Your use of the Licensed Material. 108 | 109 | g. License Elements means the license attributes listed in the name 110 | of a Creative Commons Public License. The License Elements of this 111 | Public License are Attribution and ShareAlike. 112 | 113 | h. Licensed Material means the artistic or literary work, database, 114 | or other material to which the Licensor applied this Public 115 | License. 116 | 117 | i. Licensed Rights means the rights granted to You subject to the 118 | terms and conditions of this Public License, which are limited to 119 | all Copyright and Similar Rights that apply to Your use of the 120 | Licensed Material and that the Licensor has authority to license. 121 | 122 | j. Licensor means the individual(s) or entity(ies) granting rights 123 | under this Public License. 124 | 125 | k. Share means to provide material to the public by any means or 126 | process that requires permission under the Licensed Rights, such 127 | as reproduction, public display, public performance, distribution, 128 | dissemination, communication, or importation, and to make material 129 | available to the public including in ways that members of the 130 | public may access the material from a place and at a time 131 | individually chosen by them. 132 | 133 | l. Sui Generis Database Rights means rights other than copyright 134 | resulting from Directive 96/9/EC of the European Parliament and of 135 | the Council of 11 March 1996 on the legal protection of databases, 136 | as amended and/or succeeded, as well as other essentially 137 | equivalent rights anywhere in the world. 138 | 139 | m. You means the individual or entity exercising the Licensed Rights 140 | under this Public License. Your has a corresponding meaning. 141 | 142 | 143 | Section 2 -- Scope. 144 | 145 | a. License grant. 146 | 147 | 1. Subject to the terms and conditions of this Public License, 148 | the Licensor hereby grants You a worldwide, royalty-free, 149 | non-sublicensable, non-exclusive, irrevocable license to 150 | exercise the Licensed Rights in the Licensed Material to: 151 | 152 | a. reproduce and Share the Licensed Material, in whole or 153 | in part; and 154 | 155 | b. produce, reproduce, and Share Adapted Material. 156 | 157 | 2. Exceptions and Limitations. For the avoidance of doubt, where 158 | Exceptions and Limitations apply to Your use, this Public 159 | License does not apply, and You do not need to comply with 160 | its terms and conditions. 161 | 162 | 3. Term. The term of this Public License is specified in Section 163 | 6(a). 164 | 165 | 4. Media and formats; technical modifications allowed. The 166 | Licensor authorizes You to exercise the Licensed Rights in 167 | all media and formats whether now known or hereafter created, 168 | and to make technical modifications necessary to do so. The 169 | Licensor waives and/or agrees not to assert any right or 170 | authority to forbid You from making technical modifications 171 | necessary to exercise the Licensed Rights, including 172 | technical modifications necessary to circumvent Effective 173 | Technological Measures. For purposes of this Public License, 174 | simply making modifications authorized by this Section 2(a) 175 | (4) never produces Adapted Material. 176 | 177 | 5. Downstream recipients. 178 | 179 | a. Offer from the Licensor -- Licensed Material. Every 180 | recipient of the Licensed Material automatically 181 | receives an offer from the Licensor to exercise the 182 | Licensed Rights under the terms and conditions of this 183 | Public License. 184 | 185 | b. Additional offer from the Licensor -- Adapted Material. 186 | Every recipient of Adapted Material from You 187 | automatically receives an offer from the Licensor to 188 | exercise the Licensed Rights in the Adapted Material 189 | under the conditions of the Adapter's License You apply. 190 | 191 | c. No downstream restrictions. You may not offer or impose 192 | any additional or different terms or conditions on, or 193 | apply any Effective Technological Measures to, the 194 | Licensed Material if doing so restricts exercise of the 195 | Licensed Rights by any recipient of the Licensed 196 | Material. 197 | 198 | 6. No endorsement. Nothing in this Public License constitutes or 199 | may be construed as permission to assert or imply that You 200 | are, or that Your use of the Licensed Material is, connected 201 | with, or sponsored, endorsed, or granted official status by, 202 | the Licensor or others designated to receive attribution as 203 | provided in Section 3(a)(1)(A)(i). 204 | 205 | b. Other rights. 206 | 207 | 1. Moral rights, such as the right of integrity, are not 208 | licensed under this Public License, nor are publicity, 209 | privacy, and/or other similar personality rights; however, to 210 | the extent possible, the Licensor waives and/or agrees not to 211 | assert any such rights held by the Licensor to the limited 212 | extent necessary to allow You to exercise the Licensed 213 | Rights, but not otherwise. 214 | 215 | 2. Patent and trademark rights are not licensed under this 216 | Public License. 217 | 218 | 3. To the extent possible, the Licensor waives any right to 219 | collect royalties from You for the exercise of the Licensed 220 | Rights, whether directly or through a collecting society 221 | under any voluntary or waivable statutory or compulsory 222 | licensing scheme. In all other cases the Licensor expressly 223 | reserves any right to collect such royalties. 224 | 225 | 226 | Section 3 -- License Conditions. 227 | 228 | Your exercise of the Licensed Rights is expressly made subject to the 229 | following conditions. 230 | 231 | a. Attribution. 232 | 233 | 1. If You Share the Licensed Material (including in modified 234 | form), You must: 235 | 236 | a. retain the following if it is supplied by the Licensor 237 | with the Licensed Material: 238 | 239 | i. identification of the creator(s) of the Licensed 240 | Material and any others designated to receive 241 | attribution, in any reasonable manner requested by 242 | the Licensor (including by pseudonym if 243 | designated); 244 | 245 | ii. a copyright notice; 246 | 247 | iii. a notice that refers to this Public License; 248 | 249 | iv. a notice that refers to the disclaimer of 250 | warranties; 251 | 252 | v. a URI or hyperlink to the Licensed Material to the 253 | extent reasonably practicable; 254 | 255 | b. indicate if You modified the Licensed Material and 256 | retain an indication of any previous modifications; and 257 | 258 | c. indicate the Licensed Material is licensed under this 259 | Public License, and include the text of, or the URI or 260 | hyperlink to, this Public License. 261 | 262 | 2. You may satisfy the conditions in Section 3(a)(1) in any 263 | reasonable manner based on the medium, means, and context in 264 | which You Share the Licensed Material. For example, it may be 265 | reasonable to satisfy the conditions by providing a URI or 266 | hyperlink to a resource that includes the required 267 | information. 268 | 269 | 3. If requested by the Licensor, You must remove any of the 270 | information required by Section 3(a)(1)(A) to the extent 271 | reasonably practicable. 272 | 273 | b. ShareAlike. 274 | 275 | In addition to the conditions in Section 3(a), if You Share 276 | Adapted Material You produce, the following conditions also apply. 277 | 278 | 1. The Adapter's License You apply must be a Creative Commons 279 | license with the same License Elements, this version or 280 | later, or a BY-SA Compatible License. 281 | 282 | 2. You must include the text of, or the URI or hyperlink to, the 283 | Adapter's License You apply. You may satisfy this condition 284 | in any reasonable manner based on the medium, means, and 285 | context in which You Share Adapted Material. 286 | 287 | 3. You may not offer or impose any additional or different terms 288 | or conditions on, or apply any Effective Technological 289 | Measures to, Adapted Material that restrict exercise of the 290 | rights granted under the Adapter's License You apply. 291 | 292 | 293 | Section 4 -- Sui Generis Database Rights. 294 | 295 | Where the Licensed Rights include Sui Generis Database Rights that 296 | apply to Your use of the Licensed Material: 297 | 298 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 299 | to extract, reuse, reproduce, and Share all or a substantial 300 | portion of the contents of the database; 301 | 302 | b. if You include all or a substantial portion of the database 303 | contents in a database in which You have Sui Generis Database 304 | Rights, then the database in which You have Sui Generis Database 305 | Rights (but not its individual contents) is Adapted Material, 306 | 307 | including for purposes of Section 3(b); and 308 | c. You must comply with the conditions in Section 3(a) if You Share 309 | all or a substantial portion of the contents of the database. 310 | 311 | For the avoidance of doubt, this Section 4 supplements and does not 312 | replace Your obligations under this Public License where the Licensed 313 | Rights include other Copyright and Similar Rights. 314 | 315 | 316 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 317 | 318 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 319 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 320 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 321 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 322 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 323 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 324 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 325 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 326 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 327 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 328 | 329 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 330 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 331 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 332 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 333 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 334 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 335 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 336 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 337 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 338 | 339 | c. The disclaimer of warranties and limitation of liability provided 340 | above shall be interpreted in a manner that, to the extent 341 | possible, most closely approximates an absolute disclaimer and 342 | waiver of all liability. 343 | 344 | 345 | Section 6 -- Term and Termination. 346 | 347 | a. This Public License applies for the term of the Copyright and 348 | Similar Rights licensed here. However, if You fail to comply with 349 | this Public License, then Your rights under this Public License 350 | terminate automatically. 351 | 352 | b. Where Your right to use the Licensed Material has terminated under 353 | Section 6(a), it reinstates: 354 | 355 | 1. automatically as of the date the violation is cured, provided 356 | it is cured within 30 days of Your discovery of the 357 | violation; or 358 | 359 | 2. upon express reinstatement by the Licensor. 360 | 361 | For the avoidance of doubt, this Section 6(b) does not affect any 362 | right the Licensor may have to seek remedies for Your violations 363 | of this Public License. 364 | 365 | c. For the avoidance of doubt, the Licensor may also offer the 366 | Licensed Material under separate terms or conditions or stop 367 | distributing the Licensed Material at any time; however, doing so 368 | will not terminate this Public License. 369 | 370 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 371 | License. 372 | 373 | 374 | Section 7 -- Other Terms and Conditions. 375 | 376 | a. The Licensor shall not be bound by any additional or different 377 | terms or conditions communicated by You unless expressly agreed. 378 | 379 | b. Any arrangements, understandings, or agreements regarding the 380 | Licensed Material not stated herein are separate from and 381 | independent of the terms and conditions of this Public License. 382 | 383 | 384 | Section 8 -- Interpretation. 385 | 386 | a. For the avoidance of doubt, this Public License does not, and 387 | shall not be interpreted to, reduce, limit, restrict, or impose 388 | conditions on any use of the Licensed Material that could lawfully 389 | be made without permission under this Public License. 390 | 391 | b. To the extent possible, if any provision of this Public License is 392 | deemed unenforceable, it shall be automatically reformed to the 393 | minimum extent necessary to make it enforceable. If the provision 394 | cannot be reformed, it shall be severed from this Public License 395 | without affecting the enforceability of the remaining terms and 396 | conditions. 397 | 398 | c. No term or condition of this Public License will be waived and no 399 | failure to comply consented to unless expressly agreed to by the 400 | Licensor. 401 | 402 | d. Nothing in this Public License constitutes or may be interpreted 403 | as a limitation upon, or waiver of, any privileges and immunities 404 | that apply to the Licensor or You, including from the legal 405 | processes of any jurisdiction or authority. 406 | 407 | 408 | ======================================================================= 409 | 410 | Creative Commons is not a party to its public 411 | licenses. Notwithstanding, Creative Commons may elect to apply one of 412 | its public licenses to material it publishes and in those instances 413 | will be considered the “Licensor.” The text of the Creative Commons 414 | public licenses is dedicated to the public domain under the CC0 Public 415 | Domain Dedication. Except for the limited purpose of indicating that 416 | material is shared under a Creative Commons public license or as 417 | otherwise permitted by the Creative Commons policies published at 418 | creativecommons.org/policies, Creative Commons does not authorize the 419 | use of the trademark "Creative Commons" or any other trademark or logo 420 | of Creative Commons without its prior written consent including, 421 | without limitation, in connection with any unauthorized modifications 422 | to any of its public licenses or any other arrangements, 423 | understandings, or agreements concerning use of licensed material. For 424 | the avoidance of doubt, this paragraph does not form part of the 425 | public licenses. 426 | 427 | Creative Commons may be contacted at creativecommons.org. -------------------------------------------------------------------------------- /extras/cheat sheets/C Reference Card (ANSI) 2.2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/C Reference Card (ANSI) 2.2.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/Coding Interview Python Language Essentials.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/Coding Interview Python Language Essentials.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/Cpp_reference.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/Cpp_reference.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/Java Fundamentals Cheatsheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/Java Fundamentals Cheatsheet.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/STL Quick Reference 1.29.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/STL Quick Reference 1.29.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/big-o-cheatsheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/big-o-cheatsheet.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/bits-cheat-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/bits-cheat-sheet.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/git-cheat-sheet-education.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/git-cheat-sheet-education.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/python-cheat-sheet-v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/python-cheat-sheet-v1.pdf -------------------------------------------------------------------------------- /extras/cheat sheets/system-design.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanveerpot/coding-interview-university/4a78c9bc5fb648ed6a0e0f984a0cf7debc496de4/extras/cheat sheets/system-design.pdf -------------------------------------------------------------------------------- /programming-language-resources.md: -------------------------------------------------------------------------------- 1 | ## Programming Language Resources 2 | 3 | - C 4 | - [ANSI C Cheat Sheet]() 5 | - [K&R C book (ANSI C)](https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628) 6 | - [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M) 7 | - [Top C Programming Interview Questions](https://www.interviewbit.com/c-interview-questions) 8 | - GDB: 9 | - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=USPvePv1uzE) 10 | - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=y5JmQItfFck) 11 | - [Valgrind (video)](https://www.youtube.com/watch?v=fvTsFjDuag8) 12 | - [Let us C](https://books.google.co.in/books/about/Let_Us_C.html?id=7HrjAAAACAAJ) 13 | - [Complete C programming for beginners](https://youtu.be/KJgsSFOSQv0) 14 | - [Learn C in Detail](https://www.scaler.com/topics/c/) 15 | 16 | - C++ 17 | - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Cpp_reference.pdf) 18 | - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) 19 | - [basics](https://www.tutorialspoint.com/cplusplus/cpp_basic_syntax.htm) 20 | - [pointers](https://www.cprogramming.com/tutorial/lesson6.html) 21 | - [class and object](https://www.cprogramming.com/tutorial/lesson12.html) 22 | - [functions](https://www.cprogramming.com/tutorial/lesson4.html) 23 | - [references](https://www.geeksforgeeks.org/references-in-c/) 24 | - [templates](https://www.cprogramming.com/tutorial/templates.html) 25 | - [compilation](https://www.youtube.com/watch?v=ZTu0kf-7h08) 26 | - [scope & linkage](https://www.learncpp.com/cpp-tutorial/scope-duration-and-linkage-summary/) 27 | - [namespaces](https://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm) 28 | - [OOP](https://www.geeksforgeeks.org/object-oriented-programming-in-cpp/) 29 | - [STL](https://www.hackerearth.com/practice/notes/standard-template-library/) 30 | - [functors](http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html) 31 | - [C++ at Google (video)](https://www.youtube.com/watch?v=NOCElcMcFik) 32 | - [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) 33 | - Google uses clang-format (there is a command line "style" argument: -style=google) 34 | - [Efficiency with Algorithms, Performance with Data Structures (video)](https://youtu.be/fHNmRkzxHWs) 35 | - [Review of C++ concepts (video)](https://www.youtube.com/watch?v=Rub-JsjMhWY) 36 | - [Let us C++](https://books.google.co.in/books/about/Let_Us_C++.html?id=6HrjAAAACAAJ) 37 | - [C++ Primer](https://books.google.co.in/books/about/C++_Primer.html?id=J1HMLyxqJfgC&redir_esc=y) 38 | - [C++ Tutorial for Beginners](https://www.youtube.com/watch?v=vLnPwxZdW4Y) 39 | - [C++ Interview Questions](https://www.interviewbit.com/cpp-interview-questions) 40 | - Python 41 | - [Python Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/python-cheat-sheet-v1.pdf) 42 | - [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA) 43 | - [Series on 3.4 (video)](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_) 44 | - [Statistics for Hackers (video)](https://www.youtube.com/watch?v=Iq9DzN6mvYA) 45 | - [Faster Python (video)](https://www.youtube.com/watch?v=JDSGVvMwNM8) 46 | - [CPython Walk (video)](https://www.youtube.com/watch?v=LhadeL7_EIU&list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S&index=6) 47 | - [10 Tips for Pythonic Code (video)](https://www.youtube.com/watch?v=_O23jIXsshs) 48 | - [Beyond PEP 8 -- Best practices for beautiful intelligible code (video)](https://www.youtube.com/watch?v=wf-BqAjZb8M) 49 | - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) 50 | - [Coding Interview Essentials](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) 51 | - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) 52 | - [Python Programming Tutorial](https://www.scaler.com/topics/python/) 53 | - [Python Interview Questions](https://www.interviewbit.com/python-interview-questions) 54 | - [Python Guide for Beginners](https://wiingy.com/learn/python/python-tutorial/) 55 | - Java 56 | - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) 57 | - [Java Cheat Sheet](https://www.interviewbit.com/java-cheat-sheet) 58 | - [Introduction To Programming In Java](http://introcs.cs.princeton.edu/java/home/) 59 | - [Algorithms 4th Ed - Algorithm Book In Java](http://algs4.cs.princeton.edu/home/) 60 | - [Effective Java 3rd Edition](https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH) 61 | - [Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer](https://www.youtube.com/watch?v=RBSGKlAvoiM&t=1744s) 62 | - [Top Java Interview Questions and Answers](https://www.interviewbit.com/java-interview-questions) 63 | - [Data Structures in Java](https://www.youtube.com/playlist?list=PL9gnSGHSqcnr_DxHsP7AW9ftq0AtAyYqJ) 64 | - Go 65 | - [The Go programming Language](https://golang.org/) 66 | - [The Go programming Language (book)](http://www.gopl.io/) 67 | - [A Tour of Go](https://tour.golang.org/) 68 | - [Effective Go](https://golang.org/doc/effective_go.html) 69 | - [Go Wiki](https://golang.org/wiki) 70 | - [Go at Google: Language Design in the Service of Software Engineering](https://talks.golang.org/2012/splash.article) 71 | - [Go Proverbs](http://go-proverbs.github.io/) 72 | - [Go Proverbs - Rob Pike (video)](https://www.youtube.com/watch?v=PAAkCSZUG1c) 73 | - [Gophercises - Free course on Coding Exercises in Go](https://gophercises.com) 74 | - HTML 75 | - [HTML Cheat Sheet](https://www.interviewbit.com/html-cheat-sheet) 76 | - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) 77 | - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) 78 | - [Learn HTML in Detail](https://www.scaler.com/topics/html/) 79 | - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) 80 | - [W3 Schools](https://www.w3schools.com/html/) 81 | - [Html Interview Questions](https://www.interviewbit.com/html-interview-questions) 82 | - CSS 83 | - [Quick CSS Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf8JIgLcu3sHigvQjTw_aC9C) 84 | - [CSS Crash Course for absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) 85 | - [Basic CSS](https://www.freecodecamp.org/learn/responsive-web-design/basic-css/) 86 | - [W3 Schools](https://www.w3schools.com/css/) 87 | - [Top 30+ CSS Interview Questions](https://www.interviewbit.com/css-interview-questions) 88 | - Javascript 89 | - [JavaScript Cheat Sheet](https://www.interviewbit.com/javascript-cheat-sheet) 90 | - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) 91 | - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) 92 | - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) 93 | - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) 94 | - [Javascript Tutorial - Learn From Scratch](https://www.scaler.com/topics/javascript/) 95 | - [Javascript Interview Questions and Answers](https://www.interviewbit.com/javascript-interview-questions) 96 | - Rust 97 | - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) 98 | - [Rust by Example](https://doc.rust-lang.org/stable/rust-by-example/) 99 | - [Rust Tutorial by Doug Milford from Lambda Valley](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) 100 | - [Introduction - Easy Rust](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) 101 | - [Rust overview](https://learning-rust.github.io/docs/index.html) 102 | - [A Gentle Introduction to Rust](https://stevedonovan.github.io/rust-gentle-intro/readme.html) 103 | 104 | - Ruby 105 | 106 | - [The Ruby Programming Language](https://book4you.org/book/1219034/7c9a4b) 107 | - [Polished Ruby Programming](https://book4you.org/book/16678106/f61159) 108 | - [Ruby Fu](https://rubyfu.net/) 109 | - [Ruby Koans](http://rubykoans.com/) 110 | 111 | - Other Language 2 112 | - etc 113 | -------------------------------------------------------------------------------- /translations/README-el.md: -------------------------------------------------------------------------------- 1 | #Coding Interview University 2 | 3 | >Επίσημη έκδοση: [Αγγλικά](https://github.com/jwasham/coding-interview-university/blob/master/README.md) 4 | 5 | ## Τι είναι 6 | 7 | Είναi το πλάνο διαβάσματός μου για να γίνω από web developer (αυτοδίδακτος, χωρίς πτυχίο στην Επιστήμη των Υπολογιστών), μηχανικός λογισμικού για μία μεγάλη εταιρία. 8 | 9 | ![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) 10 | 11 | Αυτό το έργο προορίζεται για νέους μηχανικούς λογισμικού ή για αυτούς που μεταβαίνουν από την ανάπτυξη λογισμικού/ιστοσελίδων στην τεχνολογία λογισμικού(εκεί που η γνώση για την επιστήμη των υπολογιστών ειναι προαπαιτούμενο). Αν έχεις αρκετά χρόνια εμπειρίας και αξιώνεις πολλά χρόνια εμπερίας στην τεχνολογία λογισμικού, πρέπει να περιμένεις μία δυσκολότερη συνέντευξη. 12 | 13 | Εάν έχεις αρκετά χρόνια εμπειρίας στην ανάπτυξη λογισμικού/ιστοσελίδων, σημείωσε ότι οι μεγάλες εταιρίες λογισμικού όπως οι Google, Amazon, Facebook και Microsoft βλέπουν την τεχνολογία λογισμικού ως ενα διαφορετικό κομμάτι από την ανάπτυξη λογισμικού/ιστοσελίδων, και απαιτούν γνώσεις πάνω στην επιστήμη υπολογιστών. 14 | 15 | Εάν θέλεις να είσαι ένας αξιόπιστος μηχανικός ή μηχανικός συστημάτων, διάβασε περισσότερο απο την προεραιτική λίστα(δίκτυα, ασφάλεια). 16 | 17 | --- 18 | # Πίνακας περιεχομένων 19 | 20 | - [Τι είναι](#Tι-είναι) 21 | - [Γιατί να το χρησιμοποιήσεις](#Γιατί-να-το-χρησιμοποιήσεις) 22 | - [Πώς να το χρησιμοποιήσεις](#Πώς-να-το-χρησιμοποιήσεις) 23 | - [Μη νιώθεις ανίκανος](#Μη-νιώθεις-ανίκανος) 24 | - [Σχετικά με τα βίντεο](#Σχετικά-με-τα-βίντεο) 25 | - [Διαδικασία Συνέντευξης & Γενική προετοιμασία συνέντευξης](#Διαδικασία-Συνέντευξης--Γενική-προετοιμασία-συνέντευξης) 26 | - [Διάλεξε μία γλώσσα για τη συνέντευξη](#Διάλεξε-μία-γλώσσα-για-τη-συνέντευξη) 27 | - [Λίστα βιβλίων](#Λίστα-βιβλίων) 28 | - [Πριν αρχίσεις](#Πριν-αρχίσεις) 29 | - [Τι δε θα δεις να καλύπτετε](#Τι-δε-θα-δεις-να-καλύπτετε) 30 | - [Προαπαιτούμενη γνώση](#Προαπαιτούμενη-γνώση) 31 | - [Το καθημερινό πλάνο](#Το-καθημερινό-πλάνο) 32 | - [Αλγοριθμική πολυπλοκότητα / Big-O / Ασυμπτωτική ανάλυση](#Αλγοριθμική-πολυπλοκότητα--Big-O--Ασυμπτωτική-ανάλυση) 33 | - [Data Structures](#data-structures) 34 | - [Arrays](#arrays) 35 | - [Linked Lists](#linked-lists) 36 | - [Stack](#stack) 37 | - [Queue](#queue) 38 | - [Hash table](#hash-table) 39 | - [More Knowledge](#more-knowledge) 40 | - [Binary search](#binary-search) 41 | - [Bitwise operations](#bitwise-operations) 42 | - [Trees](#trees) 43 | - [Trees - Notes & Background](#trees---notes--background) 44 | - [Binary search trees: BSTs](#binary-search-trees-bsts) 45 | - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) 46 | - balanced search trees (general concept, not details) 47 | - traversals: preorder, inorder, postorder, BFS, DFS 48 | - [Sorting](#sorting) 49 | - selection 50 | - insertion 51 | - heapsort 52 | - quicksort 53 | - merge sort 54 | - [Graphs](#graphs) 55 | - directed 56 | - undirected 57 | - adjacency matrix 58 | - adjacency list 59 | - traversals: BFS, DFS 60 | - [Even More Knowledge](#even-more-knowledge) 61 | - [Recursion](#recursion) 62 | - [Dynamic Programming](#dynamic-programming) 63 | - [Object-Oriented Programming](#object-oriented-programming) 64 | - [Design Patterns](#design-patterns) 65 | - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) 66 | - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) 67 | - [Caches](#caches) 68 | - [Processes and Threads](#processes-and-threads) 69 | - [Papers](#papers) 70 | - [Testing](#testing) 71 | - [Scheduling](#scheduling) 72 | - [Implement system routines](#implement-system-routines) 73 | - [String searching & manipulations](#string-searching--manipulations) 74 | - [Tries](#tries) 75 | - [Floating Point Numbers](#floating-point-numbers) 76 | - [Unicode](#unicode) 77 | - [Endianness](#endianness) 78 | - [Networking](#networking) 79 | - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) 80 | - [Final Review](#final-review) 81 | - [Coding Question Practice](#coding-question-practice) 82 | - [Coding exercises/challenges](#coding-exerciseschallenges) 83 | - [Once you're closer to the interview](#once-youre-closer-to-the-interview) 84 | - [Your Resume](#your-resume) 85 | - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) 86 | - [Have questions for the interviewer](#have-questions-for-the-interviewer) 87 | - [Once You've Got The Job](#once-youve-got-the-job) 88 | 89 | ---------------- Everything below this point is optional ---------------- 90 | 91 | - [Additional Books](#additional-books) 92 | - [Additional Learning](#additional-learning) 93 | - [Compilers](#compilers) 94 | - [Emacs and vi(m)](#emacs-and-vim) 95 | - [Unix command line tools](#unix-command-line-tools) 96 | - [Information theory](#information-theory) 97 | - [Parity & Hamming Code](#parity--hamming-code) 98 | - [Entropy](#entropy) 99 | - [Cryptography](#cryptography) 100 | - [Compression](#compression) 101 | - [Computer Security](#computer-security) 102 | - [Garbage collection](#garbage-collection) 103 | - [Parallel Programming](#parallel-programming) 104 | - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) 105 | - [A*](#a) 106 | - [Fast Fourier Transform](#fast-fourier-transform) 107 | - [Bloom Filter](#bloom-filter) 108 | - [HyperLogLog](#hyperloglog) 109 | - [Locality-Sensitive Hashing](#locality-sensitive-hashing) 110 | - [van Emde Boas Trees](#van-emde-boas-trees) 111 | - [Augmented Data Structures](#augmented-data-structures) 112 | - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) 113 | - [Balanced search trees](#balanced-search-trees) 114 | - AVL trees 115 | - Splay trees 116 | - Red/black trees 117 | - 2-3 search trees 118 | - 2-3-4 Trees (aka 2-4 trees) 119 | - N-ary (K-ary, M-ary) trees 120 | - B-Trees 121 | - [k-D Trees](#k-d-trees) 122 | - [Skip lists](#skip-lists) 123 | - [Network Flows](#network-flows) 124 | - [Disjoint Sets & Union Find](#disjoint-sets--union-find) 125 | - [Math for Fast Processing](#math-for-fast-processing) 126 | - [Treap](#treap) 127 | - [Linear Programming](#linear-programming) 128 | - [Geometry, Convex hull](#geometry-convex-hull) 129 | - [Discrete math](#discrete-math) 130 | - [Machine Learning](#machine-learning) 131 | - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) 132 | - [Video Series](#video-series) 133 | - [Computer Science Courses](#computer-science-courses) 134 | 135 | --- 136 | 137 | ## Γιατί να το χρησιμοποιήσεις 138 | 139 | Όταν άρχισα αυτό το πρότζεκτ, δεν ήξερα τη διαφορά μίας στοίβας από μία ουρά, δεν ήξερα τίποτα σχετικά με τον συμβολισμό Big-Ο, τίποτα σχετικά με τα δέντρα ή πως να διασχίσω ένα δέντρο. Εάν έπρεπε να γράψω σε κώδικα έναν αλγόριθμο ταξινόμησης, μπορώ να σου πω ότι δεν θα ήταν πολύ καλός. Κάθε δομή δεδομένων που είχα χρησιμοποιήσει ήταν πακέτο της γλώσσας, και δεν ήξερα καθόλου πως δούλευαν "κάτω από το καπό". Ποτέ δεν είχα να διαχειριστώ τη μνήμη εκτός εάν μία διεργασία που έτρεχα, μου επέστρεφε ένα σφάλμα του τύπου: "out of memory", και μετά έπρεπε να βρώ μία λύση. Έχω χρησιμοποιήσει μερικούς πολυδιάστατους πίνακες στη ζωή μου και χιλιάδες συναφείς πίνακες, αλλά δεν είχα δημιουργήσει δομές δεδομένων από το 0. 140 | 141 | Είναι ένα μακροπρόθεσμο πλάνο. Μπορεί να σου πάρει μήνες. Εάν είσαι οικείος με πολλά από αυτά ήδη, θα σου πάρει πολύ λιγότερο χρόνο. 142 | 143 | ## Πώς να το χρησιμοποιήσεις 144 | 145 | Οτιδήποτε παρακάτω είναι μία συνοπτική περιγραφή, και πρέπει να τα καταλάβεις από την αρχή μέχρι το τέλος. 146 | 147 | Χρησιμοποιώ τη χαρακτηρηστική markdown γλώσσα του Github, σεμπεριλαμβανομένων και των tasks lists για να ελέγχω την εξέλιξη του πρότζεκτ. 148 | 149 | **Δημιούργησε ένα καινούργιο branch [x]** 150 | 151 | 152 | Κάνε fork το branch και ακολούθησε τις παρακάτω εντολές 153 | 154 | `git checkout -b progress` 155 | 156 | `git remote add jwasham https://github.com/jwasham/coding-interview-university` 157 | 158 | `git fetch --all` 159 | 160 | Μάρκαρε όλα τα κουτιά με X αφού ολοκληρώσεις τις αλλαγές 161 | 162 | `git add . ` 163 | 164 | `git commit -m "Marked x" ` 165 | 166 | `git rebase jwasham/master ` 167 | 168 | `git push --force ` 169 | 170 | [Περισσότερα σχετικά με την Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) 171 | 172 | ## Μη νιώθεις ανίκανος 173 | - Οι επιτυχυμένοι μηχανικοί λογισμικού είναι έξυπνοι, αλλά πολλοί έχουν την ανασφάλεια ότι δεν είναι αρκετά έξυπνοι. 174 | - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) 175 | - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) 176 | 177 | ## Σχετικά με τα βίντεο 178 | 179 | Μερικά βίντεο είναι διαθέσιμα μόνο κάνοντας εγγραφή σε μία Coursera, EdX, or Lynda.com τάξη. Αυτές καλούνται MOOCs. 180 | Μερικές φορές οι τάξεις δεν είναι διαθέσιμες, έτσι πρέπει να περιμένεις 1-2 μήνες, έτσι ώστε να αποκτήσεις πρόσβαση. Τα μαθήματα του Lynada.com δεν είναι δωρεάν. 181 | 182 | Θα εκτιμούσα τη βοήθεια σου να προσθέσεις δωρεάν και πάντοτε-διαθέσιμες ανοικτές πηγές, όπως βίντεο από το Youtube να συνοδεύσουν τα online μαθήματα βίντεο. 183 | Μου αρέσει να χρησιμοποιώ πανεπιστημιακές διαλέξεις. 184 | 185 | ## Διαδικασία Συνέντευξης & Γενική προετοιμασία συνέντευξης 186 | 187 | - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) 188 | - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) 189 | - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) 190 | - [ ] Cracking The Coding Interview Set 1: 191 | - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) 192 | - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) 193 | - [ ] How to Get a Job at the Big 4: 194 | - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) 195 | 196 | - [ ] Μαθήματα προετοιμασίας: 197 | - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): 198 | - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. 199 | - [ ] [Python for Data Structures, Algorithms, and Interviews! (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): 200 | - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. 201 | 202 | ## Διάλεξε μία γλώσσα για τη συνέντευξη 203 | 204 | Μπορείς να χρησιμοποιήσεις μία γλώσσα με την οποία είσαι άνετος για να κάνεις το προγραμματιστικό κομμάτι της συνέντευξης, αλλά για τις μεγάλες εταιρίες, υπάρχουν ατόφιες επιλογές: 205 | 206 | - C++ 207 | - Java 208 | - Python 209 | 210 | Μπορείς, επίσης, να χρησιμοποιήσεις αυτές, αλλά διάβασε γύρω από αυτό πρώτα. Μπορεί να υπάρχουν προειδοποιήσεις: 211 | 212 | - Javascript 213 | - Ruby 214 | 215 | Πρέπει να είσαι πολύ εξοικιωμένος με τη γλώσσα και γνώστης. 216 | 217 | Διάβασε περισσότερα σχετικά με τις παραπάνω επιλογές: 218 | - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ 219 | - http://blog.codingforinterviews.com/best-programming-language-jobs/ 220 | 221 | [Βρες πόρους για τη γλώσσα εδώ](programming-language-resources.md) 222 | 223 | Θα δείς λίγη γνώση σχετικά με τις C, C++ και Python να περιέχεται παρακάτω, επείδη μαθαίνω. Υπάρχουν μερικά εμπλεκόμενα βιβλία, δες το κάτω μέρος. 224 | 225 | ## Λίστα βιβλίων 226 | 227 | - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) 228 | - απαντήσεις στην C++ και στην Java 229 | - αυτό είναι ένα καλό ζέσταμα για να είσαι άριστος/η στο Coding Interview 230 | - όχι τόσο δύσκολο, τα περισσότερα προβλήματα ίσως είναι ευκολότερα από ότι θα δείς στην συνέντευξη (από αυτά που έχω διαβάσει) 231 | - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) 232 | - απαντήσεις στην Java 233 | 234 | Εάν έχεις αρκετό ελεύθερο χρόνο: 235 | 236 | - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) 237 | - [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) 238 | 239 | ### Αρχιτεκτονική Υπολογιστών 240 | 241 | Αν έχεις λίγο χρόνο: 242 | 243 | - [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) 244 | - Το βιβλίο δημοσιεύτηκε το 2004, και είναι λίγο απαρχεωμένο, αλλά είναι ένας υπέροχος πόρος για να κατανοήσεις έναν υπολογιστή εν συντομία. 245 | - Ο συγγραφέας εφηύρε το HLA, έτσι μην παίρνεις τις αναφορές του και παραδείγματά του για το HLA, τοις μετρητοίς. 246 | - Αυτά τα κεφάλαια αξίζουν το διάβασμα για να σου δώσουν ισχυρά θεμέλια: 247 | - Chapter 2 - Numeric Representation 248 | - Chapter 3 - Binary Arithmetic and Bit Operations 249 | - Chapter 4 - Floating-Point Representation 250 | - Chapter 5 - Character Representation 251 | - Chapter 6 - Memory Organization and Access 252 | - Chapter 7 - Composite Data Types and Memory Objects 253 | - Chapter 9 - CPU Architecture 254 | - Chapter 10 - Instruction Set Architecture 255 | - Chapter 11 - Memory Architecture and Organization 256 | 257 | Αν έχεις αρκετό χρόνο (Το θέλω αυτό το βιβλίο): 258 | 259 | - [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) 260 | - Για μία πλουσιότερη, περισσότερο ενημερωμένη (2011), αλλά εκτενέστερη αντιμετώπιση 261 | 262 | ### Συγκεκριμένη γλώσσα 263 | 264 | **Θα πρέπει να επιλέξεις μία γλώσσα για τη συνέντευξη (δες παραπάνω).** Εδώ είναι οι προτάσεις μου ανά γλώσσα. Δεν έχω τους πόρους για όλες τις γλώσσες. Καλοδεχούμενες οι προσθήκες. 265 | 266 | Εάν διαβάσεις μία από αυτές, θα πρέπει να έχεις όλη την γνώση σχετικά με δομές δεδομένων και αλγόριθμους που θα χρειαστείς για να αρχίσεις να λύνεις προβλήματα προγραμματισμού. 267 | **Μπορείς να παραλείψεις όλες τα βίντεο-διαλέξεις που περιέχονται σε αυτό το πρότζεκτ**, εκτός εάν θέλεις να κάνεις μία ανασκόπηση. 268 | 269 | [Επιπρόσθετοι πόροι που αφορούν συγκεκριμένες γλώσσες εδώ.](programming-language-resources.md) 270 | 271 | ### C++ 272 | 273 | Δεν έχω διαβάσει αυτά τα δύο, αλλά έχουν λάβει υψηλές αξιολογήσεις και έχουν γραφτεί από τον Sedgewick. Είναι φοβερός. 274 | 275 | - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) 276 | - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) 277 | 278 | Εάν έχεις μία καλύτερη πρόταση για τη C++, παρακαλώ ενημέρωσέ με. Ψάχνοντας για έναν περιεκτικό πόρο. 279 | 280 | ### Java 281 | 282 | - [ ] [Αλγόριθμοι σε Java(Sedgewick)](http://www.skroutz.gr/books/142957.%CE%91%CE%BB%CE%B3%CF%8C%CF%81%CE%B9%CE%B8%CE%BC%CE%BF%CE%B9-%CF%83%CE%B5-Java.html) 283 | - Διδάσκεται στο Τμήμα Πληροφορικής του Οικονομικού Πανεπιστημίου Αθηνών 284 | - βιντεο με το περιεχόμενο του βιβλίου (and Sedgewick!): 285 | - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) 286 | - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) 287 | 288 | Ή: 289 | 290 | - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) 291 | - by Goodrich, Tamassia, Goldwasser 292 | - used as optional text for CS intro course at UC Berkeley 293 | - see my book report on the Python version below. This book covers the same topics. 294 | 295 | ### Python 296 | 297 | - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) 298 | - by Goodrich, Tamassia, Goldwasser 299 | - I loved this book. It covered everything and more. 300 | - Pythonic code 301 | - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ 302 | 303 | 304 | ### Προαιρετικά Βιβλία 305 | 306 | **Ορισμένοι συστήνουν αυτά, αλλά το παρακάνουν, εκτός εάν έχεις πολλά χρόνια εμπειρίας και περιμένεις μία δυσκολότερη συνέντευξη:** 307 | 308 | - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) 309 | - As a review and problem recognition 310 | - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. 311 | - This book has 2 parts: 312 | - class textbook on data structures and algorithms 313 | - pros: 314 | - is a good review as any algorithms textbook would be 315 | - nice stories from his experiences solving problems in industry and academia 316 | - code examples in C 317 | - cons: 318 | - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects 319 | - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have 320 | - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. 321 | - algorithm catalog: 322 | - this is the real reason you buy this book. 323 | - about to get to this part. Will update here once I've made my way through it. 324 | - Can rent it on kindle 325 | - Half.com is a great resource for textbooks at good prices. 326 | - Answers: 327 | - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) 328 | - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) 329 | - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) 330 | 331 | - [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) 332 | - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. 333 | - Half.com is a great resource for textbooks at good prices. 334 | - aka CLR, sometimes CLRS, because Stein was late to the game 335 | 336 | - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) 337 | - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but 338 | that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. 339 | 340 | - ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ 341 | - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. 342 | - Would rather spend time on coding problems from another book or online coding problems. 343 | 344 | ## Πριν αρχίσεις 345 | 346 | Αυτή η λίστα αυξήθηκε με την περίοδο πολλών μηνών, και ναι, βρίσκεται εκτός ελέγχου. 347 | 348 | Εδώ βρίσκονται κάποια λάθη που έκανα για να έχεις μία καλύτερη εμπειρία. 349 | 350 | ### 1. Δε θα το θυμάσαι καθόλου 351 | 352 | Είδα αρκετές ώρες βίντεο και πήρα άφθονες σημειώσεις, κα μήνες μετά υπήρχαν πολλά τα οποία δεν θυμόμουν. Ξόδεψα 3 μέρες εξετάζοντας λεπτομερώς τις σημειώσεις μου και έκανα καρτέλες για να μπορούσα να τις αξιολογήσω. 353 | 354 | Σε παρακαλώ διάβασε τα για να μην κανεις τα ίδια λάθη με τα δικά μου: 355 | 356 | [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) 357 | 358 | ### 2. Χρησιμοποιήσε κάρτες σημειώσεων 359 | 360 | Να λύνεις το πρόβλημα, Εγώ έκανα μία μικρή ιστοσελίδα με κάρτες σημειώσεων 2 τύπων: γενικές και κώδικα. Κάθε μία κάρτα έχει διαφορετικό φορμάτ. 361 | 362 | Έκανα ένα mobile-first website για να μπορούσα να τις αξιολογήσω στο κινητό μου και στο tablet μου, όπου κι αν είμαι. 363 | 364 | Φτιάξε το δικό σου δωρεάν: 365 | 366 | - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) 367 | - [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): 368 | - [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): 369 | 370 | Θυμήσου ότι ξεπέρασα τα όρια και είχα κάρτες που κάλυπταν τα πάντα, από assembly και Python trivia έως και μηχανική μάθηση και στατιστική. Ήταν κάπως υπερβολικό από αυτό που χρειαζόταν. 371 | 372 | **Σημείωσε στα flashcards:** Τον πρώτο καιρό θα αναγνωρίζεις ότι γνωρίζεις την απάντηση, μην την μαρκάρεις ως γνωστή. Έχεις να δεις την ίδια κάρτα και να την απαντήσεις αρκετές φορές σωστά πριν την κατανοήσεις πλήρως. Η επανάληψις είναι μήτηρ πάσης μαθήσεως!-Πλάτωνας. 373 | 374 | Η εναλλακτική είναι να χρησιμοποιήσεις το δικό μου flashcard site: [Anki](http://ankisrs.net/), το οποίο έχει προταθεί σε εμένα αρκετές φορές. Χρησιμοποιεί ένα επαναληπτικό σύστημα για να σε βοηθήσει να θυμηθείς. 375 | Είναι φιλικό προς τον χρήστη, διαθέσιμο σε όλες τις πλατφόρμες και διαθέτει συγχρονισμό με το cloud. Κοστίζει 25$ για iOS αλλά είναι δωρεάν στις άλλες πλατφόρμες. 376 | 377 | Η flashcard βάση δεδομένων μου σε φορμάτ Anki: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) 378 | 379 | ### 3. Αναθεώρησε, αναθεώρησε, αναθεώρησε 380 | 381 | Διατηρώ το σετ μου απο σκονάκια σε ASCII, στοίβα OSI, σχηματισμούς Big-O, και άλλα. Τα μελετώ όταν έχω λίγο χρόνο. 382 | 383 | Κάνε ένα διάλειμμα από τα προβλήματα προγραμματισμού για μισή ώρα και δούλεψε με τα flashcards. 384 | 385 | ### 4. Συγκεντρώσου 386 | 387 | Υπάρχουν πολλοί αντιπερισπασμοί που μπορούν να κοστίσουν πολύτιμο χρόνο. Η συγκέντρωση είναι ένα αρκετά δύσκολο κομμάτι. 388 | 389 | ## Τι δε θα δεις να καλύπτετε 390 | 391 | Υπάρχουν επικρατέστερες τεχνολογίες αλλά δεν είναι κομμάτι αυτού του πλάνου διαβάσματος: 392 | 393 | - SQL 394 | - Javascript 395 | - HTML, CSS, και άλλες front-end τεχνολογίες 396 | 397 | ## Το καθημερινό πλάνο 398 | 399 | Μερικά θέματα παίρνουν μία ολόκληρη μέρα, και μερικά θα κοστίσουν μερικές μέρες. Μερικά είναι μόνο γνώση χωρίς να χρειαστεί να υλοποιήσεις οτιδήποτε. 400 | 401 | Κάθε μέρα παίρνω ένα θέμα από την παρακάτω λίστα, βλέπω βίντεο για το συγκεκριμένο θέμα, και γρράφω μία υλοποίηση σε: 402 | - C - χρησιμοποιώντας structs και functions που παίρνουν struct * και κάτι άλλο σαν ορίσματα. 403 | - C++ - χωρίς να χρησιμοποιώ built-in τύπους 404 | - C++ - χρησιμοποιώντας built-in τύπους, όπως τα std::list της STL για μία συνδεδεμένη λίστα 405 | - Python - χρησιμοποιώντας built-in τύπους (για να εξασκούμε στην Python) 406 | - και γράφω tests για να σιγουρευτώ ότι το κάνω καλά, μερικές φορές χρησιμοποιώντας μόνο assert() δηλώσεις 407 | - Μπορεί να κάνεις Java ή κάτι άλλο, αυτό είναι μόνο αυτό που κάνω. 408 | 409 | Δεν χρειάζεσαι όλα αυτά. Χρειάζεσαι μόνο [μία γλώσσα για τη συνέντευξη](#Διάλεξε-μία-γλώσσα-για-τη-συνέντευξη). 410 | 411 | Γιατί γράφω κώδικα σε όλα αυτά; 412 | - Εξάσκηση, εξάσκηση, εξάσκηση, μέχρι να γίνω άρρωστος από αυτό, και να μπορώ να το κάνω χωρίς κανένα πρόβλημα (μερικά έχουν πολλές ακραίες περιπτώσεις και και τήρηση των λεπτομερειών του βιβλίου να θυμηθείς) 413 | - Δουλέυω με τα εμπόδια (allocating/freeing memory χωρίς την βοήθεια του garbage collection (εκτός της Python)) 414 | - Κάνω χρήση των built-in τύπων έτσι έχω λίγη εμπειρία στη χρήση built-in εργαλείων για χρήση στον πραγματικό κόσμο (δεν πάω να γράψω τη δικιά μου υλοποίηση για τη συνδεδεμένη λίστα στην παραγωγή) 415 | 416 | Μπορεί να μην έχω χρόνο να τα κάνω αυτά για όλα τα θέματα, αλλά θα προσπαθήσω. 417 | 418 | Μπορείς να δεις τον κώδικα μου εδώ: 419 | - [C] (https://github.com/jwasham/practice-c) 420 | - [C++] (https://github.com/jwasham/practice-cpp) 421 | - [Python] (https://github.com/jwasham/practice-python) 422 | 423 | Δε χρειάζεται να απομνημονεύσεις κάθε κομμάτι ενός αλγόριθμου. 424 | 425 | Γράψε κώδικα σε ένα πίνακα ή σε ένα χαρτί, όχι σε υπολογιστή. Τέσταρε τον με μερικές απλές εισόδους. Μετά τέσταρε τον και σε έναν υπολογιστή. 426 | 427 | ## Προαπαιτούμενη γνώση 428 | 429 | - [ ] **Μάθε C** (καλή τύχη με αυτό... :disappointed: ) 430 | - Η C είναι παντού. Θα δείς παραδείγματα σε βιβλία, διαλέξεις, βίντεο, *ΠΑΝΤΟΥ* όσο θα διαβάζεις. 431 | - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) 432 | - Είναι ένα σύντομο βιβλίο, αλλά θα σου δώσει ένα χεράκι στην γλώσσα C και εάν την εξασκείς λίγο 433 | θα την καταλάβεις γρήγορα. Το να καταλάβεις τη C θα σε βοηθήσει να καταλάβεις πως δουλεύουν τα προγράμματα και η μνήμη. 434 | - [απαντήσεις και ερωτήσεις από έναν Έλληνα](https://github.com/lekkas/c-algorithms) 435 | 436 | - [ ] **How computers process a program:** 437 | - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) 438 | - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) 439 | 440 | ## Αλγοριθμική πολυπλοκότητα / Big-O / Ασυμπτωτική ανάλυση 441 | - τίποτα προς υλοποίηση 442 | - [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) 443 | - [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) 444 | - [ ] [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) 445 | - [ ] Skiena: 446 | - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 447 | - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) 448 | - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) 449 | - [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) 450 | - [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) 451 | - [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) 452 | - [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) 453 | - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) 454 | - [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) 455 | - [ ] TopCoder (includes recurrence relations and master theorem): 456 | - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) 457 | - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) 458 | - [ ] [Cheat sheet](http://bigocheatsheet.com/) 459 | - [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) 460 | 461 | 462 | Εάν μερικές διαλέξεις είναι πολύ μαθηματικές, μπορείς να μεταβείς προς τα κάτω και να παρακολουθήσεις μερικά βίντεο σχετικά με τα διακριτά μαθηματικά για να πάρεις όλες τις γνώσεις που απαιτούνται. 463 | 464 | ## Δομές Δεδομένων 465 | 466 | - ### Πίνακες 467 | - Υλοποίησε μία λίστα, η οποία αλλάζει αυτόματα μέγεθος. 468 | - [ ] Περιγραφή: 469 | - [Πίνακες(EN) (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) 470 | - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) 471 | - [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) 472 | - [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) 473 | - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) 474 | - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) 475 | - [Jagged Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) 476 | - [Resizing arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) 477 | - [ ] Υλοποίησε μία συλλογή (ευμετάβλητο πίνακα με αυτόματη αλλαγή μεγέθους): 478 | - [ ] Κάνε πρακτική σε κώδικα χρησιμοποιώντας πίνακες και δείκτες, και pointer math για να πας σε ένα δείκτη από το να χρησιμοποιήσεις ευρετηρίαση. 479 | - [ ] new raw data array with allocated memory 480 | - can allocate int array under the hood, just not use its features 481 | - start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128 482 | - [ ] size() - αριθμός των στοιχείων 483 | - [ ] capacity() - αριθμός στοιχείων που μπορεί να περιέχει 484 | - [ ] is_empty() 485 | - [ ] at(index) - επιστρέφει που υπάρχει στη θέση index, *εκρύγνειται* αν ο δείκτης είναι εκτός συνόρων του πίνακα 486 | - [ ] push(item) 487 | - [ ] insert(index, item) - εισάγει ένα σημείο στη θέση index, μετακινεί την τιμή του index και σύρει όλα τα στοιχεία στα δεξιά 488 | - [ ] prepend(item) - εισάγει το αντικείμενο στην αρχή της συλλογής(insert(0,item)) 489 | - [ ] pop() - αφαιρεί από το τέλος, επιστρέφει την τιμή 490 | - [ ] delete(index) - διγράφη το στοιχείο στη θέση index, σύρει όλα τα στοιχεία στα αριστερά 491 | - [ ] remove(item) - ψάχνει για την τιμή και διαγράφει το δείκτη που την έχει (ακόμα και αν είναι σε περισσότερες από 1 θέσεις) 492 | - [ ] find(item) - ψάχνει για την τιμή και επιστρέφει τον πρώτο δείκτη με αυτή την τιμή, -1 έαν δε βρεθεί 493 | - [ ] resize(new_capacity) // private function 494 | - όταν φτάνεις στη χωρητικώτητα, άλλαξε το μέγεθος του πίνακα κατά το διπλάσιο 495 | - όταν αφαιρείς ένα στοιχείο, εάν το μέγεθος είναι 1/4 της χωρητικότητας, άλλαξε το μέγεθος κατά το μισό 496 | - [ ] Χρόνος 497 | - O(1) για πρόσθεση/αφαίρεση στο τέλος (απελευθέρωση των δεσμευμένων θέσεων για περισσότερο χώρο) 498 | - O(n) για πρόσθεση/αφαίρεση αλλού 499 | - [ ] Χώρος 500 | - συνεχόμενος στη μνήμη, έτσι η μικρή απόσταση βοηθάει στην απόδοση 501 | - απαιτούμενος χώρος = (χωρητικότητα πίνακα, η οποία είναι >= n) * μέγεθος του στοιχείου, αλλά ακόμα και αν είναι 2n => O(n) 502 | 503 | - ### Συνδεδεμένες λίστες 504 | - [ ] Περιγραφή: 505 | - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) 506 | - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) 507 | - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) 508 | - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) 509 | - not the whole video, just portions about Node struct and memory allocation. 510 | - [ ] Linked List vs Arrays: 511 | - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) 512 | - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) 513 | - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) 514 | - [ ] Gotcha: you need pointer to pointer knowledge: 515 | (for when you pass a pointer to a function that may change the address where that pointer points) 516 | This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. 517 | - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) 518 | - [ ] υλοποίηση (Το έκανα με δείκτη ουράς και χωρίς): 519 | 520 | # untill here 521 | 522 | - [ ] size() - returns number of data elements in list 523 | - [ ] empty() - bool returns true if empty 524 | - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) 525 | - [ ] push_front(value) - adds an item to the front of the list 526 | - [ ] pop_front() - remove front item and return its value 527 | - [ ] push_back(value) - adds an item at the end 528 | - [ ] pop_back() - removes end item and returns its value 529 | - [ ] front() - get value of front item 530 | - [ ] back() - get value of end item 531 | - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index 532 | - [ ] erase(index) - removes node at given index 533 | - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list 534 | - [ ] reverse() - reverses the list 535 | - [ ] remove_value(value) - removes the first item in the list with this value 536 | - [ ] Doubly-linked List 537 | - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) 538 | - No need to implement 539 | 540 | - ### Stack 541 | - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) 542 | - [ ] [Using Stacks Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) 543 | - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) 544 | - [ ] Will not implement. Implementing with array is trivial. 545 | 546 | - ### Queue 547 | - [ ] [Using Queues First-In First-Out(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) 548 | - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) 549 | - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) 550 | - [ ] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) 551 | - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) 552 | - [ ] Implement using linked-list, with tail pointer: 553 | - enqueue(value) - adds value at position at tail 554 | - dequeue() - returns value and removes least recently added element (front) 555 | - empty() 556 | - [ ] Implement using fixed-sized array: 557 | - enqueue(value) - adds item at end of available storage 558 | - dequeue() - returns value and removes least recently added element 559 | - empty() 560 | - full() 561 | - [ ] Cost: 562 | - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) 563 | because you'd need the next to last element, causing a full traversal each dequeue 564 | - enqueue: O(1) (amortized, linked list and array [probing]) 565 | - dequeue: O(1) (linked list and array) 566 | - empty: O(1) (linked list and array) 567 | 568 | - ### Hash table 569 | - [ ] Videos: 570 | - [ ] [Hashing with Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) 571 | - [ ] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 572 | - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 573 | - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) 574 | - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) 575 | - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) 576 | - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) 577 | 578 | - [ ] Online Courses: 579 | - [ ] [Understanding Hash Functions (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) 580 | - [ ] [Using Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) 581 | - [ ] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) 582 | - [ ] [Language Support Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) 583 | - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) 584 | - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) 585 | - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) 586 | - [ ] distributed hash tables: 587 | - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) 588 | - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) 589 | 590 | - [ ] implement with array using linear probing 591 | - hash(k, m) - m is size of hash table 592 | - add(key, value) - if key already exists, update value 593 | - exists(key) 594 | - get(key) 595 | - remove(key) 596 | 597 | ## More Knowledge 598 | 599 | - ### Binary search 600 | - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) 601 | - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) 602 | - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) 603 | - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) 604 | - [ ] Implement: 605 | - binary search (on sorted array of integers) 606 | - binary search using recursion 607 | 608 | - ### Bitwise operations 609 | - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) 610 | - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << 611 | - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) 612 | - [ ] Good intro: 613 | [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) 614 | - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) 615 | - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) 616 | - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) 617 | - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) 618 | - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) 619 | - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) 620 | - [ ] 2s and 1s complement 621 | - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) 622 | - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) 623 | - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) 624 | - [ ] count set bits 625 | - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) 626 | - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) 627 | - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) 628 | - [ ] round to next power of 2: 629 | - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) 630 | - [ ] swap values: 631 | - [Swap](http://bits.stephan-brumme.com/swap.html) 632 | - [ ] absolute value: 633 | - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) 634 | 635 | ## Trees 636 | 637 | - ### Trees - Notes & Background 638 | - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) 639 | - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) 640 | - basic tree construction 641 | - traversal 642 | - manipulation algorithms 643 | - BFS (breadth-first search) 644 | - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) 645 | - level order (BFS, using queue) 646 | time complexity: O(n) 647 | space complexity: best: O(1), worst: O(n/2)=O(n) 648 | - DFS (depth-first search) 649 | - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) 650 | - notes: 651 | time complexity: O(n) 652 | space complexity: 653 | best: O(log n) - avg. height of tree 654 | worst: O(n) 655 | - inorder (DFS: left, self, right) 656 | - postorder (DFS: left, right, self) 657 | - preorder (DFS: self, left, right) 658 | - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) 659 | - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) 660 | - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) 661 | -------------------------------------------------------------------------------- /translations/README-ja.md: -------------------------------------------------------------------------------- 1 | # コーディング面接の大学 2 | 3 | >私はもともとこれをソフトウェアエンジニアになるための短いトピックリストとして作成しましたが、 4 | >今日それは大きなリストに成長しました。この学習計画を経て、[私はAmazonで 5 | > ソフトウェアエンジニアとして雇われました!!](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) 6 | >おそらく、あなたは私ほど勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。 7 | > 私は数ヶ月間、1日約8〜12時間勉強しました。これが私のストーリーです: [Google の面接のために8か月間フルタイムで勉強した理由](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) 8 | >注意してください: あなたは私ほど勉強する必要はありません。私は、知る必要のないことに多くの時間を無駄にしました。詳細については、以下をご覧ください。貴重な時間を無駄にすることなく、必要なことを勉強するのを手伝います。 9 | >ここに掲載されている項目を学べば、Amazon、Facebook、Google、Microsoftなど 10 | >大手企業を含む、ほぼすべてのソフトウェア会社の面接に備えることができます。 11 | > 12 | > *あなたに最高の幸運がありますように!* 13 | 14 | 翻訳: 15 | - [中文版本](translations/README-cn.md) 16 | - [TiếngViệt - ベトナム語](translations/README-vi.md) 17 | - [Español](translations/README-es.md) 18 | 19 | 翻訳中: 20 | - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) 21 | - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) 22 | - [インドネシア語](https://github.com/jwasham/coding-interview-university/issues/101) 23 | - [アラビア語](https://github.com/jwasham/coding-interview-university/issues/98) 24 | - [トルコ語](https://github.com/jwasham/coding-interview-university/issues/90) 25 | - [French](https://github.com/jwasham/coding-interview-university/issues/89) 26 | - [ロシア語](https://github.com/jwasham/coding-interview-university/issues/87) 27 | - [ウクライナ](https://github.com/jwasham/coding-interview-university/issues/106) 28 | - [ブラジルのポルトガル語](https://github.com/jwasham/coding-interview-university/issues/113) 29 | - [韓国語](https://github.com/jwasham/coding-interview-university/issues/118) 30 | - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) 31 | - [Polish](https://github.com/jwasham/coding-interview-university/issues/122) 32 | - [ドイツ語](https://github.com/jwasham/coding-interview-university/issues/135) 33 | - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) 34 | - [タイ語](https://github.com/jwasham/coding-interview-university/issues/156) 35 | - [ギリシャ語](https://github.com/jwasham/coding-interview-university/issues/166) 36 | 37 |
38 |
39 |

40 | Become a sponsor and support Coding Interview University! 41 |

42 |
43 |
44 | 45 | ## これは何? 46 | 47 | ![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) 48 | 49 | これは、大企業のソフトウェア エンジニアになるための私の数か月にわたる学習計画です。 50 | 51 | **必須:** 52 | 53 | - コーディングの経験 (変数、ループ、メソッド/関数など) 54 | - 忍耐 55 | - 時間 56 | 57 | これは**ソフトウェア エンジニアリング**の学習計画であり、フロントエンド エンジニアリングやフルスタック開発ではないことに注意してください。 58 | 他の場所でのキャリア パスのスーパー ロードマップとコースワーク (詳細については https://roadmap.sh/ を参照)。 59 | 60 | 大学のコンピューター サイエンス プログラムでは学ぶべきことがたくさんありますが、面接には 75% 程度知っていれば十分なので、ここではそれについて説明します。 61 | 完全な CS 独学プログラムについては、私の学習計画のリソースがカムラン アーメッドのコンピューター サイエンス ロードマップに含まれています: https://roadmap.sh/computer-science 62 | 63 | --- 64 | 65 | ## 目次 66 | 67 | ### 学習計画 68 | 69 | - [なぜこれを使用するのか](#なぜこれを使用するのか) 70 | - [使い方](#使い方) 71 | - [自信を無くさないでください](#自信を無くさないでください) 72 | - [ビデオリソースに関する注意](#ビデオリソースに関する注意) 73 | - [プログラミング言語を選択してください](#プログラミング言語を選択してください) 74 | - [データ構造とアルゴリズムに関する書籍](#データ構造とアルゴリズムに関する書籍) 75 | - [面接対策本](#面接対策本) 76 | - [私と同じ間違いを犯さないでください](#私と同じ間違いを犯さないでください) 77 | - [取り上げられていないもの](#取り上げられていないもの) 78 | - [日次計画](#日次計画) 79 | - [コーディングに関する質問の練習](#コーディングに関する質問の練習) 80 | - [コーディングの問題](#コーディングの問題) 81 | 82 | ### 研究のテーマ 83 | 84 | - [アルゴリズムの複雑さ / Big-O / 漸近分析](#アルゴリズムの複雑さ/Big-O/漸近分析) 85 | - [データ構造](#データ構造) 86 | - [配列](#配列) 87 | - [連結リスト](#連結リスト) 88 | - [スタック](#スタック) 89 | - [キュー](#キュー) 90 | - [ハッシュテーブル](#ハッシュテーブル) 91 | - [その他の知識](#その他の知識) 92 | - [二分探索](#二分探索) 93 | - [ビット演算](#ビット演算) 94 | - [ツリー](#ツリー) 95 | - [ツリーとは](#ツリーとは) 96 | - [二分探索木:BST](#二分探索木:BST) 97 | - [ヒープ/優先度つきキュー/二分ヒープ](#ヒープ/優先度つきキュー/二分ヒープ) 98 | - バランスの取れた検索ツリー (詳細ではなく一般的な概念) 99 | - トラバーサル: プレオーダー、インオーダー、 postorder、BFS、DFS 100 | - [ソート](#ソート) 101 | - 選択 102 | - 挿入 103 | - ヒープソート 104 | - クイック 105 | ソート - マージソート 106 | - [グラフ](#グラフ) 107 | - 有向 108 | - 無向 109 | - 隣接行列 110 | - 隣接リスト 111 | - 走査: BFS、DFS 112 | - [さらに多くの知識](#さらに多くの知識) 113 | - [再帰](#再帰) 114 | - [動的プログラミング](#動的プログラミング) 115 | - [デザインパターン](#デザインパターン) 116 | - [組み合わせ論(nからkを選択)と確率](#組み合わせ論(nからkを選択)と確率) 117 | - [NP、NP-完全/近似アルゴリズム](#NP、NP-完全/近似アルゴリズム) 118 | - [コンピューターがプログラムを処理する仕組み](#コンピューターがプログラムを処理する仕組み) 119 | - [キャッシュ](#キャッシュ) 120 | - [プロセスとスレッド](#プロセスとスレッド) 121 | - [テスト](#テスト) 122 | - [文字列の検索と操作](#文字列の検索と操作) 123 | - [トライ](#トライ) 124 | - [浮動小数点数](#浮動小数点数) 125 | - [Unicode](#unicode) 126 | - [エンディアン](#エンディアン) 127 | - [ネットワーキング](#ネットワーキング) 128 | - [最終レビュー](#最終レビュー) 129 | 130 | ## なぜこれを使用するのか 131 | 132 | 大企業でソフトウェア エンジニアとして働きたいのであれば、これらのことを知っておく必要があります。 133 | 134 | 私のようにコンピューター サイエンスの学位を取得できなかった場合は、これで人生の 4 年間取り戻すことができます。 135 | 136 | このプロジェクトを始めたとき、私はヒープからのスタックのことも、Big-O のことも、木についても、何も知りませんでした。 137 | グラフを横断します。もし私が並べ替えアルゴリズムをコーディングしなければならなかったとしたら、それは酷いことになるでしょう。 138 | 私がこれまで使用してきたデータ構造はすべて言語に組み込まれており、それがどのように機能するのかわかりませんでした。 139 | ボンネットの下にはまったくありません。実行しているプロセスで「不足」が発生しない限り、メモリを管理する必要はありませんでした。 140 | 「memory」エラーが発生した場合は、回避策を見つける必要があります。私は人生でいくつかの多次元配列を使用しましたが、 141 | 何千もの連想配列を作成しましたが、データ構造を最初から作成したことはありません。 142 | 143 | 長い計画ですね。何か月もかかるかもしれません。しかし、すでにこの内容の多くに精通している場合は、時間ははるかに短くなります。 144 | 145 | ## 使い方 146 | 147 | 以下はすべて概要であり、順に項目に取り組む必要があります。 148 | 149 | 私は進捗状況を追跡するためのタスク リストを含む、GitHub 風マークダウン を使用しています。 150 | 151 | - [GitHub 風マークダウンの詳細](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) 152 | 153 | ### git を使用したくない場合 154 | 155 | このページで、上部近くの「Code」ボタンをクリックし、「Download ZIP」をクリックします。ファイルを解凍すると、テキスト ファイルを操作できるようになります。 156 | 157 | マークダウンを理解できるコード エディターで開いている場合は、すべてが適切にフォーマットされていることを確認できます。 158 | 159 | ![リポジトリを zip ファイルとしてダウンロードする方法](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) 160 | 161 | ### git に慣れている場合 162 | 163 | 新しいブランチを作成して、次のような項目を確認できるようにします。括弧内に x を入力するだけです: [x] 164 | 165 | 1. **_GitHub リポジトリ:_** `https://github.com/jwasham/coding-interview-university` をフォーク ボタンをクリックしてフォークします。 166 | 167 | ![GitHub リポジトリをフォークする](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) 168 | 169 | 1. ローカル リポジトリにクローンを作成します。 170 | 171 | ```bash 172 | git clone https://github.com//coding-interview-university.git 173 | cd coding-interview-university 174 | git remote add upstream https://github.com/jwasham/coding-interview-university.git 175 | git remote set-url --push upstream DISABLE # 個人の進捗を元のレポにプッシュバックしないようにするため 176 | ``` 177 | 178 | 1. 変更を完了したら、すべてのボックスに X を付けます。 179 | 180 | ```bash 181 | git commit -am "Marked personal progress" 182 | git pull upstream main # 元のレポからの変更でフォークを最新に保つ 183 | 184 | git push # フォークにプッシュするだけ 185 | ``` 186 | 187 | ## 自信を無くさないでください 188 | 189 | - 成功した多くのソフトウェア エンジニアは自分が十分に賢くないのではないかという不安を抱えています。 190 | - 次のビデオは、この不安を解消するのに役立ちます。 191 | - [天才プログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) 192 | - [一人で行動するのは危険です: テクノロジーにおける目に見えないモンスターとの戦い](https://www.youtube.com/watch?v=1i8ylq4j_EY) 193 | 194 | --- 195 | 196 | ## ビデオリソースに関する注意 197 | 198 | 一部のビデオは、Coursera または EdX クラスに登録することによってのみ視聴できます。 199 | これらは MOOC と呼ばれます。 200 | 場合によっては、クラスが開催されていないため、数か月待たなければならず、アクセスできないこともあります。 201 | 202 | オンラインコースのリソースを、YouTube ビデオ (できれば大学の講義) など、いつでも利用できる無料の公開ソースに置き換えて、特定のオンラインコースの開催中だけでなく、いつでも学習できるようにするのは素晴らしいことです。 203 | 204 | ## プログラミング言語を選択してください 205 | 206 | コーディング面接に使用するプログラミング言語を選択する必要がありますが、コンピューターサイエンスの概念を学習するために使用できる言語も見つける必要があります。 207 | 208 | できれば、どちらか 1 つの言語に習熟するだけで済むように、言語が同じであることが望ましいです。 209 | 210 | ### この学習計画について 211 | 212 | 学習計画を立てたとき、そのほとんどで C と Python の 2 つの言語を使用しました。 213 | 214 | * C: 非常に低いレベル。ポインタとメモリの割り当て / 割り当て解除を処理できるため、データ構造を実感できます。 215 | そしてアルゴリズムが骨の中に組み込まれています。Python や Java などの高水準言語では、これらは表示されません。日々の仕事ではそれは素晴らしいことですが、これらの低レベルのデータ構造がどのように構築されるかを学んでいるときは、実際に近いと感じるのは素晴らしいことです。 216 | - C はどこにでもあります。勉強していると、書籍、講義、ビデオなど、*あらゆる場所*で例を見ることができます。 217 | - [C プログラミング言語 第 2 版](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) 218 | - これは短い本ですが、少し練習すれば C 言語をうまく扱えるようになります。 219 | すぐに上達します。C を理解すると、プログラムとメモリがどのように機能するかを理解するのに役立ちます。 220 | - 本を深く読み込む必要はありません(読み終える必要さえありません)。C で快適に読み書きできるところまで進んでください。 221 | * Python: 現代的で表現力が非常に豊かです。非常に便利で、面接で記述するコードの量も少なくて済むため、私はこれを学びました。 222 | 223 | これが私の好みです。もちろん、好きなことをしてください。 224 | 必要ないかもしれませんが、新しい言語を学習するためのサイトをいくつか紹介します。 225 | - [exercism](https://exercism.org/tracks) 226 | - [codewars](http://www.codewars.com) 227 | - [HackerEarth](https://www.hackerearth.com/for-developers/) 228 | - [SCALER Topics (Java、C++)](https://www.scaler.com/topics/) 229 | 230 | ### コーディング面接用 231 | 232 | 面接のコーディング部分には、使い慣れた言語を使用できますが、大企業の場合は、次の言語を選択するのが確実です。 233 | 234 | - C++ 235 | - Java 236 | - Python 237 | 238 | これらを使用することもできますが、最初に読んでください。注意事項がある場合があります: 239 | 240 | - JavaScript 241 | - Ruby 242 | 243 | 面接の言語の選択について私が書いた記事は次のとおりです: 244 | [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). 245 | 246 | これは私の投稿の元の記事です: 247 | [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) 248 | 249 | 言語に非常に慣れており、知識が豊富である必要があります。 250 | 251 | 選択肢について詳しくは、次を参照してください。 252 | - [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) 253 | 254 | [ここで言語固有のリソースを参照してください](programming-language-resources.md) 255 | 256 | ## データ構造とアルゴリズムに関する書籍 257 | 258 | ### C 259 | 260 | - [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) 261 | - 基礎、データ構造、並べ替え、検索、およびグラフのアルゴリズム 262 | 263 | ### Python 264 | 265 | - [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) 266 | - グッドリッチ、タマッシア、ゴールドワッサー著 267 | - この本が大好きでした。それはすべてを網羅し、それ以上のものでした。 268 | - Python コード 269 | - 私の素晴らしい本のレポート: https://startupnextdoor.com/book-report-data-structions-and-algorithms-in-python/ 270 | 271 | ### Java 272 | 273 | - Goodrich、Tamassia、Goldwasser 274 | - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) 275 | - セッジウィックとウェイン: 276 | - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) 277 | - この本をカバーする無料の Coursera コース (著者が教えます!): 278 | - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) 279 | - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) 280 | 281 | ### C++ 282 | 283 | - Goodrich、Tamassia、および Mount 284 | - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) 285 | - Sedgewick と Wayne 286 | - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) 287 | - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) 288 | 289 | ## 面接対策本 290 | 291 | たくさん買う必要はありません。正直なところ、「コーディング面接の攻略」で十分だと思いますが、さらに練習するためにさらに購入しました。しかし、私はいつもやりすぎます。 292 | 293 | これを両方購入しました。彼らは私にたくさんの練習をさせてくれました。 294 | 295 | - [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) 296 | - C++ および Java での回答 297 | - これコーディング面接を突破するための良いウォーミングアップです 298 | - それほど難しいことではありません。ほとんどの問題は、インタビューで見られるものよりも簡単かもしれません (私が読んだ内容によると) 299 | - [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) 300 | - Java での回答 301 | 302 | ### 時間がたくさんある場合: 303 | 304 | 1 つ選択してください: 305 | 306 | - [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) 307 | - [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) 308 | - [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) 309 | - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) 310 | 311 | ## 私と同じ間違いを犯さないでください 312 | 313 | このリストは何か月もかけて大きくなり、はい、手に負えなくなりました。 314 | 315 | より良い経験をしていただくために、私が犯したいくつかの間違いを以下に示します。そして、何か月も時間を節約できます。 316 | 317 | ### 1. すべてを覚えているわけではない 318 | 319 | 時間もビデオを見て大量のメモを取りましたが、数か月後には覚えていないことがたくさんありました。 320 | 3日間かけてメモを見直し、フラッシュカードを作成して復習しましたが、そんな知識は必要ありませんでした。 321 | 322 | 私と同じ間違いを犯さないように、 323 | 324 | [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) を読んでください。 325 | 326 | ### 2. フラッシュカードを使用する 327 | 328 | この問題を解決するために、一般とコードの 2 種類のフラッシュカードを追加できる小さなフラッシュカード サイトを作成しました。 329 | 各カードには異なる形式があります。どこにいても携帯電話やタブレットでレビューできるように、モバイルファーストのウェブサイトを作成しました。 330 | 331 | 無料で独自に作成します。 332 | 333 | - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) 334 | 335 | **フラッシュカードの使用はお勧めしません。** フラッシュカードが多すぎて、ほとんどがトリビアです。必要ありません。 336 | 337 | しかし、私の言うことを聞きたくない場合は、ここからどうぞ: 338 | - [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): 339 | - [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): 340 | 341 | やりすぎて、アセンブリ言語や Python のトリビアから機械学習や統計まで、あらゆるものをカバーするカードがあることに注意してください。 342 | 必要なものが多すぎます。 343 | 344 | **フラッシュカードに関する注意:** 初めて答えを知っていると気づいたときは、その答えを既知としてマークしないでください。 345 | 本当に理解するには、同じカードを見て何度か正しく答える必要があります。 346 | 繰り返すことで知識が脳に深く定着します。 347 | 348 | 私のフラッシュカード サイトを使用する代わりに、[Anki](http://ankisrs.net/) が私に何度も勧められてきました。 349 | 繰り返しシステムを使用しているので、覚えやすくなります。ユーザーフレンドリーで、すべてのプラットフォームで利用でき、クラウド同期システムを備えています。 350 | iOS では 25 ドルかかりますが、他のプラットフォームでは無料です。 351 | 352 | Anki 形式のフラッシュカード データベース: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). 353 | 354 | 一部の学生は、空白に関する書式の問題について次の手順を実行することで修正できると述べています。デッキを開いて、カードを編集し、カードをクリックし、「スタイル」ラジオ ボタンを選択して、メンバー「white-space: pre;」を追加します。カードクラスへ。 355 | 356 | ### 3. 学習中にコーディング面接の質問をする 357 | 358 | これは非常に重要です。 359 | 360 | データ構造とアルゴリズムを学習しながら、コーディング面接の質問に答え始めます。 361 | 362 | 問題を解決するには、学んだことを応用する必要があります。そうしないと忘れてしまいます。私はこの間違いを犯しました。 363 | 364 | トピックを学習し、**リンク リスト** などにある程度慣れたら: 365 | 1. [面接対策本](#面接対策本)のいずれかを開きます(または、以下にリストされているコーディングに関する問題の Web サイト) 366 | 1. 次の学習トピックに進みます。 367 | 1. その後、戻って別の 2 つまたは 3 つのリンク リストの問題を解きます。 368 | 1. 新しいトピックを学ぶたびにこれを行います。 369 | 370 | **学習後ではなく、学習している間も問題を解き続けてください。** 371 | 372 | あなたは知識のために雇われているのではなく、その知識をどのように応用するかによって雇われているのです。 373 | 374 | 以下に示すように、これに関する多くのリソースがあります。続けて。 375 | 376 | ### 4. 集中する 377 | 378 | 気を散らすものがたくさんあり、貴重な時間が奪われてしまう可能性があります。集中力と集中力は難しいです。歌詞のない音楽をかける 379 | と、かなり集中できるようになります。 380 | 381 | ## 取り上げられていないもの 382 | 383 | 以下は一般的なテクノロジですが、この学習計画には含まれていません: 384 | 385 | - Javascript 386 | - HTML、CSS、およびその他のフロントエンドテクノロジ 387 | - SQL 388 | 389 | ## 日次計画 390 | 391 | このコースでは多くの主題について説明します。おそらくそれぞれに数日、場合によっては 1 週間以上かかる場合があります。それはあなたのスケジュール次第です。 392 | 393 | 毎日、リストの次の主題を取り上げ、その主題に関するビデオをいくつか見てから、 394 | このコース用に選択した言語でそのデータ構造またはアルゴリズムの実装を作成します。 395 | 396 | 私のコードはここで見ることができます: 397 | - [C](https://github.com/jwasham/practice-c) 398 | - [C++](https://github.com/jwasham/practice-cpp) 399 | - [Python]( https://github.com/jwasham/practice-python) 400 | 401 | すべてのアルゴリズムを覚える必要はありません。独自の実装を作成できる程度に理解できれば十分です。 402 | 403 | ## コーディングに関する質問の練習 404 | 405 | なぜこれがここにあるのでしょうか? 面接する準備ができていません。 406 | 407 | [その後、戻ってこれを読んでください。](#学習中にコーディング面接の質問をする) 408 | 409 | プログラミングの問題を練習する必要がある理由: 410 | - 問題の認識、および適切なデータ構造とアルゴリズムがどこに適合するか 411 | - 問題の要件を収集する 412 | - 面接で行うのと同じように、問題について自分なりに説明する 413 | - コンピューターではなく、ホワイトボードまたは紙にコーディングする 414 | - 解決策のための時間と空間の複雑さを考え出す (下記の Big-O を参照) 415 | - テストあなたの解決策 416 | 417 | 面接で体系的かつコミュニケーション的に問題を解決するための素晴らしい入門書があります。これはプログラミングのインタビュー本からもわかります 418 | が、私はこれが素晴らしいと思いました: 419 | [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) 420 | 421 | コードを紙ではなく、ホワイトボードまたは紙に書きます。コンピューター。いくつかのサンプル入力を使用してテストします。次に、それを入力してコンピュータでテストします。 422 | 423 | 家にホワイトボードがない場合は、画材店で大きな描画パッドを購入してください。ソファに座って練習することもできます。 424 | こちらは私の「ソファホワイトボード」です。写真ではスケールを調整するためにペンを追加しました。ペンを使っていると、消せたらいいのにと思うでしょう。 425 | すぐに散らかります。**鉛筆と消しゴムを使用します。** 426 | 427 | ![my sofa whiteboar](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) 428 | 429 | **コーディングの問題の練習は、プログラミングの問題の答えを覚えることではありません。** 430 | 431 | ## コーディングの問題 432 | 433 | [ここ](#面接対策本) の主要なコーディング インタビュー ブックを忘れないでください。 434 | 435 | 問題の解決: 436 | - [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) 437 | - [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) 438 | 439 | コーディング インタビューの質問ビデオ: 440 | - [IDeserve (88 videos)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) 441 | - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) 442 | - 問題解決策のウォークスルーに最適 443 | - [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) 444 | - ソリューションとコードの適切な説明 445 | - 短時間で何本も視聴できる 446 | - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) 447 | 448 | チャレンジ/練習サイト: 449 | - [LeetCode](https://leetcode.com/) 450 | - 私のお気に入りのコーディングの問題サイト。おそらく準備する 1 ~ 2 か月分の購読料を払う価値があります。 451 | - コードのウォークスルーについては、上記の Nick White と FisherCoder のビデオを参照してください。 452 | - [HackerRank](https://www.hackerrank.com/) 453 | - [TopCoder](https://www.topcoder.com/) 454 | - [Codeforces](https://codeforces.com/) 455 | - [Codility](https://codility.com/programmers/) 456 | - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) 457 | - [AlgoExpert](https://www.algoexpert.io/product) 458 | - Google のエンジニアによって作成されたこれは、スキルを磨くための優れたリソースでもあります。 459 | - [Project Euler](https://projecteuler.net/) 460 | - 非常に数学に重点が置かれており、コーディング面接にはあまり適していません 461 | 462 | ## 始めましょう 463 | 464 | さて、話は十分です、学びましょう! 465 | 466 | ただし、学習中に上記のコーディング問題に取り組むことを忘れないでください。 467 | 468 | ## アルゴリズムの複雑さ/Big-O/漸近分析 469 | 470 | - ここでは何も実装する必要はありません。ビデオを見てメモを取るだけです。わーい! 471 | - ここにはたくさんのビデオがあります。理解できるまで十分に見てください。いつでも戻ってレビューすることができます。 472 | - 背後にある数学がすべて理解できなくても心配する必要はありません。 473 | - Big-O の観点からアルゴリズムの複雑さを表現する方法を理解する必要があるだけです。 474 | - [ ] [ハーバード CS50 - 漸近記法 (動画)](https://www.youtube.com/watch?v=iOq5kSKqeR4) 475 | - [ ] [Big O Notations (一般的なクイック チュートリアル) (動画)](https://www.youtube.com/watch?v=V6mKVRU1evU) 476 | - [ ] [Big O Notation (およびオメガとシータ) - 最良の数学的説明 (動画)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) 477 | - [ ] [スキエナ](https://www.youtube.com/watch?v=z1mkCe3kVUA) 478 | - [ ] [カリフォルニア大学バークレー校ビッグオー (動画)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) 479 | - [ ] [償却分析 (動画)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) 480 | - [ ] TopCoder (漸化式とマスター定理を含む): 481 | - [計算の複雑さ: セクション 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) 482 | - [計算の複雑さ: セクション 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) 483 | - [ ] [チートシート](http://bigocheatsheet.com/) 484 | - [ ] [【復習】5分でわかるBig-O記譜法(動画)](https://youtu.be/__vX2sjlpXU) 485 | 486 | 487 | まあ、それだけで十分です。 488 | 489 | 「コーディング インタビューの解読」を進めると、これに関する章があり、最後に、さまざまなアルゴリズムの実行時の複雑さを特定できるかどうかを確認するクイズがあります。それはスーパーレビューとテストです。 490 | 491 | ## データ構造 492 | 493 | - ### 配列 494 | - [ ] 配列について: 495 | - [アレイ CS50 ハーバード大学](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) 496 | - [配列 (動画)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) 497 | - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (動画) (15 分 32 秒から視聴開始)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) 498 | - [動的配列 (動画)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) 499 | - [ギザギザ配列 (動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) 500 | - [ ] ベクトルを実装します (自動サイズ変更を備えた可変配列): 501 | - [ ] 配列とポインターを使用したコーディングと、インデックスを使用する代わりにインデックスにジャンプするポインターの計算を練習します。 502 | - [ ] メモリが割り当てられた新しい生データ配列 503 | - 内部で int 配列を割り当てることができますが、その機能は使用できません 504 | - 16 から開始するか、開始番号がそれより大きい場合は、2 のべき乗 - 16、32、64、128 を使用します。 505 | - [ ] size() - アイテムの数 506 | - [ ] Capacity() - 保持できるアイテムの数 507 | - [ ] is_empty() 508 | - [ ] at(index) - 指定されたインデックスにある項目を返します。インデックスが範囲外の場合は爆発します。 509 | - [ ] プッシュ(アイテム) 510 | - [ ] insert(index, item) - インデックスに項目を挿入し、そのインデックスの値と末尾の要素を右にシフトします 511 | - [ ] prepend(item) - インデックス 0 の上に挿入を使用できます 512 | - [ ] Pop() - 末尾から削除し、値を返します 513 | - [ ] delete(index) - インデックスにある項目を削除し、末尾の要素をすべて左にシフトします 514 | - [ ]remove(item) - 値を検索し、それを保持するインデックスを削除します (複数の場所にある場合でも) 515 | - [ ] find(item) - 値を検索し、その値を持つ最初のインデックスを返します。見つからない場合は -1 を返します。 516 | - [ ]size(new_capacity) // プライベート関数 517 | - 容量に達したら、サイズを 2 倍に変更します 518 | - アイテムをポップするとき、サイズが容量の 1/4 の場合、サイズを半分に変更します 519 | - [ ] 時間 520 | - O(1) は、最後に追加/削除 (より多くの領域の割り当てのために償却)、インデックス付け、または更新を行います。 521 | - O(n) は他の場所に挿入/削除します 522 | - [ ] 空間 523 | - メモリ内で連続しているため、近接性によりパフォーマンスが向上します 524 | - 必要なスペース = (配列の容量、>= n) * 項目のサイズ、ただし 2n であっても O(n) 525 | 526 | - ### 連結リスト 527 | - [ ] 説明: 528 | - [ ] [単独連結されたリスト(動画)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) 529 | - [ ] [CS 61B - 連結リスト1(動画)](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7) 530 | - [ ] [CS 61B - 連結リスト2(動画)](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C) 531 | - [ ] [[レビュー] 4 分でわかるリンクリスト (動画)](https://youtu.be/F8AbOfQwl1c) 532 | - [ ] [Cコード(動画)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) 533 | - ビデオ全体ではなく、ノード構造とメモリ割り当てに関する部分のみ 534 | - [ ] 連結リストと配列: 535 | - [コア連結リストと配列 (動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) 536 | - [現実世界の連結リストと配列 (動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs) 537 | - [ ] [連結リスト(動画)を避けるべき理由](https://www.youtube.com/watch?v=YQs6IC-vgmo) 538 | - [ ] 注意事項: ポインタからポインタへの知識が必要です: (ポインタが指すアドレスを変更する可能性のある関数にポインタを渡すときのため) このページは、ptr から ptr への理解だけを目的としています。このリスト走査スタイルはお勧めしません。賢いため、可読性と保守性が低下します。 539 | - [ポインターへのポインター](https://www.eskimo.com/~scs/cclass/int/sx8.html) 540 | - [ ] 実装する(私はテールポインタ&なしで行った): 541 | - [ ] size() - リスト内のデータ要素の数を返す 542 | - [ ] empty() - 空の場合はboolを返します 543 | - [ ] value_at(index) - n番目の項目の値を返します(最初は0から始まります) 544 | - [ ] push_front(value) - リストの先頭に項目を追加します 545 | - [ ] pop_front() - 前面アイテムを削除してその値を返します 546 | - [ ] push_back(value) - 最後に項目を追加する 547 | - [ ] pop_back() - 終了アイテムを削除し、その値を返します 548 | - [ ] front() - フロントアイテムの値を取得する 549 | - [ ] back() - 終了項目の値を取得する 550 | - [ ] insert(index、value) - インデックスに値を挿入するので、そのインデックスの現在のアイテムはインデックスの新しいアイテムによってポイントされます 551 | - [ ] erase(index) - 指定したインデックスのノードを削除する 552 | - [ ] value_n_from_end(n) - リストの最後からn番目のノードの値を返します 553 | - [ ] reverse() - リストを反転する 554 | - [ ] remove_value(value) - この値を持つリストの最初の項目を削除します。 555 | - [ ] 二重連結リスト 556 | - [説明(動画)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) 557 | - 実装する必要はありません 558 | 559 | - ### スタック 560 | - [ ] [スタック (動画)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) 561 | - [ ] [【復讐】3分でわかるスタック(動画)](https://youtu.be/KcT3aVgrrpU) 562 | - [ ] 実装しません。配列を使った実装は簡単です 563 | 564 | - ### キュー 565 | - [ ] [キュー(動画)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) 566 | - [ ] [環状バッファ/ FIFO](https://en.wikipedia.org/wiki/Circular_buffer) 567 | - [ ] [【復習】3分でわかるキュー(動画)](https://youtu.be/D6gu-_tmEpQ) 568 | - [ ] テールポインタ付き連結リストを使って実装する: 569 | - enqueue(value) - テールの位置に値を追加する 570 | - dequeue() - 値を返し、少なくとも最近追加された要素を削除する(前面) 571 | - empty() 572 | - [ ] 固定長配列を使って実装する: 573 | - enqueue(value) - 利用可能なストレージの最後にアイテムを追加する 574 | - dequeue() - 値を返し、最近追加された要素のうち最も古い要素を削除します 575 | - empty() 576 | - full() 577 | - [ ] コスト: 578 | - 先頭でエンキューし、末尾でデキューするリンク リストを使用した悪い実装では、最後から 2 番目の要素が必要になるため、O(n) となり、各デキューの完全な走査が発生します。 579 | - enqueue:O(1)(償却、連結リストと配列[プロービング]) 580 | - dequeue:O(1)(連結リストと配列) 581 | - empty:O(1)(連結リストと配列) 582 | 583 | - ### ハッシュテーブル 584 | - [ ] 動画: 585 | - [ ] [チェーンを使用したハッシュ (動画)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) 586 | - [ ] [テーブルダブリング、Karp-Rabin (動画)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 587 | - [ ] [公開アドレス指定、暗号化ハッシング(動画)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 588 | - [ ] [PyCon 2010: 強力な辞書 (動画)](https://www.youtube.com/watch?v=C4Kc8xzcA68) 589 | - [ ] [PyCon 2017: 辞書がさらに強力に (動画))](https://www.youtube.com/watch?v=66P5FMkWoVU) 590 | - [ ] [(上級)Randomization:ユニバーサル&完全 ハッシング(動画)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) 591 | - [ ] [(高度)完全ハッシング(動画)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) 592 | - [ ] [【復習】4分でわかるハッシュテーブル(動画)](https://www.youtube.com/watch?v=knV86FlSXJ8) 593 | 594 | - [ ] オンラインコース: 595 | - [ ] [コアハッシュテーブル(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) 596 | - [ ] [データ構造(動画)](https://www.coursera.org/learn/data-structures/home/week/3) 597 | - [ ] [電話帳の問題(動画)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) 598 | - [ ] 分散ハッシュテーブル: 599 | - [Dropbox でのインスタント アップロードとストレージの最適化 (動画)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) 600 | - [分散ハッシュテーブル(動画)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) 601 | 602 | - [ ] 線形プロービングを使用して配列で実装する 603 | - hash(k、m) - mはハッシュテーブルのサイズです 604 | - add(key、value) - キーがすでに存在する場合は、値を更新します。 605 | - exists(キー) 606 | - get(key) 607 | - remove(キー) 608 | 609 | ## その他の知識 610 | 611 | - ### 二分探索 612 | - [ ] [二分探索(動画)](https://www.youtube.com/watch?v=D5SrAga1pno) 613 | - [ ] [二分探索(動画)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) 614 | - [ ] [詳細](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) 615 | - [ ] [ブループリント](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) 616 | - [ ] [【復習】4分でわかる二分探索(動画)](https://youtu.be/fDKIpRe8GW4) 617 | - [ ] 実装: 618 | - 二分探索(ソートされた整数の配列) 619 | - 再帰を利用した二分探索 620 | 621 | - ### ビット演算 622 | - [ ] [ビットチートシート](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) 623 | - (2^1 から 2^16 および 2^32) までの 2 のべき乗の多くを知っておく必要があります 624 | - [ ] &、|、^、〜、>>、<<を使ってビットを操作することについての本当の理解を得る 625 | - [ ] [言語](https://en.wikipedia.org/wiki/Word_(computer_architecture)) 626 | - [ ]  [良いイントロ:ビット操作(動画)](https://www.youtube.com/watch?v=7jkIUgLC29I) 627 | - [ ] [Cプログラミングチュートリアル2-10:ビット演算子(動画)](https://www.youtube.com/watch?v=d0AwjSpNXR0) 628 | - [ ] [ビット操作](https://en.wikipedia.org/wiki/Bit_manipulation) 629 | - [ ] [ビット演算](https://en.wikipedia.org/wiki/Bitwise_operation) 630 | - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) 631 | - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) 632 | - [ ] [インタラクティブなBit Twiddler](http://bits.stephan-brumme.com/interactive.html) 633 | - [ ] 2と1の補数 634 | - [バイナリ:Plusses&Minuses(なぜ2の補数を使うのか)(動画)](https://www.youtube.com/watch?v=lKTsv6iVxV4) 635 | - [1の補数](https://en.wikipedia.org/wiki/Ones%27_complement) 636 | - [2の補数](https://en.wikipedia.org/wiki/Two%27s_complement) 637 | - [ ] カウントセットビット 638 | - [1バイトのビットを数える4つの方法(動画)](https://youtu.be/Hzuzo9NJrlc) 639 | - [カウントビット](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) 640 | - [セットビットの数を32ビット整数で数える方法](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32ビット整数) 641 | - [ ] カウントセットビット: 642 | - [バイト内のビットを数える 4 つの方法 (動画)](https://youtu.be/Hzuzo9NJrlc) 643 | - [ビットをカウントする](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) 644 | - [32 ビット整数のセットビット数を数える方法](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) 645 | - [ ] スワップ値: 646 | - [スワップ](http://bits.stephan-brumme.com/swap.html) 647 | - [ ] 絶対値: 648 | - [絶対整数](http://bits.stephan-brumme.com/absInteger.html) 649 | 650 | ## ツリー 651 | 652 | - ### ツリーとは 653 | - [ ] [ツリーの紹介 (動画)](https://www.coursera.org/lecture/data-structures/trees-95qda) 654 | - [ ] [ツリートラバーサル (動画)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) 655 | - [ ] [BFS (幅優先検索) および DFS (深さ優先検索) (動画)](https://www.youtube.com/watch?v=uWL6FJhq5fM) 656 | - BFS のメモ: 657 | - レベル順序 (BFS、キューを使用) 658 | - 時間計算量: O(n) 659 | - 空間の複雑さ: 最良: O(1)、最悪: O(n/2)=O(n) 660 | - DFS のメモ: 661 | - 時間計算量: O(n) 662 | - 空間複雑さ: 最良: O(log n) 663 | - 平均 最高の木の高さ: O(n) 664 | best: O(log n) 665 | - 平均 最低の木の高さ: O(n) 666 | worst: O(n) 667 | - 順序 (DFS: 左、自分、右) 668 | - 事後順序 (DFS: 左、右、自己) 669 | - 予約注文 (DFS: 自分、左、右) 670 | - [ ] [【復習】4分でわかる幅優先検索(動画)](https://youtu.be/HZ5YTanv5QE) 671 | - [ ] [【復習】4分で深さ優先検索(動画)](https://youtu.be/Urx87-NMm6c) 672 | - [ ] [【復習】11 分でわかるツリー トラバーサル (プレイリスト) (動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) 673 | 674 | - ### 二分探索木:BST 675 | - [ ] [二分探索木の復習 (動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) 676 | - [ ] [はじめに(動画)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) 677 | - [ ] [MIT (動画)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) 678 | - C / C ++: 679 | - [ ] [二分探索木 - C / C ++での実装(動画)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) 680 | - [ ] [BSTの実装 - スタックとヒープのメモリ割り当て(動画)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) 681 | - [ ] [二分探索木(動画)の最小要素と最大要素を検索](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 682 | - [ ] [二分木の高さを見つける(動画)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) 683 | - [ ] [二分木トラバース - 幅優先戦略(動画)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) 684 | - [ ] [二分木:レベルオーダートラバーサル(動画)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 685 | - [ ] [二分木トラバーサル:Preorder、Inorder、Postorder(video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 686 | - [ ] [二分木が二分探索木かどうかを確認する(動画)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 687 | - [ ] [二分探索木(動画)からノードを削除](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) 688 | - [ ] [二分探索木(動画)のInorder Successor](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) 689 | - [ ] 実装: 690 | - [ ] [insert // ツリーに値を挿入します](https://leetcode.com/problems/insert-into-a-binary-search-tree/submissions/987660183/) 691 | - [ ] get_node_count //格納された値の数を取得する 692 | - [ ] print_values //最小値から最大値まで木の値を出力します 693 | - [ ] delete_tree 694 | - [ ] is_in_tree //与えられた値が木に存在する場合はtrueを返します 695 | - [ ] [get_height // ノード単位の高さを返します (単一ノードの高さは 1)](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) 696 | - [ ] get_min //木に格納されている最小値を返します 697 | - [ ] get_max //木に格納されている最大値を返します 698 | - [ ] [is_binary_search_tree](https://leetcode.com/problems/validate-binary-search-tree/) 699 | - [ ] delete_value 700 | - [ ] get_successor //指定された値の後に木の次に高い値を返し、存在しなければ-1を返します 701 | 702 | - ### ヒープ/優先度つきキュー/二分ヒープ 703 | - 木として可視化されますが、通常はストレージ内で線形です(配列、連結リスト) 704 | - [ ] [ヒープ](https://en.wikipedia.org/wiki/Heap_(data_structure)) 705 | - [ ] [はじめに(動画)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) 706 | - [ ] [ナイーブな実装(動画)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) 707 | - [ ] [二分木(動画)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) 708 | - [ ] [木の高さ備考(動画)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) 709 | - [ ] [基本的な操作(動画)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) 710 | - [ ] [完全な二分木(動画)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) 711 | - [ ] [疑似コード(動画)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) 712 | - [ ] [ヒープソート - ジャンプして開始(動画)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) 713 | - [ ] [ヒープソート(動画)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) 714 | - [ ] [ヒープを作る(動画)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) 715 | - [ ] [MIT:ヒープとヒープソート(動画)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 716 | - [ ] [CS 61B講義24:優先度つきキュー(動画)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) 717 | - [ ] [線形時間ビルドヒープ (最大ヒープ)](https://www.youtube.com/watch?v=MiyLo8adrWw) 718 | - [ ] [【復習】13分でヒープ(プレイリスト)(動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) 719 | - [ ] 最大ヒープを実装する: 720 | - [ ] insert 721 | - [ ] sift_up - 挿入に必要 722 | - [ ] get_max - 最大項目を削除せずに返します 723 | - [ ] get_size() - 格納された要素の数を返す 724 | - [ ] is_empty() - ヒープに要素が含まれていない場合はtrueを返します。 725 | - [ ] extract_max - 最大アイテムを返し、それを削除します。 726 | - [ ] sift_down - extract_maxに必要です 727 | - [ ] remove(x) - インデックスxのアイテムを削除する 728 | - [ ] heapify - heap_sortに必要な要素の配列からヒープを作成する 729 | - [ ] heap_sort() - ソートされていない配列を取得し、最大ヒープまたは最小ヒープを使用してその場でソートされた配列に変換します。 730 | 731 | ## ソート 732 | 733 | - [ ] ノート: 734 | - ソートを実装し、最良のケース/最悪のケース、それぞれの平均的な複雑さを知る: 735 | - バブルソートなし - ひどいです - O(n^2) (n <= 16 の場合を除く) 736 | - ソートアルゴリズムの安定性( "Quicksortは安定していますか?") 737 | - [ソートアルゴリズムの安定性](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) 738 | - [ソートアルゴリズムの安定性](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) 739 | - [ソートアルゴリズムの安定性](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) 740 | - [ソートアルゴリズム - 安定性](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) 741 | - [ ] 連結リストで使用できるアルゴリズムはどれですか?どの配列ですか?両方でどちら? 742 | - 連結リストのソートはお勧めしませんが、マージソートは実行可能です。 743 | - [連結リストのマージソート](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) 744 | 745 | - ヒープソートについては、上記のヒープデータ構造を参照してください。ヒープソートは素晴らしいですが、安定していません。 746 | 747 | - [ ] [セッジウィック - マージソート (5動画)](https://www.coursera.org/learn/algorithms-part1/home/week/3) 748 | - [ ] [1. マージソート](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) 749 | - [ ] [2. ボトムアップ マージソート](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) 750 | - [ ] [3. 並べ替えの複雑さ](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) 751 | - [ ] [4. コンパレーター](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) 752 | - [ ] [5. 安定性](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) 753 | 754 | - [ ] [セッジウィック - クイックソート (4動画)](https://www.coursera.org/learn/algorithms-part1/home/week/3) 755 | - [ ] [1. クイックソート](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) 756 | - [ ] [2. セレクション](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) 757 | - [ ] [3. 重複キー](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) 758 | - [ ] [4. システムソート](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) 759 | 760 | - [ ] カリフォルニア大学バークレー校: 761 | - [ ] [CS 61B 講義 29: 並べ替え I (動画)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) 762 | - [ ] [CS 61B 講義 30: 並べ替え II (動画)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) 763 | - [ ] [CS 61B 講義 32: 分類 III (動画)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) 764 | - [ ] [CS 61B レクチャー 33: 並べ替え V (動画)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) 765 | - [ ] [CS 61B 2014-04-21: 基数ソート (動画)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) 766 | 767 | - [ ] [バブルソート(動画)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) 768 | - [ ] [バブルソートの分析(動画)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) 769 | - [ ] [挿入ソート、マージソート(動画)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 770 | - [ ] [挿入ソート(動画)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) 771 | - [ ] [マージソート(動画)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) 772 | - [ ] [クイックソート(動画)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) 773 | - [ ] [選択ソート(動画)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) 774 | 775 | - [ ] ソート コードを結合: 776 | - [ ] [出力配列 (C) の使用](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) 777 | - [ ] [出力配列の使用 (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) 778 | - [ ] [インプレース (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) 779 | - [ ] クイックソートコード: 780 | - [ ] [実装 (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) 781 | - [ ] [実装 (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) 782 | - [ ] [実装 (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) 783 | 784 | 785 | - [ ] [【復習】18分で分かるソート(プレイリスト](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) 786 | - [ ] [4 分で簡単ソート (動画)](https://youtu.be/Hoixgm4-P4M) 787 | - [ ] [4 分でヒープソート (動画)](https://youtu.be/2DmK_H7IdTo) 788 | - [ ] [3 分で並べ替えをマージする (動画)](https://youtu.be/4VqmGXwpLqc) 789 | - [ ] [2 分でわかるバブルソート (動画)](https://youtu.be/xli_FI7CuzA) 790 | - [ ] [3分でわかる選択ソート(動画)](https://youtu.be/g-PGLbMth_g) 791 | - [ ] [2分で挿入ソート(動画)](https://youtu.be/JU767SDMDvA) 792 | 793 | 794 | - [ ] 実装 795 | - [ ] マージソート: O(n log n) 平均および最悪の場合 796 | - [ ] クイックソート O(n log n) の平均ケース 797 | - 選択ソートと挿入ソートは両方とも O(n^2) 平均および最悪の場合です 798 | - ヒープソートについては、上記のヒープ データ構造を参照してください。 799 | 800 | - [ ] 必須ではありませんが、お勧めします: 801 | - [ ] [Sedgewick - 基数ソート (6動画)](https://www.coursera.org/learn/algorithms-part2/home/week/3) 802 | - [ ] [1. Java の文字列](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) 803 | - [ ] [2. キーのインデックス付きカウント](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) 804 | - [ ] [3. 最下位桁の最初の文字列基数ソート](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) 805 | - [ ] [4. 最上位桁の最初の文字列基数ソート](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) 806 | - [ ] [5. 3 ウェイ基数クイックソート](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) 807 | - [ ] [6. サフィックス配列](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) 808 | - [ ] [基数ソート](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) 809 | - [ ] [基数ソート (動画)](https://www.youtube.com/watch?v=xhr26ia4k38) 810 | - [ ] [基数ソート、カウンティング ソート (線形時間指定制約) (動画)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 811 | - [ ] [ランダム化: 行列乗算、クイックソート、フライヴァルドのアルゴリズム (動画)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 812 | - [ ] [線形時間でのソート (動画)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) 813 | 814 | 概要として、[15のソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg) を視覚的に表したものを次に示します。 815 | この主題についてさらに詳細が必要な場合は、[一部の主題に関する追加の詳細](#一部の主題に関する追加の詳細) の「並べ替え」セクションを参照してください。 816 | 817 | 818 | ## グラフ 819 | 820 | グラフはコンピューター サイエンスの多くの問題を表すために使用できるため、このセクションはツリーや並べ替えと同様に長くなります。 821 | 822 | - ノート: 823 | - メモリ内でグラフを表現するには 4 つの基本的な方法があります。 824 | - オブジェクトとポインタ 825 | - 隣接行列 826 | - 隣接リスト 827 | - 隣接マップ 828 | - それぞれの表現とその長所と短所をよく理解する 829 | - BFS と DFS - 計算の複雑さ、トレードオフ、および実際のコードでの実装方法を理解しています。 830 | - 質問されたら、まずグラフベースの解決策を探し、見つからない場合は次に進みます。 831 | 832 | - [ ] MIT(ビデオ): 833 | - [ ] [幅優先検索](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) 834 | - [ ] [深さ優先検索](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) 835 | 836 | - [ ] スキエナ講義 - 素晴らしい導入部: 837 | - [ ] [CSE373 2020 - レクチャー 10 - グラフ データ構造 (動画)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) 838 | - [ ] [CSE373 2020 - レクチャー 11 - グラフ トラバーサル (動画)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) 839 | - [ ] [CSE373 2020 - レクチャー 12 - 深さ優先検索 (動画)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) 840 | - [ ] [CSE373 2020 - レクチャー 13 - 最小スパニング ツリー (動画)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) 841 | - [ ] [CSE373 2020 - レクチャー 14 - 最小スパニング ツリー (続き) (動画)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) 842 | - [ ] [CSE373 2020 - レクチャー 15 - グラフ アルゴリズム (続き 2) (動画)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) 843 | 844 | - [ ] グラフ (レビューなど): 845 | - [ ] [6.006 単一ソース最短パス問題 (動画)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 846 | - [ ] [6.006 ダイクストラ (動画)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) 847 | - [ ] [6.006 ベルマン-フォード (動画)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) 848 | - [ ] [6.006 ディクストラの高速化 (動画)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) 849 | - [ ] [Aduni: グラフ アルゴリズム I - トポロジカル ソート、最小スパニング ツリー、プリムのアルゴリズム - 講義 6 (動画)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 850 | - [ ] [Aduni: グラフ アルゴリズム II - DFS、BFS、クラスカルのアルゴリズム、Union Find データ構造 - 講義 7 (動画)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) 851 | - [ ] [Aduni: グラフ アルゴリズム III: 最短パス - レクチャー 8 (動画)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) 852 | - [ ] [Aduni: グラフ Alg. IV: 幾何学的アルゴリズムの概要 - レクチャー 9 (動画)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) 853 | - [ ] [CS 61B 2014: 加重グラフ (動画)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) 854 | - [ ] [貪欲なアルゴリズム: 最小スパニング ツリー (動画)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 855 | - [ ] [強結合コンポーネント コサラジュのアルゴリズム グラフ アルゴリズム (動画)](https://www.youtube.com/watch?v=RpgcYiky7uw) 856 | - [ ] [[復習] 16 分でわかる最短経路アルゴリズム (プレイリスト) (動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) 857 | - [ ] [[復習] 4 分でわかる最小スパニング ツリー (プレイリスト) (動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) 858 | 859 | - フルcourseraコース: 860 | - [ ] [グラフのアルゴリズム(動画)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) 861 | 862 | - 次のことを実装します。 863 | - [ ] 隣接リストを含む DFS (再帰的) 864 | - [ ] 隣接リストを使用した DFS (スタックによる反復) 865 | - [ ] 隣接行列を使用した DFS (再帰的) 866 | - [ ] 隣接行列を使用した DFS (スタックによる反復) 867 | - [ ] 隣接リストを含む BFS 868 | - [ ] 隣接マトリックスを使用した BFS 869 | - [ ] 単一ソースの最短パス (ダイクストラ) 870 | - [ ] 最小スパニングツリー 871 | - DFSベースのアルゴリズム(上記のAduniの動画を参照): 872 | - [ ] サイクルをチェックする(トポロジカルソートに必要.開始前にサイクルをチェックする) 873 | - [ ] トポロジカルソート 874 | - [ ] グラフ内の接続されたコンポーネントをカウントする 875 | - [ ] 強く接続されたコンポーネントを一覧表示する 876 | - [ ] 二部グラフをチェックする 877 | 878 | ## さらに多くの知識 879 | 880 | - ### 再帰 881 | - [ ] 再帰とバックトラッキングに関するスタンフォードの講義: 882 | - [ ] [講義 8 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) 883 | - [ ] [講義 9 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) 884 | - [ ] [講義 10 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) 885 | - [ ] [講義 11 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) 886 | - いつ使用するのが適切ですか? 887 | - 末尾再帰をしない場合と比べて、どのような点が優れているのでしょうか? 888 | - [ ] [末尾再帰とは何ですか、なぜそれほど悪いのですか?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) 889 | - [ ] [末尾再帰 (動画)](https://www.coursera.org/lecture/programming-langages/tail-recursion-YZic1) 890 | - [ ] [再帰的問題を解決するための 5 つの簡単なステップ (動画)](https://youtu.be/ngCos392W4w) 891 | バックトラッキング ブループリント: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-回文分割)) [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) 892 | 893 | - ### 動的プログラミング 894 | - おそらく面接では動的プログラミングの問題は見られないでしょうが、問題を認識できるようにしておくことは価値があります。 895 | 動的計画法の候補としての問題。 896 | - それぞれの DP 解決問題は再帰関係として定義する必要があり、それを思いつくのは難しい場合があるため、このテーマはかなり難しい場合があります。 897 | - 関連するパターンをしっかりと理解するまで、DP 問題の多くの例を検討することをお勧めします。 898 | - [ ] 動画: 899 | - [ ] [Skiena: CSE373 2020 - レクチャー 19 - 動的プログラミング入門 (動画)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) 900 | - [ ] [Skiena: CSE373 2020 - レクチャー 20 - 距離の編集 (動画)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) 901 | - [ ] [Skiena: CSE373 2020 - レクチャー 20 - 距離の編集 (続き) (動画)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) 902 | - [ ] [Skiena: CSE373 2020 - レクチャー 21 - 動的プログラミング (動画)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) 903 | - [ ] [Skiena: CSE373 2020 - レクチャー 22 - 動的プログラミングとレビュー (動画)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) 904 | - [ ] [Simonson: 動的プログラミング 0 (59:18 から開始) (動画)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) 905 | - [ ] [Simonson: 動的プログラミング I - 講義 11 (動画)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 906 | - [ ] [サイモンソン: 動的プログラミング II - 講義 12 (動画)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) 907 | - [ ] 個々の DP 問題のリスト (それぞれ短い): [ダイナミック プログラミング (動画)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) 908 | - [ ] イェール講義ノート: 909 | - [ ] [動的プログラミング](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicプログラミング) 910 | - [ ] Coursera: 911 | - [ ] [RNA二次構造の問題(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) 912 | - [ ] [動的プログラミングのアルゴリズム(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) 913 | - [ ] [DPアルゴリズムの説明(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) 914 | - [ ] [DPアルゴリズムの実行時間(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) 915 | - [ ] [DPと再帰的実装(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) 916 | - [ ] [グローバル対配列アライメント(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) 917 | - [ ] [ローカル対配列アライメント(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) 918 | 919 | - ### デザインパターン 920 | - [ ] [UMLの簡単なレビュー(動画)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) 921 | - [ ] これらのパターンを学ぶ: 922 | - [ ] Strategy(戦略) 923 | - [ ] Singleton(単一要素) 924 | - [ ] Adapter(アダプタ) 925 | - [ ] Prototype(原型) 926 | - [ ] Decorator(装飾者) 927 | - [ ] Visitor(訪問者) 928 | - [ ] Factory,AbstractFactory(工場、抽象工場) 929 | - [ ] Facade(外見) 930 | - [ ] Observer(観察者) 931 | - [ ] Proxy(代理) 932 | - [ ] Delegate(委任) 933 | - [ ] Command(命令) 934 | - [ ] State(状態) 935 | - [ ] Memento(記念品) 936 | - [ ] Iterator(イテレータ) 937 | - [ ] Composite(合成) 938 | - [ ] Flyweight(フライ級) 939 | - [ ] [一連の動画 (27 本)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) 940 | - [ ] [書籍: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) 941 | - 正規の本は「デザインパターン: 再利用可能なオブジェクト指向ソフトウェアの要素」であることは知っていますが、「Head First」は OO の初心者に最適です。 942 | - [便利なリファレンス: 開発者のための 101 のデザインパターンとヒント](https://sourcemaking.com/design-patterns-and-tips) 943 | 944 | - ### 組み合わせ論(nからkを選択)と確率 945 | - [ ] [数学スキル: 階乗、順列、組み合わせの求め方 (選択) (動画)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) 946 | - [ ] [Make School: 確率 (動画)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) 947 | - [ ] [Make School: さらなる確率とマルコフ連鎖 (動画)](https://www.youtube.com/watch?v=dNaJg-mLobQ) 948 | - [ ] カーンアカデミー: 949 | - コースレイアウト: 950 | - [ ] [基本理論確率](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) 951 | - ビデオのみ - 41 (それぞれがシンプルで短い): 952 | - [ ] [確率の説明 (動画)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) 953 | 954 | - ### NP、NP-完全/近似アルゴリズム 955 | - 巡回セールスマンやナップザック問題など、NP 完全問題の最も有名なクラスについて知っています。 956 | インタビュアーが変装して質問したときに、それを見分けることができます。 957 | - NP 完全の意味を理解する。 958 | - [ ] [計算の複雑さ (動画)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) 959 | - [ ] サイモンソン: 960 | - [ ] [貪欲なアルグス。II および NP 完全性の紹介 (動画)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) 961 | - [ ] [NP 完全性 II と削減 (動画)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 962 | - [ ] [NP 完全性 III (動画)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 963 | - [ ] [NP 完全性 IV (動画)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) 964 | - [ ]スキエナ: 965 | - [ ] [CSE373 2020 - レクチャー 23 - NP の完全性 (動画)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) 966 | - [ ] [CSE373 2020 - レクチャー 24 - 満足度 (動画)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) 967 | - [ ] [CSE373 2020 - レクチャー 25 - NP 完全性の詳細(動画)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) 968 | - [ ] [CSE373 2020 - レクチャー 26 - NP 完全性チャレンジ (動画)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) 969 | - [ ] [複雑さ: P、NP、NP 完全性、削減 (動画)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) 970 | - [ ] [複雑さ: 近似アルゴリズム (ビ動画デオ)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) 971 | - [ ] [複雑さ: 固定パラメーター アルゴリズム (動画)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 972 | - Peter Norvig は、巡回セールスマンの問題に対する最適に近い解決策について説明します。 973 | - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) 974 | - CLRS のページ 1048 ~ 1140 (お持ちの場合)。 975 | 976 | - ### コンピューターがプログラムを処理する仕組み 977 | - [ ] [CPU がプログラムを実行する仕組み (動画)](https://www.youtube.com/watch?v=XM4lGflQFvA) 978 | - [ ] [コンピューターの計算方法 - ALU (動画)](https://youtu.be/1I5ZMmrOfnA) 979 | - [ ] [レジスタとRAM (動画)](https://youtu.be/fpnE6UAfbtU) 980 | - [ ] [中央処理装置 (CPU) (動画)](https://youtu.be/FZGugFqdr60) 981 | - [ ] [説明書とプログラム (動画)](https://youtu.be/zltgXvg6r3k) 982 | 983 | - ### キャッシュ 984 | - [ ] LRU キャッシュ: 985 | - [ ] [LRU キャッシュの魔法 (Google 開発の 100 日間) (動画)](https://www.youtube.com/watch?v=R5ON3iwx78M) 986 | - [ ] [LRU の実装 (動画)](https://www.youtube.com/watch?v=bq6N7Ym81iI) 987 | - [ ] [LeetCode - 146 LRU キャッシュ (C++) (動画)](https://www.youtube.com/watch?v=8-FZRAjR7qU) 988 | - [ ] CPU キャッシュ: 989 | - [ ] [MIT 6.004 L15: メモリ階層 (動画)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) 990 | - [ ] [MIT 6.004 L16: キャッシュの問題 (動画)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) 991 | 992 | - ### プロセスとスレッド 993 | - [ ] コンピュータサイエンス162 - オペレーティングシステム(25ビデオ): 994 | - プロセスとスレッドのためのビデオ表示1-11 995 | - [オペレーティングシステムとシステムプログラミング(動画)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) 996 | - [プロセスとスレッドの違いは何ですか?](https://www.quora.com/What-is-the-difference-between-a-process-and-thread) 997 | - カバー: 998 | - プロセス、スレッド、並行性の問題 999 | - プロセスとスレッドの違い 1000 | - プロセス 1001 | - スレッド 1002 | - ロック 1003 | - ミューテックス 1004 | - セマフォ 1005 | - モニタ(同期) 1006 | - 動作の仕方 1007 | - デッドロック 1008 | - ライブロック 1009 | - CPU アクティビティ、割り込み、コンテキスト切り替え 1010 | - マルチコアプロセッサを使用した最新の同時実行構造 1011 | - [ページング、セグメンテーション、仮想メモリ (動画)](https://youtu.be/O4nwUqQodAg) 1012 | - [中断(動画)](https://youtu.be/iKlAWIKEyuw) 1013 | - プロセス リソースのニーズ (メモリ: コード、静的ストレージ、スタック、ヒープ、およびファイル記述子、I/O) 1014 | - スレッド リソースのニーズ (同じプロセス内の他のスレッドと上記 (マイナススタック) を共有しますが、それぞれに独自の PC、スタック カウンター、レジスタ、およびスタックがあります) 1015 | - フォークは実際には、新しいプロセスがメモリに書き込むまではコピーオンライト (読み取り専用) であり、その後完全コピーが実行されます。 1016 | - コンテキストの切り替え 1017 | - [オペレーティングシステムと基盤となるハードウェアによってコンテキストスイッチングがどのように開始されるか?](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) 1018 | - [ ] [C++ のスレッド (シリーズ - 10 本の動画)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) 1019 | - [ ] [CS 377 Spring '14: マサチューセッツ大学のオペレーティングシステム](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) 1020 | - Python の同時実行性 (動画): 1021 | - [ ] [スレッドに関する短編シリーズ](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) 1022 | - [ ] [Python スレッド](https://www.youtube.com/watch?v=Bs7vPNbB9JM) 1023 | - [ ] [Python GIL を理解する (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) 1024 | - [参考](http://www.dabeaz.com/GIL) 1025 | - [ ] [David Beazley - Python 同時実行性を基礎からライブで解説します! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) 1026 | - [ ] [基調講演 David Beazley - 注目のトピック (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) 1027 | - [ ] [Python のミューテックス](https://www.youtube.com/watch?v=0zaPs8OtyKY) 1028 | 1029 | - ### テスト 1030 | - カバーするために: 1031 | - 単体テストの仕組み 1032 | - モックオブジェクトとは何ですか 1033 | - 統合テストとは何ですか 1034 | - 依存性注入とは何ですか 1035 | - [ ] [James Bach によるアジャイル ソフトウェア テスト (動画)](https://www.youtube.com/watch?v=SAhJf36_u5U) 1036 | - [ ] [ソフトウェア テストに関する James Bach による公開講義 (動画)](https://www.youtube.com/watch?v=ILkT_HV9DVU) 1037 | - [ ] [Steve Freeman - テスト駆動開発 (それは私たちが言いたかったことではありません) (動画)](https://vimeo.com/83960706) 1038 | - [スライド](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) 1039 | - [ ] 依存性の注入: 1040 | - [ ] [動画](https://www.youtube.com/watch?v=IKD2-MAkXyQ) 1041 | - [ ] [テストのTAO](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) 1042 | - [ ] [テストの書き方](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) 1043 | 1044 | - ### 文字列の検索と操作 1045 | - [ ] [Sedgewick - サフィックス配列 (動画)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) 1046 | - [ ] [Sedgewick - 部分文字列検索 (動画)](https://www.coursera.org/learn/algorithms-part2/home/week/4) 1047 | - [ ] [1. 部分文字列検索の概要](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) 1048 | - [ ] [2. ブルートフォース部分文字列検索](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) 1049 | - [ ] [3. クヌース・モリス・プラット](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) 1050 | - [ ] [4. ボイヤー・ムーア](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) 1051 | - [ ] [5. ラビン・カープ](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) 1052 | - [ ] [テキスト内のパターンの検索 (動画)](https://www.coursera.org/learn/data-Structures/lecture/tAfHI/search-pattern-in-text) 1053 | 1054 | この件についてさらに詳細が必要な場合は、[一部の件名に関する追加の詳細](#Additional-detail-on-some-subjects) の「文字列マッチング」セクションを参照してください。 1055 | 1056 | - ### トライ 1057 | - さまざまな種類のトライがあることに注意してください。プレフィックスを持つものと持たないもの、そしてビットの代わりに文字列を使用してパスを追跡するものもあります 1058 | - コードは一通り読みましたが、実装はしません 1059 | - [ ] [Sedgewick - Trys (3動画)](https://www.coursera.org/learn/algorithms-part2/home/week/4) 1060 | - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) 1061 | - [ ] [2. 三項探索トライズ](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) 1062 | - [ ] [3. 文字ベースの操作](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) 1063 | - [ ] [データ構造とプログラミング技術に関するメモ](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) 1064 | - [ ] ショートコースビデオ: 1065 | - [ ] [トライの概要 (動画)](https://www.coursera.org/learn/data-structions-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) 1066 | - [ ] [トライのパフォーマンストライ (動画)](https://www.coursera.org/learn/data-Structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) 1067 | - [ ] [トライの実装 (動画)]( https://www.coursera.org/learn/data-Structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) 1068 | - [ ] [トライ: 無視されたデータ構造](https://www.toptal.com/java/the-trie-a-neglected-data-struction) 1069 | - [ ] [TopCoder - トライの使用](https://www.topcoder.com/thrive/articles/Using%20Tries) 1070 | - [ ] [スタンフォード講義 (実際の使用例) (動画)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) 1071 | - [ ] [MIT、高度なデータ構造、文字列 (途中でかなりわかりにくくなる可能性があります) ) (動画)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) 1072 | 1073 | - ### 浮動小数点数 1074 | - [ ] 単純な 8 ビット: [浮動小数点数の表現 - 1 (ビデオ - 計算に誤りがあります - ビデオの説明を参照してください)](https://www.youtube.com/watch?v=ji3SfClm8TU) 1075 | 1076 | - ### Unicode 1077 | - [ ] [すべてのソフトウェア開発者の絶対最小値、絶対にUnicodeと文字セットについて必ず知っておくべきこと]( http://www.joelonsoftware.com/articles/Unicode.html) 1078 | - [ ] [すべてのプログラマがテキストを扱うためにエンコーディングと文字セットについて絶対に、必ず知っておくべきこと]( http://kunststube.net/encoding/) 1079 | 1080 | - ### エンディアン 1081 | - [ ] [ビッグ エンディアンとリトル エンディアン](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) 1082 | - [ ] [ビッグ エンディアンとリトル エンディアン (動画)](https://www.youtube.com/watch?v=JrNF0KRAlyo) 1083 | - [ ] [Big And Little Endian Inside/Out (動画)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) 1084 | - カーネル開発者向けの非常に技術的な話。ほとんどのことが頭から離れていても心配する必要はありません。 1085 | - 前半だけで十分です。 1086 | 1087 | - ### ネットワーキング 1088 | - **ネットワーキングの経験がある場合、または信頼性エンジニアまたは運用エンジニアになりたい場合は、質問をお待ちください** - 1089 | それ以外の場合、これは知っておくと良いでしょう 1090 | - [ ] [カーン アカデミー](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) 1091 | - [ ] [UDP と TCP: トランスポート プロトコルの比較 (動画)](https://www.youtube.com/watch?v=Vdc8TCESIg8) 1092 | - [ ] [TCP/IP と OSI モデルについて説明します! (動画)](https://www.youtube.com/watch?v=e5DEVa9eSN0) 1093 | - [ ] [インターネットを介したパケット送信。ネットワークと TCP/IP のチュートリアル。(動画)](https://www.youtube.com/watch?v=nomyRJehhnM) 1094 | - [ ] [HTTP (動画)](https://www.youtube.com/watch?v=WGJrLqtX7As) 1095 | - [ ] [SSL および HTTPS (動画)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) 1096 | - [ ] [SSL/TLS (動画)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) 1097 | - [ ] [HTTP 2.0 (動画)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) 1098 | - [ ] [ビデオ シリーズ (21 動画) (動画)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) 1099 | - [ ] [サブネットの謎を解く - パート 5 CIDR表記法 (動画)](https://www.youtube.com/watch?v=t5xYI0jzOf4) 1100 | - [ ] ソケット: 1101 | - [ ] [Java - ソケット - 概要 (動画)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) 1102 | - [ ] [ソケット プログラミング (動画)](https://www.youtube.com/watch?v=G75vN2mnJeQ) 1103 | 1104 | --- 1105 | 1106 | ## 最終レビュー 1107 | 1108 | このセクションには短いビデオが含まれます。非常にすぐに見て、重要な概念のほとんどを確認できます。 1109 | 頻繁にリフレッシュしたい場合に便利です。 1110 | 1111 | - [ ] 2 ~ 3 分の短い主題ビデオ シリーズ (23 動画) 1112 | - [ビデオ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) 1113 | - [ ] 2 ~ 5 分のシリーズ短い主題のビデオ - Michael Sambol (動画 46 件): 1114 | - [ビデオ](https://www.youtube.com/@MichaelSambol) 1115 | - [コード例](https://github.com/msambol/dsa) 1116 | - [ ] [セッジウィック ビデオ - アルゴリズム I](https://www.coursera.org/learn/algorithms-part1) 1117 | - [ ] [セッジウィック ビデオ - アルゴリズム II](https://www.coursera.org/learn/algorithms-part2) ) 1118 | 1119 | --- 1120 | 1121 | ## コーディングの質問練習 1122 | 1123 | 上のすべてのコンピュータサイエンスのトピックを知ったので、コーディングの問題に答える練習をしましょう。 1124 | 1125 | **コーディング質問の練習は、プログラミング問題への回答を記憶することではありません。** 1126 | 1127 | プログラミングの問題を練習する必要がある理由 1128 | - 問題の認識、そして適切なデータ構造とアルゴリズムの適合 1129 | - 問題のための要件を集める 1130 | - 面接であなたのように問題をあなたの方法で話している 1131 | - コンピュータではなく、ホワイトボードや紙でのコーディング 1132 | - ソリューションの時間と空間の複雑さが増す 1133 | - ソリューションのテスト 1134 | 1135 | 面接では、体系的でコミュニケーション的な問題解決の素晴らしいイントロがあります。あなたはプログラミングの面接の本からもこれを手に入れるでしょうが、私はこの優れた発見しました: 1136 | [アルゴリズム設計キャンバス](http://www.hiredintech.com/algorithm-design/) 1137 | 1138 | 自宅にホワイトボードはありませんか?それは理にかなっている。私は変わった人で、大きなホワイトボードを持っています。ホワイトボードの代わりに、 1139 | アートストアから大きなドローイングパッドを拾い上げます。あなたはソファに座って練習することができます。これが私の「ソファホワイトボード」です。 1140 | 私はスケールの写真にペンを追加しました。ペンを使うと、あなたは消すことができます。すぐに厄介になる。 1141 | 1142 | ![私のソファホワイトボード](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) 1143 | 1144 | 補足: 1145 | 1146 | - [Topcodersの数学](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) 1147 | - [動的プログラミング - 初心者から上級者まで](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) 1148 | - [MIT面接資料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) 1149 | 1150 | **プログラミングの問題を読んでやる(この順番で):** 1151 | 1152 | - [ ] [プログラミング面接公開:あなたが次の仕事に着任する秘訣、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) 1153 | - C、C ++、Javaの回答 1154 | - [ ] [コーディング面接をクラッキング、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) 1155 | - Javaでの回答 1156 | 1157 | [上記のブックリスト](#ブックリスト)を参照してください 1158 | 1159 | ## コード演習/挑戦 1160 | 1161 | あなたの脳を学んだら、脳を働かせてください。 1162 | できるだけ多く、毎日コーディングの課題に取り組んでください。 1163 | 1164 | - [ ] [解決策を見つける方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) 1165 | - [ ] [Topcoderの問題を解読する方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) 1166 | 1167 | コーディング面接質問ビデオ: 1168 | - [IDeserve(88ビデオ)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) 1169 | - [Tushar Roy(5プレイリスト)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) 1170 | 1171 | チャレンジサイト: 1172 | - [LeetCode](https://leetcode.com/) 1173 | - [TopCoder](https://www.topcoder.com/) 1174 | - [プロジェクトオイラー(Math-focused)](https://projecteuler.net/index.php?section=problems) 1175 | - [コードワード](http://www.codewars.com) 1176 | - [HackerEarth](https://www.hackerearth.com/) 1177 | - [HackerRank](https://www.hackerrank.com/) 1178 | - [Codility](https://codility.com/programmers/) 1179 | - [InterviewCake](https://www.interviewcake.com/) 1180 | - [Geeks for Geeks](http://www.geeksforgeeks.org/) 1181 | - [InterviewBit](https://www.interviewbit.com) 1182 | - [Sphere(Sphere)](http://www.spoj.com/) 1183 | 1184 | チャレンジレポ: 1185 | - [Pythonでインタラクティブなコーディング面接の課題](https://github.com/donnemartin/interactive-coding-challenges) 1186 | 1187 | 疑似面接: 1188 | - [Gainlo.co:大企業の疑似面接官](http://www.gainlo.co/#!/) 1189 | - [Pramp:仲間との面接](https://www.pramp.com/) 1190 | - [Refdash:疑似面接](https://refdash.com/) 1191 | 1192 | ## 面接に近づいたら 1193 | 1194 | - [ ] クラッキングコーディング面接セット2(動画): 1195 | - [コード面接をクラッキングする](https://www.youtube.com/watch?v=4NIb9l3imAo) 1196 | - [コード面接をクラックする - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) 1197 | 1198 | ## あなたの履歴書 1199 | 1200 | - クラッキングでの準備項目の再開を参照してください。コーディング面接とプログラミング面接の公開 1201 | 1202 | 1203 | ## 面接が来たときに考えてください 1204 | 1205 | あなたが得る20の面接の質問と、以下の項目の行を考えてみましょう。 1206 | それぞれ2-3の答えがあります。 1207 | あなたが達成したことについての物語だけでなく、データを持ってください。 1208 | 1209 | - なぜあなたはこの仕事をしたいです? 1210 | - あなたが解決した厳しい問題は何ですか? 1211 | - 最大の課題に直面した? 1212 | - ベスト/最悪のデザインが見られる? 1213 | - 既存の製品を改善するためのアイデア。 1214 | - 個人として、そしてチームの一員として、どのようにベストを尽くしていますか? 1215 | - あなたのスキルや経験のうち、その役割の資産とその理由は? 1216 | - [job x / project y]で一番楽しかったことは何ですか? 1217 | - [job x / project y]に直面した最大の課題は何ですか? 1218 | - [job x / project y]で直面した最も難しいバグは何でしたか? 1219 | - [job x / project y]で何を学びましたか? 1220 | - あなたは[job x / project y]で何を良くしていますか? 1221 | 1222 | ## 面接官に質問があります 1223 | 1224 |     私の中には(私は既に知っているかもしれませんが、彼らの意見やチームの視点が必要です): 1225 | 1226 | あなたのチームはどれくらいの規模ですか? 1227 | - あなたの開発サイクルはどのように見えるのですか?あなたはウォーターフォール/スプリント/アジャイルをしますか? 1228 | - 締め切りまでのフローは共通ですか?それとも柔軟性はありますか? 1229 | - あなたのチームではどのように意思決定が行われますか? 1230 | - 週に何回会議がありますか? 1231 | - あなたの仕事環境が集中するのに役立つと思いますか? 1232 | - 何をしているの? 1233 | - それについて何が好きですか? 1234 | - 仕事の生活はどうですか? 1235 | - ワークライフバランスはどうですか? 1236 | 1237 | ## 一度あなたは仕事を得た 1238 | 1239 | おめでとう! 1240 | 1241 | 学び続けてください。 1242 | 1243 | あなたは決して本当に終わらない。 1244 | 1245 | --- 1246 | 1247 |     *************************************************** *************************************************** * 1248 |     *************************************************** *************************************************** * 1249 | 1250 |     この点以下のものはすべてオプションです。 1251 |     これらを勉強することで、より多くのCSコンセプトにさらされることになります。 1252 |     任意のソフトウェアエンジニアリングジョブ。あなたはもっと豊富なソフトウェアエンジニアになるでしょう。 1253 | 1254 |     *************************************************** *************************************************** * 1255 |     *************************************************** *************************************************** * 1256 | 1257 | --- 1258 | 1259 | 1260 | ## その他の書籍 1261 | 1262 | - [ ] [Unixプログラミング環境](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=情報) 1263 | - 古き良き時代 1264 | - [ ] [Linuxコマンドライン:完全な紹介](https://www.amazon.com/dp/1593273894/) 1265 | - 現代的な選択肢 1266 | - [ ] [TCP / IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) 1267 | - [ ] [ヘッドファーストデザインパターン](https://www.amazon.com/gp/product/0596007124/) 1268 | - デザインパターンへの穏やかな紹介 1269 | - [ ] [デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) 1270 | - 別名「Gang Of Four」の本、またはGOF 1271 | - 正式なデザインパターンの本 1272 | - [ ] [UNIXおよびLinuxシステム管理ハンドブック、第4版](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) 1273 | 1274 | ## その他の学習 1275 | 1276 | これらの話題は面接では出てこないかもしれませんが、 1277 | 特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 1278 | 1279 | - [ ] [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)(Skiena) 1280 | - [ ] [日本語版:アルゴリズム設計マニュアル](https://www.amazon.co.jp/dp/4621085107) 1281 | - レビューと問題認識として 1282 | - アルゴリズムのカタログ部分は、面接で得られる難易度の範囲をはるかに超えています。 1283 | - この本は2パートに分かれます: 1284 | - データ構造とアルゴリズムに関する教科書 1285 | - 長所: 1286 | - アルゴリズムの教科書はどんなものでも良いレビューです 1287 | - 業界および学界の問題を解決した経験から得た素敵な話 1288 | - Cのコード例 1289 | - 短所: 1290 | - Introduction to Algorithms(CLRS)と同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の科目にとってより良い選択肢になる可能性があります 1291 | - 7章、8章、9章では、いくつかの項目がうまく説明されていないか、私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります 1292 | - 誤解しないで:私はSkiena、彼の教え方、そしてマナーを好きですが、Stony Brookの教材ではないかもしれません。 1293 | - アルゴリズムカタログ: 1294 | - これがあなたがこの本を買う本当の理由です。 1295 | - この部分に近づきます。一度私がそれを通り抜けたら、ここで更新されます。 1296 | - Kindleで読むことが出来ます 1297 | - Half.comは教科書のための良いリソースです。 1298 | - 回答: 1299 | - [ソリューション](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) 1300 | - [ソリューション](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) 1301 | - [正誤表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) 1302 | 1303 | - [ ] [アルゴリズムイントロダクション](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) 1304 | - [ ] [日本語版:アルゴリズムイントロダクション](https://www.amazon.co.jp/dp/B078WPYHGN/) 1305 | - **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 1306 | - Half.comは、良い価格で教科書のための素晴らしいリソースです。 1307 | - スタインはゲームに遅れていたので、別名CLR、ときにはCLRSと呼ばれている 1308 | 1309 | - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) 1310 | - プログラミング上の問題(データテープを使っているものもあります)への巧妙な解決策を示していますが、これは単なるイントロです。 1311 |       これはプログラムの設計とアーキテクチャに関するガイドブックです。 1312 | これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 1313 | 1314 | - ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~ 1315 | - 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 1316 | - むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう 1317 | 1318 | 1319 | - ### コンパイラ 1320 | - [ ] [1分でコンパイラがどのように動作するか(動画)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) 1321 | - [ ] [Harvard CS50 - コンパイラ(動画)](https://www.youtube.com/watch?v=CSZLNYF4Klo) 1322 | - [ ] [C ++(video)](https://www.youtube.com/watch?v=twodd1KFfGk) 1323 | - [ ] [コンパイラの最適化について(C ++)(動画)](https://www.youtube.com/watch?v=FnGCDLhaxKU) 1324 | 1325 | - ### Emacsとvi(m) 1326 | - UNIXベースのコードエディタに慣れましょう 1327 | - vi(m): 1328 | - [vim 01での編集 - インストール、設定、およびモード(動画)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) 1329 | - [VIM Adventures](http://vim-adventures.com/) 1330 | - 4ビデオのセット: 1331 | - [vi / vimエディタ - レッスン1](https://www.youtube.com/watch?v=SI8TeVMX8pk) 1332 | - [vi / vimエディタ - レッスン2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) 1333 | - [vi / vimエディター - レッスン3](https://www.youtube.com/watch?v=ZYEccA_nMaI) 1334 | - [vi / vimエディタ - レッスン4](https://www.youtube.com/watch?v=1lYD5gwgZIA) 1335 | - [Emacsの代わりにViを使う](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) 1336 | - emacs: 1337 | - [基本Emacsチュートリアル(動画)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) 1338 | - 3つのセット(動画): 1339 | - [Emacsチュートリアル(初心者向け) - 第1部 - ファイルコマンド、カット/コピー/ペースト、カーソルコマンド](https://www.youtube.com/watch?v=ujODL7MD04Q) 1340 | - [Emacsチュートリアル(初心者向け) - パート2 - バッファ管理、検索、M-grep、rgrepモード](https://www.youtube.com/watch?v=XWpsRupJ4II) 1341 | - [Emacsチュートリアル(初心者) - 第3章式、ステートメント、〜/ .emacsファイルとパッケージ](https://www.youtube.com/watch?v=paSgzPso-yc) 1342 | - [邪悪なモード:または、私がEmacsを気絶させ、愛する方法(動画)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) 1343 | - [EmacsでCプログラムを書く](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) 1344 | - [(多分)組織モードの詳細:構造の管理(動画)](https://www.youtube.com/watch?v=nsGYet02bEk) 1345 | 1346 | - ### Unixコマンドラインツール 1347 | - 私は良いツールから下のリストに記入しました。 1348 | - [ ] bash 1349 | - [ ] cat 1350 | - [ ] grep 1351 | - [ ] sed 1352 | - [ ] awk 1353 | - [ ] カールまたはwget 1354 | - [ ] ソート 1355 | - [ ] tr 1356 | - [ ] uniq 1357 | - [ ] [strace](https://en.wikipedia.org/wiki/Strace) 1358 | - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) 1359 | 1360 | - ### 情報理論(動画) 1361 | - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) 1362 | - [ ] Markovプロセスの詳細: 1363 | - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) 1364 | - [ ] [Markov Text Generationを実装するコア](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) 1365 | - [ ] [プロジェクト=マルコフテキスト生成ウォークスルー](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walkthroughs) 1366 | - 下記のMIT 6.050J Information and Entropyシリーズを参照してください。 1367 | 1368 | - ### パリティ&ハミングコード(動画) 1369 | - [ ] [イントロ](https://www.youtube.com/watch?v=q-3BctoUpHE) 1370 | - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) 1371 | - [ ] ハミングコード: 1372 | - [エラー検出](https://www.youtube.com/watch?v=1A_NcXxdoCc) 1373 | - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) 1374 | - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) 1375 | 1376 | - ### エントロピー 1377 | - 下記の動画もご覧ください 1378 | - 最初に情報理論ビデオを見てください 1379 | - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(動画)](https://youtu.be/JnJq3Py0dyM?t=176) 1380 | 1381 | - ### 暗号化 1382 | - 下記の動画もご覧ください 1383 | - 最初に情報理論ビデオを見てください 1384 | - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) 1385 | - [ ] [暗号化:ハッシュ関数](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) 1386 | - [ ] [暗号化:暗号化](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 1387 | 1388 | - ### 圧縮 1389 | - 最初に情報理論ビデオを見てください 1390 | - [ ] Computerphile(動画): 1391 | - [ ] [圧縮](https://www.youtube.com/watch?v=Lto-ajuqW3w) 1392 | - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) 1393 | - [ ] [上向きの木(ハフマン木)](https://www.youtube.com/watch?v=umTbivyJoiI) 1394 | - [ ] [エキストラビット/ TRITS - ハフマン木](https://www.youtube.com/watch?v=DV8efuB3h2g) 1395 | - [ ] [テキストのエレガントな圧縮(LZ 77方式)](https://www.youtube.com/watch?v=goOa3DGezUA) 1396 | - [ ] [テキスト圧縮が確率を満たす](https://www.youtube.com/watch?v=cCDCfoHTsaU) 1397 | - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) 1398 | - [ ] [(オプション)Google Developers Live:GZIPでは不十分です!](https://www.youtube.com/watch?v=whGwm0Lky2s) 1399 | 1400 | - ### コンピュータセキュリティ 1401 | - [MIT(23ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1402 | - [ ] [はじめに、脅威モデル](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1403 | - [ ] [ハイジャック攻撃の制御](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) 1404 | - [ ] [バッファオーバーフローの悪用と防御](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) 1405 | - [ ] [特権の分離](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1406 | - [ ] [機能](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1407 | - [ ] [サンドボックス化ネイティブコード](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) 1408 | - [ ] [ウェブセキュリティモデル](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1409 | - [ ] [Webアプリケーションの保護](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1410 | - [ ] [シンボリック実行](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1411 | - [ ] [ネットワークセキュリティ](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1412 | - [ ] [ネットワークプロトコル](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1413 | - [ ] [サイドチャネル攻撃](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1414 | 1415 | - ### ガベージコレクション 1416 | - [ ] [ガベージコレクション(Java);データの拡張(動画)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) 1417 | - [ ] [コンパイラ(動画)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) 1418 | - [ ] [GC in Python(video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) 1419 | - [ ] [ディープダイブJava:ガーベッジコレクションは良いです!](https://www.infoq.com/presentations/garbage-collection-benefits) 1420 | - [ ] [Deep Dive Python:CPythonでのガベージコレクション(動画)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) 1421 | 1422 | - ### パラレルプログラミング 1423 | - [ ] [Coursera(Scala)](https://www.coursera.org/learn/parprog1/home/week/1) 1424 | - [ ] [高性能並列計算のための効率的なPython(動画)](https://www.youtube.com/watch?v=uY85GkaYzBk) 1425 | 1426 | - ### メッセージング、シリアライゼーション、およびキューイングシステム 1427 | - [ ] [Thrift](https://thrift.apache.org/) 1428 | - [チュートリアル](http://thrift-tutorial.readthedocs.io/ja/latest/intro.html) 1429 | - [ ] [プロトコルバッファ](https://developers.google.com/protocol-buffers/) 1430 | - [チュートリアル](https://developers.google.com/protocol-buffers/docs/tutorials) 1431 | - [ ] [gRPC](http://www.grpc.io/) 1432 | - [gRPC 101 for Java Developers(video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) 1433 | - [ ] [Redis](http://redis.io/) 1434 | - [チュートリアル](http://try.redis.io/) 1435 | - [ ] [Amazon SQS(キュー)](https://aws.amazon.com/sqs/) 1436 | - [ ] [Amazon SNS(pub-sub)](https://aws.amazon.com/sns/) 1437 | - [ ] [RabbitMQ](https://www.rabbitmq.com/) 1438 | - [はじめに](https://www.rabbitmq.com/getstarted.html) 1439 | - [ ] [Celery](http://www.celeryproject.org/) 1440 | - [セロリの最初のステップ](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) 1441 | - [ ] [ZeroMQ](http://zeromq.org/) 1442 | - [イントロ - マニュアルを読む](http://zeromq.org/intro:read-the-manual) 1443 | - [ ] [ActiveMQ](http://activemq.apache.org/) 1444 | - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) 1445 | - [ ] [MessagePack](http://msgpack.org/index.html) 1446 | - [ ] [Avro](https://avro.apache.org/) 1447 | 1448 | - ### A * 1449 | - [ ] [検索アルゴリズム](https://en.wikipedia.org/wiki/A*_search_algorithm) 1450 | - [ ] [A * Pathfinding Tutorial(video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) 1451 | - [ ] [A *経路探索(E01:アルゴリズムの説明)(動画)](https://www.youtube.com/watch?v=-L-WgKMFuhE) 1452 | 1453 | - ### 高速フーリエ変換 1454 | - [ ] [フーリエ変換のインタラクティブガイド](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) 1455 | - [ ] [フーリエ変換とは何ですか?それは何のために使われますか?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) 1456 | - [ ] [フーリエ変換とは何ですか? (動画)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) 1457 | - [ ] [Divide&Conquer:FFT(動画)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) 1458 | - [ ] [FFTの理解](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) 1459 | 1460 | - ### ブルームフィルター 1461 | - mビットとkハッシュ関数を持つBloomフィルタが与えられた場合、挿入とメンバーシップの両方のテストはO(k) 1462 | - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) 1463 | - [ブルームフィルター|大規模なデータセットのマイニング|スタンフォード大学](https://www.youtube.com/watch?v=qBTdukbzc78) 1464 | - [チュートリアル](http://billmill.org/bloomfilter-tutorial/) 1465 | - [Bloom Filter Appを書く方法](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) 1466 | 1467 | - ### HyperLogLog 1468 | - [わずか1.5KBのメモリを使用して10億の異なるオブジェクトを数える方法](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) 1469 | 1470 | - ### 局所性に敏感なハッシング 1471 | - ドキュメントの類似性を判断するために使用されます。 1472 | - 2つの文書/文字列がまったく同じかどうかを判断するために使用されるMD5またはSHAの反対。 1473 | - [Simhashing(うまくいけば)シンプルに](http://ferd.ca/simhashing-hopefully-made-simple.html) 1474 | 1475 | - ### ヴァンEmde Boasの木 1476 | - [Divide&Conquer:van Emde Boas Trees(動画)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) 1477 | - [ ] [MIT講義ノート](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec15.pdf) 1478 | 1479 | - ### 拡張データ構造 1480 | - [ ] [CS 61B講義39:データ構造の拡張](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) 1481 | 1482 | - ### バランスの取れた検索木 1483 | - 少なくとも1つのタイプの平衡二分木を知っている(そしてそれがどのように実装されているか知っている): 1484 | - "バランスの取れた探索木の​​中で、AVLと2/3の樹木が通過し、赤黒の木がより人気があるようです。 1485 |         特に興味深い自己組織化データ構造は、スプレイ木であり、回転を使用します 1486 |         アクセスされたキーをルートに移動する」 - Skiena 1487 |     これらのうち、私はスプレイ木を実装することを選択しました。私が読んだことから、あなたは 1488 |         あなたの面接でバランスの取れた検索木。しかし、私は1つのコーディングへの露出を望んでいた 1489 |         そしてそれに直面しましょう、スプレーの木はミツバチの膝です。私は赤黒の木のコードをたくさん読んだ。 1490 | - スプレイ木:挿入、検索、削除機能 1491 |         あなたが赤/黒の木の実装を終わらせるならば、これらを試してみてください: 1492 | - 検索と挿入機能、削除をスキップする 1493 |     B-Treeについては、非常に大規模なデータセットで非常に広く使用されているため、詳細を知りたい。 1494 | - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) 1495 | 1496 | - [ ] **AVL木** 1497 |         - 実際には: 1498 |             私が言うことから、これらは実際にはあまり使われていませんが、どこになるか分かります。 1499 |             AVL木は、O(log n)検索、挿入、および削除をサポートする別の構造です。より厳格に 1500 |             赤黒の木よりもバランスがとれているため、挿入と取り出しが遅くなりますが、検索が速くなります。これにより 1501 |             一度構築され、再構成なしでロードされる、例えば言語 1502 |             辞書(または、アセンブラまたはインタプリタのオペコードなどのプログラム辞書)を含む。 1503 | - [ ] [MIT AVL Trees / AVL Sort(動画)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) 1504 | - [ ] [AVL木(動画)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) 1505 | - [ ] [AVL木実装(動画)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) 1506 | - [ ] [スプリットアンドマージ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) 1507 | - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) 1508 | 1509 | - [ ] **スプレッド木** 1510 |         - 実際には: 1511 |             スプレイ・木は、キャッシュ、メモリ・アロケータ、ルータ、ガベージ・コレクタ、 1512 |             データ圧縮、ロープ(長いテキスト文字列に使用される文字列の置換)、Windows NT(仮想メモリ、 1513 |             ネットワークおよびファイルシステムコードなど) 1514 | - [ ] [CS 61B:Splay Trees(video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) 1515 | - [ ] MIT講義:Splay Trees: 1516 | - 非常にマッシーになりますが、最後の10分を確かめてください。 1517 | - [動画](https://www.youtube.com/watch?v=QnPl_Y6EqMo) 1518 | 1519 | - [ ] **レッド/ブラックの木** 1520 | - これらは2-3木の翻訳です(下記参照) 1521 |         - 実際には: 1522 |             赤黒の木は、挿入時間、削除時間、および検索時間に対して最悪の場合の保証を提供します。 1523 |             これは、リアルタイムアプリケーションなどの時間に敏感なアプリケーションでは、これらを貴重なものにするだけでなく、 1524 |             それは最悪の場合の保証を提供する他のデータ構造における貴重なビルディングブロックになります。 1525 |             例えば、計算幾何学で使用される多くのデータ構造は赤黒の木に基づくことができ、 1526 |             現在のLinuxカーネルで使用されている完全に公正なスケジューラは赤黒の木を使用します。 Javaのバージョン8では、 1527 |             Collection HashMapが変更され、LinkedListを使用して同一の要素を貧弱に保存する代わりに 1528 |             ハッシュコードでは、赤黒の木が使用されます。 1529 | - [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(動画)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) 1530 | - [Aduni - アルゴリズム - 講義5(動画)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) 1531 | - [ ] [黒い木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) 1532 | - [ ] [バイナリサーチとレッドブラック木の紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) 1533 | - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) 1534 | 1535 | - [ ] **2-3の検索木** 1536 | - 実際には: 1537 |             2〜3本の木は、検索が遅くなるため(AVL木よりも高さが高いため)、挿入が速くなります。 1538 | - 2-3の木は非常にまれにしか使用しませんが、実装にはさまざまなタイプのノードが含まれるためです。代わりに、人々はレッドブラックの木を使用します。 1539 | - [ ] [23木の直感と定義(動画)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) 1540 | - [ ] [23-Treeのバイナリビュー](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) 1541 | - [ ] [2-3木(学生の暗唱)(動画)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 1542 | 1543 | - [ ] **2-3-4木(別名2-4木)** 1544 |         - 実際には: 1545 |             すべての2-4木には、同じ順序でデータ要素を持つ対応する赤黒の木があります。挿入と削除 1546 |             2-4木の操作は、赤黒の木の色の反転と回転にも相当します。これは2-4の木を 1547 |             赤黒の木の背後にある論理を理解するための重要なツールです。そのため、多くの導入アルゴリズムのテキストでは、 1548 |             2〜4本の木は実用的ではありません**。 1549 | - [ ] [CS 61B講義26:バランスの取れた検索木(動画)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) 1550 | - [ ] [ボトムアップ234-Trees(動画)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) 1551 | - [ ] [トップダウン234木(動画)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) 1552 | 1553 | - [ ] **N-ary(K-ary、M-ary)木** 1554 | - 注記:NまたはKは分岐因子(最大分岐)であり、 1555 | - 2分木は2分木であり、分岐因子= 2 1556 | - 2-3本の木は3本である 1557 | - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) 1558 | 1559 | - [ ] **B-Tree** 1560 | - 楽しい事実:それは謎ですが、Bはボーイング、バランスの取れた、またはバイエル(共同発明家)のために立つことができます。 1561 |         - 実際には: 1562 |             B木はデータベースで広く使用されています。最近のファイルシステムのほとんどは、B-tree(またはVariants)を使用しています。に加えて 1563 |             B木はファイルシステムでも使用され、任意のデータベースへの迅速なランダムアクセスを可能にします 1564 |             特定のファイル内のブロック基本的な問題は、ファイルブロックのiアドレスをディスクブロックに変換することです 1565 |             (またはおそらくシリンダーヘッドセクターへの)アドレスである。 1566 | - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) 1567 | - [ ] [B木(動画)の紹介](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) 1568 | - [ ] [B木の定義と挿入(動画)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) 1569 | - [ ] [B木削除(動画)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) 1570 | - [ ] [MIT 6.851 - メモリ階層モデル(動画)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) 1571 | - キャッシュに気付かないB木、非常に興味深いデータ構造 1572 | - 最初の37分は非常に技術的であり、スキップすることができます(Bはブロックサイズ、キャッシュラインサイズです) 1573 | - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) 1574 | 1575 | 1576 | - ### k-D木 1577 | - 矩形または高次元のオブジェクトの点数を見つけるのに最適 1578 | - k最近接の隣人に適している 1579 | - [ ] [Kd Trees(動画)](https://www.youtube.com/watch?v=W94M9D_yXKk) 1580 | - [ ] [kNN K-d木アルゴリズム(動画)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) 1581 | 1582 | - ### リストをスキップする 1583 | - 「これは多少のカルトデータ構造です」 - Skiena 1584 | - [ ] [ランダム化:リストをスキップ(動画)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 1585 | - [ ] [アニメーションともう少し詳しく](https://en.wikipedia.org/wiki/Skip_list) 1586 | 1587 | - ### ネットワークの流れ 1588 | - [ ] [Ford-Fulkerson(動画)](https://www.youtube.com/watch?v=v1VgJmkEJW0) 1589 | - [ ] [Ford-Fulkersonアルゴリズム(動画)](https://www.youtube.com/watch?v=v1VgJmkEJW0) 1590 | - [ ] [ネットワークフロー(動画)](https://www.youtube.com/watch?v=2vhN4Ice5jI) 1591 | 1592 | - ### 高速処理のための数学 1593 | - [ ] [整数演算、Karatsuba倍数(動画)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 1594 | - [中国の剰余定理(暗号で使用)(動画)](https://www.youtube.com/watch?v=ru7mWZJlRQg) 1595 | 1596 | - ### Treap 1597 | - 二分探索木とヒープの組み合わせ 1598 | - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) 1599 | - [ ] [データ構造:Treaps説明(動画)](https://www.youtube.com/watch?v=6podLUYinH8) 1600 | - [ ] [セット操作のアプリケーション](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) 1601 | 1602 | - ### リニアプログラミング(動画) 1603 | - [ ] [線形計画法](https://www.youtube.com/watch?v=M4K6HYLHREQ) 1604 | - [ ] [最小費用の見積もり](https://www.youtube.com/watch?v=2ACJ9EWUC6U) 1605 | - [ ] [最大値の検索](https://www.youtube.com/watch?v=8AA_81xI3ik) 1606 | - [ ] [Pythonで線形方程式を解く - シンプレックスアルゴリズム](https://www.youtube.com/watch?v=44pAWI7v5Zk) 1607 | 1608 | - ### 幾何学、凸包(動画) 1609 | - [ ] [Graph Alg。 IV:幾何学アルゴリズムの紹介 - 講義9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) 1610 | - [ ] [Geometric Algorithms:Graham&Jarvis - 講義10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) 1611 | - [Divide&Conquer:Convex Hull、Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) 1612 | 1613 | - ### 離散数学 1614 | - 下のビデオを見る 1615 | 1616 | - ### 機械学習 1617 | - [ ] なぜMLですか? 1618 | - [ ] [Googleがどのように最初の企業を学習するマシンとして自分自身を作り直すか](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) 1619 | - [ ] [知的コンピュータシステムのための大規模な深い学習(動画)](https://www.youtube.com/watch?v=QSaZGT4-6EY) 1620 | - [ ] [深い学習と理解度対ソフトウェア工学と検証、Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) 1621 | - [ ] [Googleのクラウドマシン学習ツール(動画)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) 1622 | - [ ] [Google Developers `Machine Learning Recipes(Scikit Learn&Tensorflow)(動画)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) 1623 | - [ ] [Tensorflow(video)](https://www.youtube.com/watch?v=oZikw5k_2FM) 1624 | - [ ] [Tensorflowチュートリアル](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) 1625 | - [ ] [Pythonでニューラルネットワークを実装する実践ガイド(Theanoを使用)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) 1626 | - コース: 1627 | - [グレートスターターコース:機械学習](https://www.coursera.org/learn/machine-learning) 1628 |    - [動画のみ](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) 1629 |    - 線形代数のレビューについてはビデオ12〜18を参照してください(14と15は重複しています) 1630 | - [機械学習のためのニューラルネットワーク](https://www.coursera.org/learn/neural-networks) 1631 | - [GoogleのDeep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) 1632 | - [Google / Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) 1633 | - [自己運転車技術者Nanodegree](https://www.udacity.com/drive) 1634 | - リソース: 1635 | - 書籍: 1636 | - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) 1637 | - [ゼロからのデータ科学:Pythonの第一原理](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) 1638 | - [Pythonによる機械学習入門](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) 1639 | - [ソフトウェアエンジニア向け機械学習](https://github.com/ZuzooVn/machine-learning-for-software-engineers) 1640 | - データスクール:http://www.dataschool.io/ 1641 | 1642 | - 1643 | 1644 | ## 追加科目の詳細 1645 | 1646 |     私は既に上記のいくつかのアイデアを強化するためにこれらを追加しましたが、それらを含めたくありませんでした 1647 |     それはちょうどあまりにも多くのためです。それは科目にそれを過ごすのは簡単です。 1648 |     あなたは今世紀に雇われたかったですね。 1649 | 1650 | - [ ] **連合検索** 1651 | - [ ] [概要](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) 1652 | - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) 1653 | - [ ] [木](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) 1654 | - [ ] [ランキングによる連合](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) 1655 | - [ ] [パス圧縮](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) 1656 | - [ ] [分析オプション](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) 1657 | 1658 | - [ ] **もっとダイナミックなプログラミング**(動画) 1659 | - [ ] [6.006:動的プログラミングI:フィボナッチ、最短経路](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) 1660 | - [ ] [6.006:ダイナミックプログラミングII:テキストジャスティフィケーション、ブラックジャック](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) 1661 | - [ ] [6.006:DP III:かっこ、編集距離、ナップザック](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) 1662 | - [6.006:DP IV:Guitar Fingering、Tetris、Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) 1663 | - [ ] [6.046:Dynamic Programming&Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 1664 | - [ ] [6.046:ダイナミックプログラミング:オールペア最短パス](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) 1665 | - [ ] [6.046:ダイナミックプログラミング(学生の暗唱)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) 1666 | 1667 | - [ ] **高度なグラフ処理**(動画) 1668 | - [ ] [同期分散アルゴリズム:対称性を破る。木にまたがる最短パス](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) 1669 | - [ ] [非同期分散アルゴリズム:木にまたがる最短パス](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) 1670 | 1671 | - [ ] MIT **確率**(mathy、ゆっくりと進み、数学的なことに良い)(動画): 1672 | - [ ] [MIT 6.042J - 確率の紹介](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) 1673 | - [ ] [MIT 6.042J - 条件付き確率](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) 1674 | - [ ] [MIT 6.042J - 独立性](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) 1675 | - [ ] [MIT 6.042J - ランダム変数](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) 1676 | - [ ] [MIT 6.042J - 期待値I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) 1677 | - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) 1678 | - [ ] [MIT 6.042J - 大きな偏差](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) 1679 | - [ ] [MIT 6.042J - ランダムウォーク](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) 1680 | 1681 | - [ ] [Simonson:Approximation Algorithms(video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) 1682 | 1683 | - [ ] **文字列マッチング** 1684 | - [ ] Rabin-Karp(動画): 1685 | - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) 1686 | - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) 1687 | - [最適化:実装と分析](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) 1688 | - [表倍増、Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) 1689 | - [ローリングハッシュ、償却分析](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) 1690 | - [ ] クヌース・モリス・プラット(KMP): 1691 | - [Knuth-Morris-Pratt(KMP)文字列マッチングアルゴリズム](https://www.youtube.com/watch?v=5i7oKodCRJo) 1692 | - [ ] Boyer-Moore文字列検索アルゴリズム 1693 | - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) 1694 | - [高度な文字列検索Boyer-Moore-Horspoolアルゴリズム(動画)](https://www.youtube.com/watch?v=QDZpzctPf10) 1695 | - [ ] [Coursera:文字列のアルゴリズム](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) 1696 | - すごく始まりますが、KMPを過ぎるまでには、必要以上に複雑になります 1697 | - 試行の良い説明 1698 | - スキップすることができます 1699 | 1700 | - [ ] **ソート** 1701 | 1702 | - [ ] スタンフォードのソーティングに関する講義: 1703 | - [ ] [講義15 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) 1704 | - [ ] [講義16 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) 1705 | - [ ] Shai Simonson、[Aduni.org](http://www.aduni.org/): 1706 | - [ ] [アルゴリズム - ソート - 講義2(動画)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) 1707 | - [ ] [アルゴリズム - ソートII - レクチャー3(動画)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) 1708 | - [ ] Steven Skienaのソーティングに関する講義: 1709 | - [ ] [講義は26:46に始まります(動画)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) 1710 | - [ ] [講義は27:40(動画)から開始](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 1711 | - [ ] [講演は35:00(動画)から開始](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) 1712 | - [ ] [講演は23:50から始まります(動画)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) 1713 | 1714 | 1715 | ## ビデオシリーズ 1716 | 1717 | 座って楽しんでください。 「ネットフリックスとスキル」:P 1718 | 1719 | - [ ] [個々の動的プログラミングの問題のリスト(それぞれ短いです)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) 1720 | 1721 | - [ ] [x86アーキテクチャ、アセンブリ、アプリケーション(11ビデオ)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) 1722 | 1723 | - [ ] [MIT 18.06線形代数、2005年春(35ビデオ)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) 1724 | 1725 | - [ ] [優秀 - MIT Calculus Revisited:単一変数計算](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) 1726 | 1727 | - [ ] [コンピュータサイエンス70,001 - 春2015 - 離散数学と確率論](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) 1728 | 1729 | - [ ] [Shai Simonsonによる離散数学(19ビデオ)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) 1730 | 1731 | - [ ] [離散数学第1部:Sarada Herke(5ビデオ)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) 1732 | 1733 | - [ ] CSE373 - アルゴリズムの分析(25ビデオ) 1734 | - [アルゴリズム設計マニュアルのSkiena講義](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) 1735 | 1736 | - [UCバークレー61B(Spring 2014):データ構造(25ビデオ)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) 1737 | 1738 | - [UC Berkeley 61B(2006年秋):データ構造(39ビデオ)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) 1739 | 1740 | - [UC Berkeley 61C:機械構造物(26ビデオ)](https://www.youtube.com/watch?v=gJJUUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) 1741 | 1742 | - [ ] [OOSE:UMLとJavaを使用したソフトウェア開発(21ビデオ)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) 1743 | 1744 | - [ ] [UC Berkeley CS 152:コンピュータアーキテクチャとエンジニアリング(20ビデオ)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) 1745 | 1746 | - [ ] [MIT 6.004:計算構造(49ビデオ)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) 1747 | 1748 | - [Carnegie Mellon - Computer Architecture Lectures(39ビデオ)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) 1749 | 1750 | - [ ] [MIT 6.006:アルゴリズム紹介(47ビデオ)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) 1751 | 1752 | - [ ] [MIT 6.033:コンピュータシステムエンジニアリング(22ビデオ)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) 1753 | 1754 | - [ ] [MIT 6.034人工知能、2010年秋(30ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) 1755 | 1756 | - [ ] [MIT 6.042J:コンピュータサイエンスの数学、2010年秋(25ビデオ)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) 1757 | 1758 | - [ ] [MIT 6.046:アルゴリズムの設計と分析(34ビデオ)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) 1759 | 1760 | - [ ] [MIT 6.050J:情報とエントロピー、2008年春(19ビデオ)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) 1761 | 1762 | - [ ] [MIT 6.851:高度なデータ構造(22ビデオ)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) 1763 | 1764 | - [ ] [MIT 6.854:Advanced Algorithms、Spring 2016(24ビデオ)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) 1765 | 1766 | - [ ] [Harvard COMPSCI 224:Advanced Algorithms(25ビデオ)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) 1767 | 1768 | - [ ] [MIT 6.858コンピュータシステムセキュリティ、2014年秋](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) 1769 | 1770 | - [ ] [Stanford:Programming Paradigms(27ビデオ)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) 1771 | 1772 | - [ ] [Christof Paarによる暗号の概要](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) 1773 | - [スライドと問題セットと一緒のコースウェブサイト](http://www.crypto-textbook.com/) 1774 | 1775 | - [ ] [Mining Massive Datasets - スタンフォード大学(94ビデオ)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) 1776 | 1777 | - [ ] [グラフ理論(Sarada Herke)(67ビデオ)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) 1778 | 1779 | ## コンピュータサイエンスコース 1780 | 1781 | - [オンラインCSコースのディレクトリ](https://github.com/open-source-society/computer-science) 1782 | - [CSコースのディレクトリ(多くはオンライン講義あり)](https://github.com/prakhar1989/awesome-courses) 1783 | -------------------------------------------------------------------------------- /translations/how-to.md: -------------------------------------------------------------------------------- 1 | Please put new translation README files here. 2 | 3 | I'll migrate the existing translations when they are ready. 4 | 5 | To start a new translation, please: 6 | 7 | 1. Make an issue (for collaboration with other translators) 8 | 2. Make a pull request to collaborate and commit to. 9 | 3. Let me know when it's ready to pull. 10 | 11 | Thank you! 12 | --------------------------------------------------------------------------------