Skip to product information
Java Algorithm Interview with Kotlin
Java Algorithm Interview with Kotlin
Description
Book Introduction
- A complete study guide on algorithms and data structures for job seekers and those changing careers!
- Detailed analysis and solution explanations of 102 previous Leetcode/Programmers questions.


"Python Algorithm Interview," the ultimate guide for developers preparing for coding tests and algorithm interviews, has been updated and remastered with Java and Kotlin code! With this one book, you can build the foundation for practical code that can be applied immediately in the workplace, not to mention preparing for a job or career change.
Let's solidify our understanding of algorithms and data structures once again through over 200 rich illustrations.
  • You can preview some of the book's contents.
    Preview

index
[Part 1] Preparing for a Coding Interview

Chapter 1: Coding Interviews & Coding Tests
Coding Interviews: The Gateway to Corporate Talent Acquisition
__Coding Interviews and Evaluation Criteria of Domestic and Foreign Companies
__Current Status of Coding Testing Platform Utilization by Domestic Companies
Preparing for an Online Coding Test
__Practice book and writing tools
__Which programming language is advantageous?
__Prepare your own code snippet
__must be solved so that all test cases pass
__If a timeout occurs
__Don't forget to handle exceptions
__How to deal with a solution that is approached incorrectly
__Do I need a coding tool?
__If there are negative interviewers in IDE
__Verify your code with the REPL tool
Features and Uses of Online Coding Testing Platforms
__Leetcode
__programmers

[Part 2] Java & Kotlin

Chapter 2 Java, the world's most famous language
History of Java
Key Features of Java
__object-oriented programming language
__Functional programming language
Java tools
__Ready-to-run JShell
__How to build and run Java
The emergence of JVM-based languages

Chapter 3 Kotlin, an official language recognized by Google
Key Features of Kotlin
__practicality
__Interoperability
__Safety
__Elegance
Kotlin's basic grammar
__Clean for loop
__Neat when conditional statement
__Convenient function declaration
__Functional programming language
__Visibility Controller
__extension function
How to build and run Kotlin
__Is Kotlin really slow?

Chapter 4 Data Types
What data types does Java provide?
__primitive data type
__Reference data type
__Speed ​​comparison of primitive and reference data types
The emergence of the Java Collections Framework
__The list you will use most often
__The most useful map you will ever use
Performance issues with initial data types
A data type that can store numbers of infinite size
What data types does Kotlin provide?
__Are Kotlin data types really that fast?
How Kotlin Implements a Collections Framework
Kotlin's extension functions that extend the functionality of a class
__Collection interface implemented separately by Kotlin
Execution speed of the Java Collections Framework

Chapter 5 Big O
Big O
Comparison of __n2 and 2n
__A practical way to calculate Big O
__Upper and Worst
__Installation Repayment Analysis
__Parallelization
__Characteristics of complexity
Big O of the Java Collections Framework
__List Time Complexity
__Map Time Complexity
Deck time complexity

Chapter 6 String Processing
[Problem 01] Valid Palindrome
[Problem 02] Reversing a string
[Problem 03] Log file reorganization
[Question 04] The most common words
[Problem 05] Group Anagram
[Problem 06] Longest palindromic substring

[Part 3] Linear Data Structures

Chapter 7 Arrangement
dynamic array
[Problem 07] Sum of two numbers
[Problem 08] Rainwater Trapping
[Problem 09] Sum of three numbers
[Problem 10] Array Partition I
[Problem 11] Product of arrays excluding itself
[Question 12] The best time to buy and sell stocks

Chapter 8 Linked Lists
[Problem 13] Palindromic Linked List
[Problem 14] Merging two sorted lists
[Problem 15] Reverse linked list
[Problem 16] Addition of two numbers
[Problem 17] Pair Node Swap
[Problem 18] Odd-Even Linked List
[Problem 19] Reverse Linked List II

