
CS Major Knowledge Notes for Interviews
Description
Book Introduction
Design patterns, networks, operating systems, databases, data structures, developer interviews, and portfolios!
This one book is all you need to acquire CS expertise and prepare for interviews! Computer Science (CS) expertise plays a significant role in developer interviews! From design patterns to data structures, there's so much to learn. How should you prepare? This book covers all the CS knowledge you need for interviews, including design patterns, networks, operating systems, databases, and data structures. The book explains the theory in detail with over 200 illustrations and codes, and covers practical application methods such as design patterns used in actual libraries, so that you can learn without missing out on theory and practice. Additionally, the book covers important content in depth, explains less important content in a nutshell, and includes definitions of over 70 terms throughout the book. Lastly, the author, who passed the interview at top-tier companies such as Google, Naver, and Kakao, will share his experience in creating a portfolio, along with expected questions for each chapter and interview preparation know-how. If you want to prepare for a developer interview or learn CS-related knowledge to become a better developer, start with this book. |
- You can preview some of the book's contents.
Preview
index
Chapter 1.
Design Patterns and Programming Paradigms
1.1 Design Patterns
__1.1.1 Singleton Pattern
__1.1.2 Factory Pattern
__1.1.3 Strategy Pattern
__1.1.4 Observer Pattern
__1.1.5 Proxy Patterns and Proxy Servers
__1.1.6 Iterator Pattern
__1.1.7 Exposure Module Pattern
__1.1.8 MVC pattern
__1.1.9 MVP Pattern
__1.1.10 MVVM pattern
1.2 Programming Paradigm
__1.2.1 Declarative and Functional Programming
__1.2.2 Object-oriented programming
__1.2.3 Procedural Programming
__1.2.4 Mixing of paradigms
Expected questions
Chapter 2.
network
2.1 Network Basics
__2.1.1 Throughput and Latency
__2.1.2 Network Topology and Bottlenecks
__2.1.3 Network Classification
__2.1.4 Network performance analysis commands
__2.1.5 Network Protocol Standardization
2.2 TCP/IP 4-layer model
__2.2.1 Hierarchical Structure
__2.2.2 PDU
2.3 Network Devices
__2.3.1 Network Device Processing Scope
__2.3.2 Device handling the application layer
__2.3.3 Devices that handle the Internet layer
__2.3.4 Devices that handle the data link layer
__2.3.5 Devices that handle the physical layer
2.4 IP address
__2.4.1 ARP
__2.4.2 Hop-by-hop communication
__2.4.3 IP address system
__2.4.4 Location information using IP address
2.5 HTTP
__2.5.1 HTTP/1.0
__2.5.2 HTTP/1.1
__2.5.3 HTTP/2
__2.5.4 HTTPS
__2.5.5 HTTP/3
Expected questions
Chapter 3.
operating system
3.1 Operating Systems and Computers
__3.1.1 Role and Structure of the Operating System
__3.1.2 Computer Elements
3.2 Memory
__3.2.1 Memory Hierarchy
__3.2.2 Memory Management
3.3 Processes and Threads
__3.3.1 Process and Compilation Process
__3.3.2 Process status
__3.3.3 Process memory structure
__3.3.4 PCB
__3.3.5 Multiprocessing
__3.3.6 Threads and Multithreading
__3.3.7 Shared Resources and Critical Sections
__3.3.8 Deadlock
3.4 CPU Scheduling Algorithm
__3.4.1 Non-preemptive method
__3.4.2 Preemptive method
Expected questions
Chapter 4.
database
4.1 Database Basics
__4.1.1 Entity
__4.1.2 Relations
__4.1.3 Properties
__4.1.4 domain
__4.1.5 Fields and Records
__4.1.6 Relationships
__4.1.7 key
4.2 ERD and Normalization Process
__4.2.1 The Importance of ERD
__4.2.2 Learning ERD with Examples
__4.2.3 Normalization process
4.3 Transactions and Integrity
__4.3.1 Transactions
__4.3.2 Integrity
__4.4 Types of databases
__4.4.1 Relational Database
__4.4.2 NoSQL database
4.5 Index
__4.5.1 The Need for Indexes
__4.5.2 B-tree
__4.5.3 How to create an index
__4.5.4 Index Optimization Techniques
4.6 Types of joins
__4.6.1 Inner Join
__4.6.2 Left Join
__4.6.3 Right Join
__4.6.4 Union Join
4.7 Join Principle
__4.7.1 Nested Loop Join
__4.7.2 Sort Merge Join
__4.7.3 Hash Join
Expected questions
Chapter 5.
data structure
5.1 Complexity
__5.1.1 Time Complexity
__5.1.2 Space Complexity
__5.1.3 Time Complexity in Data Structures
5.2 Linear data structures
__5.2.1 Linked List
__5.2.2 Array
__5.2.3 Vector
__5.2.4 Stack
__5.2.5 Queue
5.3 Nonlinear data structures
__5.3.1 Graph
__5.3.2 Tree
__5.3.3 Heap
__5.3.4 Priority Queue
__5.3.5 Map
__5.3.6 Set
__5.3.7 Hash Table
Expected questions
Chapter 6.
Portfolio and Interview
6.1 Portfolio
__6.1.1 The first sentence is important
__6.1.2 Say it in numbers
__6.1.3 Divide the skill level into categories
__6.1.4 Write a good rhythm
__6.1.5 Become an Open Source Contributor
__6.1.6 Let's blog
6.2 Interview
__6.2.1 A question that keeps on going
__6.2.2 Don't change your answer
__6.2.3 What you don't know is what you don't know
__6.2.4 Withstand the pressure
__6.2.5 See the official site
__6.2.6 With clear pronunciation
__6.2.7 Advantages, disadvantages, and differences are essential
__6.2.8 Predict the work
__6.2.9 Prepare a checklist
__6.2.10 Personality Interview
Design Patterns and Programming Paradigms
1.1 Design Patterns
__1.1.1 Singleton Pattern
__1.1.2 Factory Pattern
__1.1.3 Strategy Pattern
__1.1.4 Observer Pattern
__1.1.5 Proxy Patterns and Proxy Servers
__1.1.6 Iterator Pattern
__1.1.7 Exposure Module Pattern
__1.1.8 MVC pattern
__1.1.9 MVP Pattern
__1.1.10 MVVM pattern
1.2 Programming Paradigm
__1.2.1 Declarative and Functional Programming
__1.2.2 Object-oriented programming
__1.2.3 Procedural Programming
__1.2.4 Mixing of paradigms
Expected questions
Chapter 2.
network
2.1 Network Basics
__2.1.1 Throughput and Latency
__2.1.2 Network Topology and Bottlenecks
__2.1.3 Network Classification
__2.1.4 Network performance analysis commands
__2.1.5 Network Protocol Standardization
2.2 TCP/IP 4-layer model
__2.2.1 Hierarchical Structure
__2.2.2 PDU
2.3 Network Devices
__2.3.1 Network Device Processing Scope
__2.3.2 Device handling the application layer
__2.3.3 Devices that handle the Internet layer
__2.3.4 Devices that handle the data link layer
__2.3.5 Devices that handle the physical layer
2.4 IP address
__2.4.1 ARP
__2.4.2 Hop-by-hop communication
__2.4.3 IP address system
__2.4.4 Location information using IP address
2.5 HTTP
__2.5.1 HTTP/1.0
__2.5.2 HTTP/1.1
__2.5.3 HTTP/2
__2.5.4 HTTPS
__2.5.5 HTTP/3
Expected questions
Chapter 3.
operating system
3.1 Operating Systems and Computers
__3.1.1 Role and Structure of the Operating System
__3.1.2 Computer Elements
3.2 Memory
__3.2.1 Memory Hierarchy
__3.2.2 Memory Management
3.3 Processes and Threads
__3.3.1 Process and Compilation Process
__3.3.2 Process status
__3.3.3 Process memory structure
__3.3.4 PCB
__3.3.5 Multiprocessing
__3.3.6 Threads and Multithreading
__3.3.7 Shared Resources and Critical Sections
__3.3.8 Deadlock
3.4 CPU Scheduling Algorithm
__3.4.1 Non-preemptive method
__3.4.2 Preemptive method
Expected questions
Chapter 4.
database
4.1 Database Basics
__4.1.1 Entity
__4.1.2 Relations
__4.1.3 Properties
__4.1.4 domain
__4.1.5 Fields and Records
__4.1.6 Relationships
__4.1.7 key
4.2 ERD and Normalization Process
__4.2.1 The Importance of ERD
__4.2.2 Learning ERD with Examples
__4.2.3 Normalization process
4.3 Transactions and Integrity
__4.3.1 Transactions
__4.3.2 Integrity
__4.4 Types of databases
__4.4.1 Relational Database
__4.4.2 NoSQL database
4.5 Index
__4.5.1 The Need for Indexes
__4.5.2 B-tree
__4.5.3 How to create an index
__4.5.4 Index Optimization Techniques
4.6 Types of joins
__4.6.1 Inner Join
__4.6.2 Left Join
__4.6.3 Right Join
__4.6.4 Union Join
4.7 Join Principle
__4.7.1 Nested Loop Join
__4.7.2 Sort Merge Join
__4.7.3 Hash Join
Expected questions
Chapter 5.
data structure
5.1 Complexity
__5.1.1 Time Complexity
__5.1.2 Space Complexity
__5.1.3 Time Complexity in Data Structures
5.2 Linear data structures
__5.2.1 Linked List
__5.2.2 Array
__5.2.3 Vector
__5.2.4 Stack
__5.2.5 Queue
5.3 Nonlinear data structures
__5.3.1 Graph
__5.3.2 Tree
__5.3.3 Heap
__5.3.4 Priority Queue
__5.3.5 Map
__5.3.6 Set
__5.3.7 Hash Table
Expected questions
Chapter 6.
Portfolio and Interview
6.1 Portfolio
__6.1.1 The first sentence is important
__6.1.2 Say it in numbers
__6.1.3 Divide the skill level into categories
__6.1.4 Write a good rhythm
__6.1.5 Become an Open Source Contributor
__6.1.6 Let's blog
6.2 Interview
__6.2.1 A question that keeps on going
__6.2.2 Don't change your answer
__6.2.3 What you don't know is what you don't know
__6.2.4 Withstand the pressure
__6.2.5 See the official site
__6.2.6 With clear pronunciation
__6.2.7 Advantages, disadvantages, and differences are essential
__6.2.8 Predict the work
__6.2.9 Prepare a checklist
__6.2.10 Personality Interview
Detailed image

