mirror of
https://github.com/PKUFlyingPig/cs-self-learning.git
synced 2026-06-23 18:06:56 +08:00
test
This commit is contained in:
parent
08aae35dd8
commit
b811b5b32d
3 changed files with 202 additions and 0 deletions
19
docs/人工智能/CS188.en.md
Normal file
19
docs/人工智能/CS188.en.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# CS188: Introduction to Artificial Intelligence
|
||||
|
||||
## Course Introduction
|
||||
|
||||
- University: UC Berkeley
|
||||
- Prerequisite: CS70
|
||||
- Programming language: Python
|
||||
- Course Difficulty: 🌟🌟🌟
|
||||
- Estimated hours: 50 hours
|
||||
|
||||
In Berkeley's introductory course on artificial intelligence, the course notes are written in a very simple way, and there is basically no need to watch the course videos. The arrangement of the course content is basically in accordance with the chapter order of the classic artificial intelligence textbook *Artificial intelligence: A Modern Approach*, covering search pruning, constraint satisfaction problems, Markov decision process, reinforcement learning, Bayesian network, hidden Markov The husband model and basic machine learning and neural network related content.
|
||||
|
||||
The 2018 fall semester version opens gradescope for free, and everyone can complete written assignments online and get assessment results in real time. At the same time, the 6 projects of the course are also quality explosions, recreating the classic Packman (Pac-Man) mini-game, allowing you to use the AI knowledge you have learned to implement related algorithms, allowing your Pac-Man to shuttle freely in the maze , avoid ghosts, collect beans.
|
||||
|
||||
## Course Resources
|
||||
|
||||
- Course websites: [Fall 2022](https://inst.eecs.berkeley.edu/~cs188/fa22/),[Fall 2018](https://- Course Video: [Fall 2022](https://inst.eecs.berkeley.edu/~cs188/fa22/),[Fall 2018](https://inst.eecs.berkeley.edu/~cs188/fa18/index.html), the link of each lesson is detailed in the course website
|
||||
- Course material: Artificial intelligence: A Modern Approach
|
||||
- Coursework: Online assessment of written assignments and Projects, see course website for details
|
||||
47
docs/使用指南.en.md
Normal file
47
docs/使用指南.en.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# How to use this book
|
||||
|
||||
With the increasing number of contributors, the content of this book is also expanding. It is impractical and unnecessary to learn all the courses in the book, and it will even have the opposite effect of getting twice the result with half the effort. In order to better fit the readers and make this book truly useful for you, I roughly divide the readers into the following three categories according to their needs. You can plan your own self-study plan accurately based on your own reality.
|
||||
|
||||
## Entering the campus for the first time
|
||||
|
||||
If you have just entered the university campus or are still in the lower grades, and you are studying computer science or want to switch to computer science, then you are in luck, because learning is your job, you can have enough time and freedom to study on your own The things you are interested in will not have the pressure of work and the trivialities of life, and you don't have to worry too much about utilitarian ideas such as "whether it is useful to learn" or "whether you can find a job". So how should you organize your studies? I think the most important thing is to break the "step-by-step" passive learning formed in high school. As a problem solver in a small town, I know that most high schools in China will arrange every minute of everyone's day to the full. You only need to passively follow the schedule and complete the set tasks step by step. As long as you are serious enough, the results will not be too bad. But stepping into the university gate, the degree of freedom suddenly increased a lot. First of all, all the extracurricular time is basically at your discretion. No one organizes the knowledge points for you, summarizes the outline, and the exams are not as standardized as in high school. If you still hold the "good student" mentality of high school and follow the steps honestly, the result may not be what you want. Because the professional training plan may not be reasonable, the teacher may not be responsible for teaching, and attending the class carefully may not be able to understand, and even the content of the exam may not be related to the lecture. Just kidding, you might feel like the whole world is against you and you can only count on yourself.
|
||||
|
||||
Then the status quo is such a status quo, if you want to change, you have to live through it first, and have enough ability to question it. In the lower grades, it is very important to lay a good foundation. The foundation here is all-round. The knowledge in the classroom is important, but the computer still emphasizes practice to a large extent, so there are many abilities outside the textbook that need to be cultivated, and this is exactly what the undergraduate computer education in China is lacking. Based on my personal experience, I have summarized the following suggestions for your reference.
|
||||
|
||||
One is knowing how to write "elegant" code. Many introductory freshman programming courses in China will be taught as extremely boring grammar lessons, and the effect is not as good as directly letting students read official documents. In fact, at the beginning of programming, it is beneficial for students to try to understand what kind of code is elegant and what kind of code "has bad taste". In general, introductory programming classes start with an introduction to procedural programming (such as the C language). But even for process-oriented programming, the ideas of **modularity** and **encapsulation** are extremely important. If you only want to pass the code on OpenJudge, save trouble when writing, use a large copy and paste and bloated main function, in the long run, your code quality will remain the same. Once you touch a slightly larger project, the endless debugging and communication maintenance costs will swallow you up. Therefore, when writing code, keep asking yourself, is there a lot of repeated code? Are the current functions too complex (Linux advocates that each function only needs to do one thing well)? Can this code be abstracted into a function? At first you may feel very uncomfortable, and even think that such a simple question requires so much effort? But remember that good habits are priceless. Junior high school students can learn C language. Why should the company recruit you as a programmer?
|
||||
|
||||
After learning process-oriented programming, object-oriented programming (such as C++ or Java) is usually taught in the first semester of freshman year. Here I highly recommend you to read [MIT 6.031: Software Construction](./Software Engineering/6031.en.md) Notes of this course, it will use the Java language as an example to explain in great detail how to write "elegant" code. For example, the development of Test-Driven, the design of function Specification, the handling of exceptions, and so on. In addition, now that you are in touch with object-oriented, it is also necessary to understand some common design patterns. Because domestic object-oriented courses can also easily become extremely boring grammar courses, making students entangled in various inherited grammars, and even asking some boring brain teasers. will be used. The essence of object-oriented is to let students learn to abstract actual problems into several classes and the relationship between them, and design patterns are some of the essence of abstract methods summed up by the predecessors. Here I recommend [Big Talk Design Patterns](https://book.douban.com/subject/2334288/) This book is very easy to understand.
|
||||
|
||||
The second is to try to learn some tools and skills that can improve productivity, such as Git, Shell, Vim. It is strongly recommended to study [MIT missing semester](./Programming Introduction/MIT-Missing-Semester.en.md) This course, maybe it will be very uncomfortable to use these tools at the beginning, but force yourself to use it, and the development efficiency will increase after you become proficient. Straight up. In addition, there are many applications that can greatly improve your productivity. One law is: all operations that require hands to leave the keyboard should be removed in a way. For example, switching applications, opening files, and browsing webpages have related plug-ins for quick operations (such as [Alfred](https://www.alfredapp.com/) on Mac). If you find that an operation is used every day and takes more than 1 second, you should find a way to reduce it to 0.1 seconds. After all, you will have to deal with computers for decades to come, and forming a smooth workflow is twice the result with half the effort. Finally, learn to touch type! If you still need to look at the keyboard to type, then hurry up and find a tutorial online to learn how to type blindly, which will greatly improve your development efficiency.
|
||||
|
||||
The third is to balance in-class and self-study. We question the status quo, but we also have to abide by the rules. After all, grade points are still very important in insurance research. Therefore, in the freshman year, I still suggest that everyone try to study according to their own schedule, but supplemented by some high-quality extracurricular resources. For example, calculus line algebra can refer to the course Notes of [MIT 18.01/18.02](./Mathematical Fundamentals/MITmaths.en.md) and [MIT 18.06](./Mathematical Fundamentals/MITLA.en.md). You can learn Python through [UCB CS61A](./Programming/CS61A.en.md) during vacation. At the same time, do the first and second points above, and pay attention to the cultivation of good programming habits and practical abilities. Based on personal experience, the credits of mathematics courses in the freshman year are quite large, and the variance of the content of the mathematics test is very large. Different schools and different teachers have different styles. Self-study may allow you to understand the essence of mathematics, but it may not be able to give you a good result. score. Therefore, before the exam, it is best to brush up the previous year's questions in a targeted manner and fully take the exam.
|
||||
|
||||
After entering the sophomore year, there will be mostly professional courses in the direction of computer. At this time, everyone can completely let go of themselves and enter the palace of self-study. For details, please refer to [a CS study plan for reference only](./CS study plan.en.md), this is a complete set of guidelines based on my three-year self-study experience, the characteristics of each course and why I want to take this I gave a brief introduction to each course. For each course on your schedule, there should be corresponding foreign courses in this plan, and I believe it is basically all-round crushing in terms of quality. Since the professional knowledge in the direction of computer is basically the same, and high-quality courses will allow you to understand the knowledge points in principle, it is basically a blow to dimensionality reduction for most domestic teaching based on the book. Generally speaking, as long as the PPT that the teacher has "hardly" studied for a semester is used for two days of surprise review before the exam, it is not difficult to get a good test score. If there is a large course assignment, you can try to modify the Lab or Project of the foreign course to meet the needs of the class. I was taking an operating system class at the time, and found that the teacher was still using a course experiment that had long been eliminated by foreign schools, so I replaced the email teacher with the [MIT 6.S081](./operating system/MIT6.S081.en.md) that I was studying. The xv6 Project facilitates self-study and unintentionally promotes curriculum reform. In short, flexibility is the first priority. Your goal is to master knowledge in the most convenient and efficient way. All so-called regulations that violate your goal can be "fooled" by every means. With this foolishness, I basically never went to offline classes after my junior year (I stayed at home for more than half a year in my second year due to the epidemic), and it had no effect on my grade point at all.
|
||||
|
||||
Finally, I hope everyone will be less impetuous and utilitarian, and more patient and pursuing. Many people send emails asking me if self-study requires strong self-control. I think the key depends on what you want. If you still hold the fantasy of being able to earn over 10,000 a month by knowing a programming language, and want to get a share of the dividends of the Internet, then no matter how much I say, it is nonsense. In fact, my initial self-study did not have too many utilitarian ideas, but pure curiosity and instinctive thirst for knowledge. In the process of self-study, there is no such thing as "hanging the head and stabbing the buttocks". It is time to eat and play, and I realized that I have accumulated so much information unconsciously. Nowadays, the confrontation between China and the United States has become a trend, and we are still "humblely" "learning from foreigners to learn skills". While lamenting the high-quality foreign courses, there is often a sense of crisis. Who will change all this? It depends on you who have just entered the industry. So come on, boy!
|
||||
|
||||
## Cut it out and make it simple
|
||||
|
||||
If you have graduated from a bachelor’s degree and started to study or start a job, or you are engaged in other fields and want to use your spare time to transcode, then you may not have enough spare time to study systematically [one copy only for Refer to the content in the CS study plan](./CS study plan.en.md), but I want to make up for the foundation that I owed during the undergraduate period. Considering that these readers usually have some programming experience, there is no need to repeat the introductory courses. And from a practical point of view, since the general direction of the work has been determined, it is really not necessary to have a particularly in-depth study of each computer branch, and more emphasis should be placed on some general principles and skills. Therefore, based on my own experience, I selected several core professional courses that I personally feel are the most important and of the highest quality, hoping to better deepen readers' understanding of computers. After completing these courses, no matter what kind of work you are doing, I believe that you will not be able to become an ordinary switcher, but you will have a deeper understanding of the underlying logic of the computer.
|
||||
|
||||
|Course direction |Course name |
|
||||
|-----------|------------------------------------- --------------|
|
||||
|Discrete Mathematics and Probability Theory|[UCB CS70 : discrete Math and probability theory](./Mathematics Advanced/CS70.en.md)|
|
||||
|Data Structures and Algorithms |[Coursera: Algorithms I & II](Data Structures and Algorithms/Algo.en.md)|
|
||||
|Software Engineering |[MIT 6.031: Software Construction](Software Engineering/6031.en.md)|
|
||||
|Full Stack Development |[MIT web development course](Web Development/mitweb.en.md)|
|
||||
|Introduction to Computer Systems |[CMU CS15213: CSAPP](./architecture/CSAPP.en.md)|
|
||||
|Introduction to Architecture |[Coursera: Nand2Tetris](./architecture/N2T.en.md) |
|
||||
|Advanced Architecture |[CS61C: Great Ideas in Computer Architecture](./Architecture/CS61C.en.md)|
|
||||
|Database Principles |[CMU 15-445: Introduction to Database System](Database System/15445.en.md)|
|
||||
|Computer Networking |[Computer Networking: A Top-Down Approach](./Computer Networking/topdown.en.md)|
|
||||
|Artificial Intelligence |[Harvard CS50: Introduction to AI with Python](Artificial Intelligence/CS50.en.md)|
|
||||
|Deep Learning |[Coursera: Deep Learning](Deep Learning/CS230.en.md)|
|
||||
|
||||
## Belonging
|
||||
|
||||
If you have a solid grasp of the core professional courses in the computer field, and have determined your own work or research direction, there are still many in the book that are not included in [a CS study plan for reference only](./CS study plan .en.md) mentioned classes for you to explore.
|
||||
|
||||
As the number of contributors continues to increase, new branches will be added to the directory on the left, such as **Machine Learning Advanced** and **Machine Learning Systems**. And there are several courses of the same type under the same branch, which come from different schools and have different emphases and course experiments. For example, the branch of **Operating System** includes MIT, Berkeley and Nanjing University. school curriculum. If you want to delve into a field, taking these same courses will give you a different perspective on similar knowledge. At the same time, the author of this book also plans to contact some scientific researchers in related fields to share the scientific research learning path in a certain subdivision field, so that the CS self-study guide can achieve depth improvement while pursuing breadth.
|
||||
|
||||
If you want to contribute content in this area, please contact the author by email [zhongyinmin@pku.edu.cn](mailto:zhongyinmin@pku.edu.cn)
|
||||
136
docs/好书推荐.en.md
Normal file
136
docs/好书推荐.en.md
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
# Recommended books
|
||||
|
||||
<!--
|
||||
Please place summary book resources under the resource summary section
|
||||
|
||||
Book Format Requirements:
|
||||
Title of the book (priority is the original English version, if it is open source, a link is attached, and if there are multiple versions, the latest version is the default) [Douban link] [Links to other related resources (such as related courses)]
|
||||
|
||||
The sequence requirements under the same section:
|
||||
First Chinese and then English, the same language first open source and then closed source, and finally in alphabetical order from basic to in-depth.
|
||||
-->
|
||||
|
||||
Due to copyright reasons, in addition to the open source resources provided in the books listed below, please use [libgen](http://libgen.is/) or [z-lib](https://z-lib .org/) lookup.
|
||||
|
||||
## Resource Summary
|
||||
|
||||
- [Free Programming Books](https://github.com/EbookFoundation/free-programming-books): Summary of open source programming books
|
||||
- [CS Textbook Recommendations](https://4chan-science.fandom.com/wiki/Computer_Science_and_Engineering): List of recommended textbooks for computer science
|
||||
- [C Book Guide and List](https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list): Recommended list of programming books related to C language
|
||||
- [C++ Book Guide and List](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list): Recommended list of programming books related to C++ language
|
||||
- [Python Book Guide and List](https://pythonbooks.org/): Recommended list of programming books related to Python language
|
||||
- [Computer Vision Textbook Recommendations](https://www.folio3.ai/blog/best-computer-vision-books/): List of recommended textbooks for computer vision
|
||||
- [Deep Learning Textbook Recommendations](https://www.mostrecommendedbooks.com/lists/best-deep-learning-books): List of recommended textbooks for deep learning
|
||||
|
||||
|
||||
## Getting started with the system
|
||||
|
||||
- Computer Systems: A Programmer's Perspective [[Douban](https://book.douban.com/subject/26912767/)]
|
||||
- Principles of Computer System Design: An Introduction [[豆瓣](https://book.douban.com/subject/3707841/)]
|
||||
|
||||
## operating system
|
||||
|
||||
- [Modern Operating System: Principles and Implementation](https://ipads.se.sjtu.edu.cn/mospi/) [[豆瓣](https://book.douban.com/subject/35208251/)]
|
||||
- [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) [[豆瓣](https://book.douban.com/subject/19973015/)]
|
||||
- Modern Operating Systems [[Douban](https://book.douban.com/subject/27096665/)]
|
||||
- Operating Systems: Principles and Practice [[Douban](https://book.douban.com/subject/25984145/)]
|
||||
|
||||
## computer network
|
||||
|
||||
- [Computer Networks: A Systems Approach](https://book.systemsapproach.org/foreword.html) [[豆瓣](https://book.douban.com/subject/26417896/)]
|
||||
- [Computer Networking: A Top-Down Approach](https://www.ucg.ac.me/skladiste/blog_44233/objava_64433/fajlovi/Computer%20Networking%20_%20A%20Top%20Down%20Approach,%207th,% 20converted.pdf) [[Douban](https://book.douban.com/subject/30280001/)]
|
||||
- How Networks Work [[Douban](https://book.douban.com/subject/26941639/)]
|
||||
|
||||
## Distributed Systems
|
||||
|
||||
- [Patterns of Distributed System (Blog)](https://github.com/dreamhead/patterns-of-distributed-systems)
|
||||
- [Distributed Systems for Fun and Profit (Blog)](http://book.mixu.net/distsys/index.html)
|
||||
- [Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems](https://github.com/Vonng/ddia) [[豆瓣](https://book.douban.com/subject/ 26197294/)]
|
||||
|
||||
## database system
|
||||
|
||||
- [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf) [[豆瓣](https://book.douban.com/subject/17665384/)]
|
||||
- [Readings in Database Systems](http://www.redbook.io/) [[豆瓣](https://book.douban.com/subject/2256069/)]
|
||||
- Database System Concepts [[Douban](https://book.douban.com/subject/10548379/)]
|
||||
|
||||
## Compilation principle
|
||||
|
||||
- Engineering a Compiler [[Douban](https://book.douban.com/subject/5288601/)]
|
||||
- Compilers: Principles, Techniques, and Tools [[豆瓣](https://book.douban.com/subject/1866231/)]
|
||||
|
||||
## Computer programming language
|
||||
|
||||
- Construction and Interpretation of Computer Programs [[豆瓣](https://book.douban.com/subject/1148282/)]
|
||||
- [Essentials of Programming Languages](https://eopl3.com/) [[Douban](https://book.douban.com/subject/3136252/)]
|
||||
- [Practical Foundations for Programming Languages](https://www.cs.cmu.edu/~rwh/pfpl.html) [[豆瓣](https://book.douban.com/subject/26782198/)]
|
||||
- [Software Foundations](https://softwarefoundations.cis.upenn.edu/) [[Douban](https://book.douban.com/subject/25712292/)] [[Peking University related courses](https:/ /xiongyingfei.github.io/SF/2021/)]
|
||||
- [Types and Programming Languages](https://www.cis.upenn.edu/~bcpierce/tapl/) [[Douban](https://book.douban.com/subject/1761910/)] [[Peking University Related courses](https://xiongyingfei.github.io/DPPL/2021/main.htm)]
|
||||
|
||||
## Architecture
|
||||
|
||||
- Superscalar Processor Design: Superscalar RISC Processor Design [[豆瓣](https://book.douban.com/subject/26293546/)]
|
||||
- Computer Organization and Design RISC-V Edition [[豆瓣](https://book.douban.com/subject/27103952/)]
|
||||
- Computer Organization and Design: The Hardware/Software Interface [[豆瓣](https://book.douban.com/subject/26604008/)]
|
||||
- Computer Architecture: A Quantitative Approach [[Douban](https://book.douban.com/subject/6795919/)]
|
||||
|
||||
## Theoretical Computer Science
|
||||
|
||||
- Introduction to the Theory of Computation [[豆瓣](https://book.douban.com/subject/1852515/)]
|
||||
|
||||
## Cryptography
|
||||
|
||||
- Cryptography Engineering: Design Principles and Practical Applications [[Douban](https://book.douban.com/subject/26416592/)]
|
||||
- Introduction to Modern Cryptography [[豆瓣](https://book.douban.com/subject/2678340/)]
|
||||
|
||||
## Reverse Engineering
|
||||
|
||||
- Core Principles of Reverse Engineering [[豆瓣](https://book.douban.com/subject/25866389/)]
|
||||
- Encryption and decryption [[Douban](https://book.douban.com/subject/30288807/)]
|
||||
|
||||
## Computer Graphics
|
||||
|
||||
- [Monte Carlo theory, methods and examples](https://artowen.su.domains/mc/)[[豆瓣](https://book.douban.com/subject/6089923/)]
|
||||
- Advanced Global Illumination [[Douban](https://book.douban.com/subject/2751153/)]
|
||||
- Fundamentals of Computer Graphics [[豆瓣](https://book.douban.com/subject/26868819/)]
|
||||
- [Fluid Simulation for Computer Graphics](http://wiki.cgt3d.cn/mediawiki/images/4/43/Fluid_Simulation_for_Computer_Graphics_Second_Edition.pdf) [[豆瓣](https://book.douban.com/subject/2584523/ )]
|
||||
- [Physically Based Rendering: From Theory To Implementation](https://research.quanfita.cn/files/Physically_Based_Rendering_Third_Edition.pdf) [[Douban](https://book.douban.com/subject/4306242/)]
|
||||
- [Real-Time Rendering](https://research.quanfita.cn/files/Real-Time_Rendering_4th_Edition.pdf) [[Douban](https://book.douban.com/subject/30296179/)]
|
||||
|
||||
## Game Engine
|
||||
|
||||
- Game Programming Patterns: Game Programming Patterns [[Douban](https://book.douban.com/subject/26880704/)]
|
||||
- Real-time collision detection algorithm technology [[Douban](https://book.douban.com/subject/4861957/)]
|
||||
- [Game AI Pro Series](http://www.gameaipro.com/) [[Douban](https://search.douban.com/book/subject_search?search_text=Game+AI+Pro&cat=1001)]
|
||||
- Artificial Intelligence for Games [[Douban](https://book.douban.com/subject/3836472/)]
|
||||
- Game Engine Architecture [[Douban](https://book.douban.com/subject/25815142/)]
|
||||
- Game Programming Gems Series [[Douban](https://search.douban.com/book/subject_search?search_text=Game+Programming+Gems&cat=1001)]
|
||||
|
||||
## Software Engineering
|
||||
|
||||
- [Software Engineering at Google](https://abseil.io/resources/swe-book) [[豆瓣](https://book.douban.com/subject/34875994/)]
|
||||
|
||||
## Design Patterns
|
||||
|
||||
- Design Patterns: The Foundation of Reusable Object-Oriented Software [[豆瓣](https://book.douban.com/subject/1052241/)]
|
||||
- Big talk design pattern [[Douban](https://book.douban.com/subject/2334288/)]
|
||||
- [Head First Design Pattern](https://awesome-programming-books.github.io/design-pattern/HeadFirst%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC% 8F.pdf) [[Douban](https://book.douban.com/subject/2243615/)]
|
||||
|
||||
## deep learning
|
||||
|
||||
- [Hands-on deep learning](https://zh.d2l.ai) [[Douban](https://book.douban.com/subject/33450010/)]
|
||||
- [Neural Network and Deep Learning](https://nndl.github.io/) [[Douban](https://book.douban.com/subject/35044046/)]
|
||||
- Introduction to Deep Learning [[Douban](https://book.douban.com/subject/30270959/)]
|
||||
- [Simple and rude TensorFlow 2 (Tutorial)](https://tf.wiki/)
|
||||
- [Speech and Language Processing](https://web.stanford.edu/~jurafsky/slp3/) [[豆瓣](https://book.douban.com/subject/5373023/)]
|
||||
|
||||
## Computer Vision
|
||||
|
||||
- [Multiple View Geometry in Computer Vision](https://github.com/DeepRobot2020/books/blob/master/Multiple%20View%20Geometry%20in%20Computer%20Vision%20(Second%20Edition).pdf) [[豆瓣 ](https://book.douban.com/subject/1841346/)]
|
||||
## robot
|
||||
|
||||
- [Probabilistic Robotics](https://docs.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf) [[豆瓣](https://book.douban.com/subject/2861227/)]
|
||||
|
||||
## interview
|
||||
|
||||
- Jianzhi Offer: Famous company interviewers give detailed lectures on typical programming questions [[豆瓣](https://book.douban.com/subject/27008702/)]
|
||||
- Cracking The Coding Interview [[豆瓣](https://book.douban.com/subject/10436668/)]
|
||||
Loading…
Reference in a new issue