Chapter 9 Stacks and Queues
stack
cue
Utilizing in Java
__Java Queue Declaration
__Java's stack declaration
__If thread safety is required
[Problem 20] Valid parentheses
[Problem 21] Removing duplicate characters
[Problem 22] Daily temperature
[Problem 23] Implementing a stack using a queue
[Problem 24] Implementing a Queue Using a Stack
[Problem 25] Circular Queue Design

10-card deck, priority queue
deck
[Problem 26] Circular Deck Design
priority queue
[Problem 27] ​​Merging k sorted lists
[Problem 28] The k closest points to the origin
[Question 29] Spicier

Chapter 11 Hash Tables
Hash
__birthday problem
__Pigeonhole principle
__load factor
__hash function
crash
__Individual chaining
__Open Addressing
__Language-specific hash table implementation methods
[Problem 30] Hashmap Design
[Problem 31] Gems and Stones
[Problem 32] Longest substring without duplicate characters
[Problem 33] Top k frequent elements
[Question 34] Athletes who failed to finish

[Part 4] Nonlinear Data Structures

Chapter 12 Graph
Euler path
Hamilton path
Graph traversal
__DFS (depth-first search)
__BFS (Breadth-First Search)
Backtracking
Constraint satisfaction problem
[Problem 35] Number of islands
[Problem 36] Phone number character combination
[Problem 37] Permutations
[Problem 38] Combination
[Problem 39] Sum of combinations
[Problem 40] Subsets
[Problem 41] Schedule Restructuring
[Problem 42] Travel route
[Question 43] Course Schedule

Chapter 13: The Shortest Path Problem
[Problem 44] Network Delay Time
[Question 45] Cheapest flight within K transit point
[Question 46] Shortest distance on the game map

Chapter 14 Tree
Each name of the tree
Differences between graphs and trees
binary tree
[Problem 47] Maximum depth of a binary tree
[Problem 48] Diameter of a binary tree
[Problem 49] Longest path with identical values
[Problem 50] Binary Tree Inversion
[Problem 51] Merging two binary trees
[Problem 52] Binary Tree Serialization & Deserialization
[Problem 53] Balanced binary tree
[Problem 54] Minimum height tree
Binary Search Tree (BST)
__Self-balancing binary search tree
[Problem 55] Converting a sorted array into a binary search tree
[Problem 56] Converting a binary search tree (BST) to a larger sum tree
[Problem 57] Binary Search Tree (BST) Agreement Range
[Problem 58] Minimum value between nodes in a binary search tree (BST)
Tree traversal
__preposition traversal
__Lieutenant Tour
__postorder traversal
[Problem 59] Building a binary tree using preorder and inorder traversals

Chapter 15 Heap
Heap operations
__insertion
__extraction
[Problem 60] The kth largest element in an array
[Problem 61] Dual Priority Queue

Chapter 16 Try
[Problem 62] Trie Implementation
[Problem 63] Palindrome Pair

[Part 5] Algorithms

Chapter 17 Sorting
Bubble sort
Insertion sort
merge sort
Quick sort
Stable and unstable sorts
[Problem 64] List sorting
[Problem 65] Section Merge
[Problem 66] Insertion sort list
[Problem 67] Largest number
[Problem 68] Valid anagrams
[Problem 69] Color Sorting

Chapter 18: Binary Search
[Problem 70] Binary Search
[Problem 71] Searching a Rotationally Sorted Array
[Problem 72] Intersection of two arrays
[Problem 73] Sum of Two Numbers II
[Problem 74] 2D Matrix Search II
[Question 75] Immigration Inspection

Chapter 19 Bit Manipulation
Boolean operators
bitwise operators
Beat Manipulation Quiz
__Digit Limited Bit Operations
2's complement
__2's complement number representation
__bitwise operator NOT
[Problem 76] Single Number
[Problem 77] Hamming distance
[Problem 78] Sum of two integers
[Problem 79] UTF-8 Verification
[Problem 80] Number of 1 bit

Chapter 20 Sliding Window
[Problem 81] Maximum sliding window
[Problem 82] Minimum window containing a substring
[Problem 83] Replace the longest repeating character