Into the book
When preparing for an interview at a major IT company, I heard that "solid CS expertise is required." So I tried to build up my CS expertise by reading numerous books and attending lectures.
At that time, I didn't know what knowledge was necessary and what wasn't, so I tried to memorize it all, but it was so difficult because there was so much.
Also, since there are bound to be some errors in the CS knowledge on the Internet, I had difficulties such as getting confused while studying and having to look it up again.
This book is about solving those problems.
You can learn the overall content of CS major knowledge in just one book, and it further contains the CS major knowledge necessary for actual development.
The advantages of this book are as follows:
- Covers all aspects of CS major knowledge, including CS major knowledge that is likely to appear in interviews.
- The author's actual development experience is incorporated, providing specialized knowledge that combines theory and practice, rather than CS specialized knowledge that is solely focused on theory.
- The book is filled with interview know-how based on the author's numerous interview experiences.
- The author's portfolio, which was accepted to top-tier companies such as Google, Naver, and Kakao, is introduced, and the know-how for creating a portfolio is provided.
Each chapter contains the following:
- Chapter 1 covers design patterns.
It describes not only the theory but also how design patterns are used in practice.
For example, it provides specific information on how the strategy pattern is used in practice, such as 'the strategy pattern is used in the passport library.'
The example code is written in two languages, Java and JavaScript, and we tried to express the design patterns well while minimizing the difficulty of the code as much as possible.
- Chapter 2 covers networks.
It explains the overall content of the network, and explains the important IP and HTTP parts of the network in more detail, going into depth on the important parts and only explaining the key points of the unimportant parts.
- Chapter 3 covers the operating system.
I tried to explain system calls and the kernel, which are core elements of the operating system, a little more easily, focusing on processes and threads.
Chapter 4 covers databases. It focuses on important aspects of a database, such as ERDs, transactions, and indexing.
- Chapter 5 explains data structures.
First, we will learn the basics of data structures by explaining time complexity and space complexity, and then cover all the essential data structures such as queues and stacks.
- Chapter 6 provides tips on writing a portfolio and preparing for a personality interview, focusing on the author's portfolio.
I hope this book will be your first step toward becoming a great developer with solid CS knowledge.
At that time, I didn't know what knowledge was necessary and what wasn't, so I tried to memorize it all, but it was so difficult because there was so much.
Also, since there are bound to be some errors in the CS knowledge on the Internet, I had difficulties such as getting confused while studying and having to look it up again.
This book is about solving those problems.
You can learn the overall content of CS major knowledge in just one book, and it further contains the CS major knowledge necessary for actual development.
The advantages of this book are as follows:
- Covers all aspects of CS major knowledge, including CS major knowledge that is likely to appear in interviews.
- The author's actual development experience is incorporated, providing specialized knowledge that combines theory and practice, rather than CS specialized knowledge that is solely focused on theory.
- The book is filled with interview know-how based on the author's numerous interview experiences.
- The author's portfolio, which was accepted to top-tier companies such as Google, Naver, and Kakao, is introduced, and the know-how for creating a portfolio is provided.
Each chapter contains the following:
- Chapter 1 covers design patterns.
It describes not only the theory but also how design patterns are used in practice.
For example, it provides specific information on how the strategy pattern is used in practice, such as 'the strategy pattern is used in the passport library.'
The example code is written in two languages, Java and JavaScript, and we tried to express the design patterns well while minimizing the difficulty of the code as much as possible.
- Chapter 2 covers networks.
It explains the overall content of the network, and explains the important IP and HTTP parts of the network in more detail, going into depth on the important parts and only explaining the key points of the unimportant parts.
- Chapter 3 covers the operating system.
I tried to explain system calls and the kernel, which are core elements of the operating system, a little more easily, focusing on processes and threads.
Chapter 4 covers databases. It focuses on important aspects of a database, such as ERDs, transactions, and indexing.
- Chapter 5 explains data structures.
First, we will learn the basics of data structures by explaining time complexity and space complexity, and then cover all the essential data structures such as queues and stacks.
- Chapter 6 provides tips on writing a portfolio and preparing for a personality interview, focusing on the author's portfolio.
I hope this book will be your first step toward becoming a great developer with solid CS knowledge.
--- From the text
Publisher's Review
“A total of 13 developers helped create this book: Beomseok Choi (Naver Research Engineer), Chanho Kim (Line Backend Developer), Seongjun Lee (Coupang Senior Software Engineer), Seungwon Nam (Carrot Market Backend Developer), Taehoon Lee (Baedal Minjok Backend Developer), Taewoo Lee (Humanscape CTO), Seongbin Song (Samsung Electronics Software Engineer), Seungcheol Lee (NHN Backend Developer), Inbeom Kim (CNCITY Data Engineer / MongoDB Korea Management), Jaeyeop Kim (Startup Data Engineer), Geonwoo Kim (Class 101 Backend Developer), Yubin Jo (Eastsoft iOS Developer), and Gyuyoung Oh (KEPCO KDN Software Engineer).”
GOODS SPECIFICS
- Publication date: April 28, 2022
- Page count, weight, size: 292 pages | 668g | 183*235*15mm
- ISBN13: 9791165219529
- ISBN10: 1165219522
You may also like
카테고리
korean
korean