https://meetup.com/coding-interviews-prep-msk/
Our telegram chat: https://t.me/coding_interviews_prep_msk
Essentially this is an English speaking club, but with solving coding problems. Our meetings have no structure so far, we just use Leetcode, Hackerrank, and the "Cracking the Coding Interview" book. That simple. We'll get more organized a bit later.
We are a friendly community, but If you'd like we could simulate a real-world whiteboard interview, including:
- Judgemental stares at you for minor typos and missing semicolons
- Condescending remarks about your answers
- Asking you impossibly hard questions and pretending we didn't have to decipher available solutions for two days beforehand
Joking, don't be stressed too much. Just say hello, introduce yourself, and start geeking out.
The meetup itself is free, but we meet at the Kocherga anticafe in Moscow (https://kocherga-club.ru/), which means each of us pays for the time spent there: 2.5 rubles per minute, it's 150 rubles per hour. They have free coffee and cookies though, and a wonderful nerdy atmosphere, you'll love it I promise. And they have VR btw.
- Sign up to https://www.hackerrank.com/ and https://www.leetcode.com/ to be ready to solve coding problems on these sites
- Actually solve a couple of entry level problems to get comfortable with the interface
- Install a dictionary on your phone and don't hesitate to use it
You can also focus on practicing in your target language first. For example:
- https://www.hackerrank.com/domains/python
- https://www.hackerrank.com/domains/cpp
- https://www.hackerrank.com/domains/tutorials/10-days-of-javascript
TODO: a list of good online courses
TODO: a list of algorithms theory and data structures topics, so we can rotate them every arbitrary period of time, e.g., a month or two: https://www.geeksforgeeks.org/top-10-algorithms-in-interview-questions/
TODO: code of conduct
Our main resource:
- https://www.leetcode.com/
- https://www.hackerrank.com/
- https://www.geeksforgeeks.org/
- https://www.codechef.com/
- https://www.hackerearth.com/
- https://www.codewars.com/
- https://www.quora.com/What-are-some-good-coding-competition-practice-sites
Btw, we have a paper copy of the "Cracking the Coding Interview" book at Kocherga, here are the repos with solutions:
- https://github.com/careercup/CtCI-6th-Edition-Python
- https://github.com/careercup/CtCI-6th-Edition-cpp
Misc:
- https://github.com/SeanPrashad/lc -- A list of 160+ leetcode questions sorted by their common patterns
Problems catalogued by company:
Free online mock interviews:
- https://interviewing.io/, recordings of mock interviews: https://www.youtube.com/channel/UCNc-Wa_ZNBAGzFkYbAHw9eg
- https://www.pramp.com/
Functional programming problems:
- https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems
- http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html
Data science problems and questions:
- https://rpubs.com/JDAHAN/172473
- https://contest.yandex.ru/contest/8776/enter/
- https://medium.com/acing-ai/acing-ai-interviews/home
- https://www.analyticsvidhya.com/blog/2017/09/30-questions-test-tree-based-models/
Paid code reviews (?):
Phone interview questions:
System design:
- https://leetcode.com/discuss/interview-question/system-design
- (paid) https://www.educative.io/courses/grokking-the-system-design-interview — TODO: how good is it?
- https://github.com/checkcheckzz/system-design-interview
An interesting question that used to be popular a decade ago:
- What happens when you type google.com into your browser's address box and press enter? — https://github.com/alex/what-happens-when
Soft skills questions:
- https://hundred5.com/blog/100-soft-skills-questions-to-help-you-hire-top-talent
- https://www.goskills.com/Soft-Skills/Articles/Soft-skills-interview-questions-answers
Resume writing:
Another coding interviews group: https://github.com/noisebridge/nb_whiteboarding
And if you're tired of leetcode, here's a list of companies for you:
- http://they.whiteboarded.me/companies-that-dont-whiteboard.html
- https://github.com/poteto/hiring-without-whiteboards
A presentation on code retreats, in Russian: https://www.youtube.com/watch?v=9SWTNsKj0ms
- probabilistic, /ˌprɒbəbɪˈlɪstɪk/
- deterministic, /ˌdɪtəːmɪˈnɪstɪk/
- How Timsort works
- The modern dictionaries talk by Raymond Hettinger, https://www.youtube.com/watch?v=p33CVV29OG8, about the dict implementation in python 3.7, https://stackoverflow.com/questions/327311/how-are-pythons-built-in-dictionaries-implemented/44509302#44509302
- Persistent datastructures
- Gradient boosting, back propagation, etc
https://leetcode.com/problems/isomorphic-strings/
We were designing a mobile game similar to scramble, but with relaxed rules, where words could be written in any snakey shape without self-intersections. Finding the words on the grid and planning what letters to put is challenging.
https://leetcode.com/problems/implement-trie-prefix-tree/
We discussed how persistent datastructures work.
https://leetcode.com/problems/snapshot-array/
First meeting in new year, we lazily discussed broken processes at work.
How to implement a generator that prints all polynomials? Alex came up with this problem.
https://leetcode.com/problems/search-in-rotated-sorted-array/
https://leetcode.com/problems/symmetric-tree/
https://leetcode.com/problems/remove-duplicate-letters/
We discussed SVD and how it's not used in recommender systems. There are SVD-inspired algorithms like Funk-SVD.
We were solving problems from a number of real interviews at yandex.
https://leetcode.com/problems/house-robber/
https://leetcode.com/problems/jump-game/
https://leetcode.com/problems/non-decreasing-array/
https://leetcode.com/problems/longest-substring-without-repeating-characters/
https://leetcode.com/problems/maximum-subarray/
https://leetcode.com/problems/binary-tree-maximum-path-sum/
https://leetcode.com/problems/reveal-cards-in-increasing-order/
https://www.geeksforgeeks.org/c-program-for-tower-of-hanoi/
https://leetcode.com/problems/flood-fill/
https://leetcode.com/problems/delete-nodes-and-return-forest/
https://leetcode.com/problems/count-of-smaller-numbers-after-self/
https://leetcode.com/problems/happy-number/
https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/
We found another water trapping problem: https://leetcode.com/problems/container-with-most-water/
CTCI 17.24: max submatrix: given an NxN matrix of positive and negative integers, write code to find the submatrix with the largest possible sum.
We gave old problems to newcomers and just hung out discussing random topics including gradient descent, react, soft skills, annoyance of the SettingWithCopyWarning and it's false negatives.
We had many newcomers, so we had a lot of conversations and mostly solved old problems. My unsolicited advice to students is to not work during first two years of education.
We had a short an unexciting conversation about running processes as root in docker containers.
We started with trapping-rain-water and shuffle-an-array once again with new participants. Then solved a number of easy problems including:
https://leetcode.com/problems/valid-anagram/
https://leetcode.com/problems/sum-of-two-integers/
https://leetcode.com/problems/pascals-triangle/
We discussed how decision trees, random forests, feature importance work. And solved some problems from past meetings.
Discussed streams in java 8, decision trees for regression, and other random topics.
CTCI 16.23:
Rand7 from Rand5: Implement a method rand7() given rand5(). That is, given a method that generates a random number between 0 and 4 (inclusive), write a method that generates a random number between 0 and 6 (inclusive).
Tried to decipher this problem for analytics position:
Calculate subscription to refund conversion rate with a 1 day conversion window applied. Group by subscription date and apply 7 days rolling average.
https://leetcode.com/problems/word-ladder/
We decided to start with an easy problem we had last time, namely is-subsequence, and Kate confused it with the is-substring and implemented the Knuth–Morris–Pratt algorithm right away.
Meanwhile we had a discussion about a product analytics job interview. And unrelated topics.
https://leetcode.com/problems/shuffle-an-array/
Homework: https://leetcode.com/problems/word-ladder/
We can't have enough of the trapping-rain-water problem. We discussed both quadratic and linear time solutions after introducing it to newcomers.
https://leetcode.com/problems/surface-area-of-3d-shapes/
https://leetcode.com/problems/is-subsequence/
We briefly discussed normal forms. And tried to start a conversation about the REST architecture at the very end, but it's a huge topic, and everyone has different perspectives.
https://leetcode.com/problems/subarray-sum-equals-k/
Talked about a friend of a friend who had enough discipline to get thoroughly prepared for the google interview process and now works at the headquoters in Switzerland.
https://www.geeksforgeeks.org/maximum-difference-between-two-elements/
A discussion of the Big O notation. And a small group of people showed off their knowledge of haskell and monads to each other.
Turns out the trapping-rain-water problem is not as easy as it seems. Most of us managed to write a bad non-linear solution, but there's a good one: solutions/trapping-rain-water.clj.
A group of people discussed the following big question: how does pagination work? How to implement it with and without sql? Why offset+limit is slow and what to use instead? Spoiler: keyset pagination.
https://leetcode.com/problems/two-sum/
https://leetcode.com/problems/single-number/, https://leetcode.com/problems/single-number-ii/
https://leetcode.com/problems/trapping-rain-water/
We spent most of the time introducing ourselves and talking. Then a group of people started helping a newbie with python, and others opened the season with solving the following:
https://leetcode.com/problems/reverse-words-in-a-string/ — the in-place variant
https://leetcode.com/problems/next-permutation/
https://commons.wikimedia.org/wiki/File:Complete_binary.svg by Theresa Migler-VonDollen, licensed under CC-BY-SA-4.0