Chapter 21: Greedy Algorithms
Backpack problem
Coin Changing Problem
largest sum
[Problem 84] The Best Time to Buy and Sell Stocks II
[Problem 85] Queue Reorganization by Key
[Problem 86] Task Scheduler
[Problem 87] Gas Station
[Problem 88] Cookie Granting

Chapter 22 Divide and Conquer
[Problem 89] Majority Element
[Problem 90] Various ways to insert parentheses

Chapter 23: Dynamic Programming
Optimal substructure
Overlapping subproblems
Dynamic programming methodology
__bottom-up
__Top-down
[Problem 91] Fibonacci numbers
0-1 backpack problem
[Problem 92] Maximum subarray
[Problem 93] Climbing stairs
[Problem 94] House thief
[Problem 95] Theft

Appendix: 2022 Kakao Recruitment Perfect Score Guide
[Problem 96] Receiving Report Results
[Problem 97] Finding the number of prime numbers in base k
[Problem 98] Calculating parking fees
[Question 99] Archery Competition
[Question 100] Sheep and Wolf
[Problem 101] Undestructed building
[Problem 102] Disappearing Foothold

Detailed image
Detailed Image 1Detailed Image 2

Publisher's Review
Structure of this book

[Part 1] 'Preparing for a Coding Interview': Chapter 1 'Coding Interview & Coding Test' provides an introduction to each, how to do well on the test, how to handle timeouts and exceptions in addition to solving problems, and various tips to solve problems well and improve your score, along with how to solve problems in Leetcode and Programmers.

[Part 2] 'Java & Kotlin': In Chapter 2, 'Java', we choose Java as the language for solving coding tests and examine the detailed features and operating principles of Java, the world's most famous language.
Chapter 3, 'Kotlin', examines the features and operating principles of Kotlin, which is almost certain to become the next major language after Java.
Chapter 4, 'Data Types', examines various data types provided by Java, including the Java Collection Framework, and examines in detail the principles and implementation methods of how to use Java data types in Kotlin.
Chapter 5, "Big O," examines the definition and characteristics of Big O, and also takes a closer look at the Big O of the Java Collections Framework.
Chapter 6, 'String Handling', examines topics related to strings.
From this chapter onwards, we will begin to solve various problems in earnest.

[Part 3] 'Linear Data Structures': From Chapter 7 'Arrays' to Chapter 8 'Linked Lists', Chapter 9 'Stacks, Queues', Chapter 10 'Decks, Priority Queues', and Chapter 11 'Hash Tables', we will look at various topics related to linear data structures and solve coding test problems.

[Part 4] 'Nonlinear Data Structures': From Chapter 12 'Graphs' to Chapter 13 'Shortest Path Problems', Chapter 14 'Trees', Chapter 15 'Heaps', and Chapter 16 'Tries', we will look at topics related to nonlinear data structures and solve coding test problems.

[Part 5] 'Algorithm': In Chapter 17, 'Sorting', we will look at various sorting algorithms, which are called the flower of algorithms, one by one.
Chapter 18, 'Binary Search', Chapter 19, 'Bit Manipulation', and Chapter 20, 'Sliding Window', examine related algorithms.
In particular, Chapter 21, 'Greedy Algorithm', Chapter 22, 'Divide and Conquer', and Chapter 23, 'Dynamic Programming' are all independent chapters but are related topics. Therefore, Chapter 23 summarizes the contents and examines the characteristics and differences of each in detail.

In the appendix, "2022 Kakao Recruitment Perfect Score Guide," we'll mobilize all the algorithmic capabilities we've explored so far to solve problems actually tested in the 2022 Kakao Developer Recruitment using the best methods.

Key features of this book

- For readers unfamiliar with Java, it explains how Java is executed, how it works, and advanced grammar.
- For readers unfamiliar with Kotlin, we introduce the differences between Java and Kotlin, Kotlin's unique advantages, and various tips.
- For readers who have difficulty understanding the algorithm, we have included various visual illustrations of the algorithm.
- For readers who are not familiar with problem solving, we will try to solve various types of problems in various ways.
- For readers with limited understanding of optimization, we introduce various optimization techniques and measure and compare their performance.

Target audience for this book

This book was written with the eye of 'new developers hoping to get a job at Korea's top IT company.'
- How can I become good at Java?
- How can I learn Kotlin well?
- How can I do well on coding tests?
- How can I solve algorithm problems well?
- How can I do well in an interview?

Readers of this book should have programming experience in one or more languages ​​and be prepared to learn basic data structures and algorithms.
You can read this book even if you don't know much about Java, but if possible, it will be much more helpful to understand the content if you read the book with a basic knowledge of Java.

Development Language and Tools of this Book

- Java 11 (required)
- Kotlin 1.3 (required)
- IntelliJ Community Edition (recommended)
- Leetcode (required)
- Programmers (required)

Download the GitHub source code

The code used to solve all the problems introduced in this book is provided through GitHub, and you can download the solution code for all problems from the following GitHub address.
https://github.com/onlybooks/java-algorithm-interview

Author's Note

Published in 2020, "Python Algorithm Interview" has become a beloved book for those preparing for coding tests and algorithm interviews.
While working at Kakao, I participated as a coding test writer during the first blind developer recruitment in Korea, which led to the writing of this great book.
I included in my first book my experience conducting coding tests at Kakao, conducting technical interviews with numerous applicants to recruit good talent, conducting hundreds of interviews to recruit even better software talent for Hyundai Motor Group after moving to Hyundai Motor Company, and even closely examining technical interviews at other companies to conduct even better interviews.
Above all, I am extremely happy that my efforts to create the best algorithm book have borne small fruit.


This new edition of "Java Algorithm Interview with Kotlin," published after three years, is a book that inherits the same mindset as the first book and strives to create the best algorithm book ever.
I solved 88 carefully selected Leetcode problems, 7 Programmers problems, and 7 Kakao problems.
I tried to present a much more efficient and cleaner code than last time, and wrote it at a level that it can be applied directly to practical applications without any problems.
Sometimes, you come across materials or books that, in their haste to solve problems, present code that is difficult to use in practice, but at least this book is not like that.
After passing the coding test and successfully getting a job, I focused on providing solution code that can be continuously used in the field.


All the code presented in this book is of a high enough level that it can be applied directly to practical applications.
The coding skills you acquire through this book will be of great help in your practical work.
Not only that, but like its predecessor, it explains difficult algorithms with friendly illustrations.
We put a lot of effort into intuitively explaining the difficult algorithm through over 200 illustrations, along with additional explanations and various historical facts.
In this way, 『Java Algorithm Interview with Kotlin』 is a book similar to 『Python Algorithm Interview』, but with a further upgrade.
Moreover, the most notable difference in this book is that it chose Java as the solution language.
Java is the most popular language for coding tests.
I hope this book will be helpful to more readers.
In addition to this, I have significantly improved upon the parts that I felt were lacking in the previous book.

This book is useful not only for developers working in the field, but also for college students still enrolled in school.
It will be especially helpful for job seekers who have just graduated and are looking for a job, as well as for master's and doctoral students who are leaving the lab.
This book will also be a good choice for interviewers looking for good questions.
As an interviewer, I've also participated in countless coding tests and competitions and read countless algorithm books to come up with better problems.
This book reflects all the experiences and difficulties I have experienced so far.

All problems in this book have solutions and explanations provided right away.
However, I recommend that you try to solve the problems yourself first without looking at the solution in the book.
The solutions presented in this book have been designed to be as optimal as possible and to be elegant code. So, try solving the problems first, and then compare your solutions with the ones in this book to see what differences there are.
It will be of great help in improving your code quality and solution methods, and learning optimization techniques.
GOODS SPECIFICS
- Date of issue: September 20, 2023
- Page count, weight, size: 904 pages | 1,586g | 180*235*43mm
- ISBN13: 9791189909550
- ISBN10: 1189909553

You may also like

카테고리