Подборка вопросов и ответов для подготовки к собеседованию на Java программиста
#java #interview #собеседование
Обновление подборки из статей, которые я уже написал и опубликовал в этом канале.
Общие вопросы:
1) Методы класса Object
2) Иерархия и типы исключений
3) GC
4) Сравнение строк в Java
Коллекции:
5) HashMap
6) ArrayList vs LinkedList
7) Иерархия коллекций в Java
8) Иерархия Map
9) Maximum ArraySize
Многопоточность:
10) Перевод между банковскими аккаунтами (dead-lock).
11) Ping-Pong (wait-notify).
12) Приостанавливаемый поток.
13) Подборка вопросов по многопоточности
14) Напечатать последовательность чисел при помощи нескольких потоков на Java.
15) ConcurrentModificationException
16) Thread Safe Singleton
17) Обедающие философы
18) Реализовать потокобезопасную блокирующую очередь на Java ограниченного размера
19) Реализовать потокобезопасный неблокирующий стек на Java
20) Daemon потоки
21) Является ли immutable class в Java Thread safe?
22) Implicit Lock Reentrancy
23) Java Memory Model и happens-before
24) ConcurrentHashMap vs Collections.synchronizedMap vs Hashtable vs HashMap
25) Реализовать потокобезопасную неблокирующую очередь на Java
26) Вопрос с собеседования на Java программиста: Как выполнить код в отдельном потоке в Java?
SQL:
27) Типы SQL joins
28) Плюсы и минусы индексов
Spring:
29) Что такое @Autowire в Spring? Как его использовать и как он работает?
#java #interview #собеседование
Обновление подборки из статей, которые я уже написал и опубликовал в этом канале.
Общие вопросы:
1) Методы класса Object
2) Иерархия и типы исключений
3) GC
4) Сравнение строк в Java
Коллекции:
5) HashMap
6) ArrayList vs LinkedList
7) Иерархия коллекций в Java
8) Иерархия Map
9) Maximum ArraySize
Многопоточность:
10) Перевод между банковскими аккаунтами (dead-lock).
11) Ping-Pong (wait-notify).
12) Приостанавливаемый поток.
13) Подборка вопросов по многопоточности
14) Напечатать последовательность чисел при помощи нескольких потоков на Java.
15) ConcurrentModificationException
16) Thread Safe Singleton
17) Обедающие философы
18) Реализовать потокобезопасную блокирующую очередь на Java ограниченного размера
19) Реализовать потокобезопасный неблокирующий стек на Java
20) Daemon потоки
21) Является ли immutable class в Java Thread safe?
22) Implicit Lock Reentrancy
23) Java Memory Model и happens-before
24) ConcurrentHashMap vs Collections.synchronizedMap vs Hashtable vs HashMap
25) Реализовать потокобезопасную неблокирующую очередь на Java
26) Вопрос с собеседования на Java программиста: Как выполнить код в отдельном потоке в Java?
SQL:
27) Типы SQL joins
28) Плюсы и минусы индексов
Spring:
29) Что такое @Autowire в Spring? Как его использовать и как он работает?
Telegraph
Какие методы класса Object вы знаете?
Все классы в Java наследуют класс Object. Официальная документация: Object. Его методы: 1) getClass() - получить runtime класс объекта. 2) toString() - возвращает текстовое представление объекта 3) hashCode() - Возвращает hash code объекта. Используется,…
🔥13👍6💘3
PM спрашивает разраба, когда будет сделана таска
https://youtu.be/KuIwMSJ8jkw
https://youtu.be/KuIwMSJ8jkw
😁22🔥2
Собеседовал сегодня еще одного кандидата из Google
Это было кодинг собеседование. Кандидат - Senior разработчик из Google с 7 годами опыта. Google это его первое место работы, начинал там с интерна. В бэкграунде есть участие в олимпиадах по программированию.
Решение к задачам кандидат придумал сходу и правильное. Правильно оценил Space and Time Complexity. Но вот кодинг был не самым лучшим. Его код содержал огромное число ненужных условий и куча лишних конструкций из-за работы с null. В итоге в его коде была куча ошибок. На verification он смог найти и починить почти все баги, но код остался чрезмерно перегружен ненужными вещами и местами напоминал код олимпиадника без опыта или junior разраба. Собеседование он прошел, только по оси кодинг у него будет оценка на грани. По остальным осям выше планки.
Вообще, для FB качество кода это не самая важная вещь в культуре компании, поэтому я бы скорее ожидал такой код от разработчика из FB, чем из Google. В Google же очень сильная культура инжиниринга. Но бывают и такие случаи. Я, кстати, такие случаи чаще вижу, когда у кандидатов нет опыта в других компаниях, которые всю карьеру работали в одной, пусть даже и в очень хорошей. Разработчики, которые работали в разных компаниях, проходили через адаптацию и у них возникали споры по стандартам написания кода, и они с большой вероятностью изучили глубже этот вопрос. Особенно, если у них был опыт работы в разных компаниях на Senior позициях. У людей, кто вырос в рамках одной компании и часто в рамках одной команды, особенно быстро, такого опыта онбординга и адаптации нет, они хорошо адаптированы к своей команде.
Это было кодинг собеседование. Кандидат - Senior разработчик из Google с 7 годами опыта. Google это его первое место работы, начинал там с интерна. В бэкграунде есть участие в олимпиадах по программированию.
Решение к задачам кандидат придумал сходу и правильное. Правильно оценил Space and Time Complexity. Но вот кодинг был не самым лучшим. Его код содержал огромное число ненужных условий и куча лишних конструкций из-за работы с null. В итоге в его коде была куча ошибок. На verification он смог найти и починить почти все баги, но код остался чрезмерно перегружен ненужными вещами и местами напоминал код олимпиадника без опыта или junior разраба. Собеседование он прошел, только по оси кодинг у него будет оценка на грани. По остальным осям выше планки.
Вообще, для FB качество кода это не самая важная вещь в культуре компании, поэтому я бы скорее ожидал такой код от разработчика из FB, чем из Google. В Google же очень сильная культура инжиниринга. Но бывают и такие случаи. Я, кстати, такие случаи чаще вижу, когда у кандидатов нет опыта в других компаниях, которые всю карьеру работали в одной, пусть даже и в очень хорошей. Разработчики, которые работали в разных компаниях, проходили через адаптацию и у них возникали споры по стандартам написания кода, и они с большой вероятностью изучили глубже этот вопрос. Особенно, если у них был опыт работы в разных компаниях на Senior позициях. У людей, кто вырос в рамках одной компании и часто в рамках одной команды, особенно быстро, такого опыта онбординга и адаптации нет, они хорошо адаптированы к своей команде.
👍22❤1
Easy задача с собеседования в Facebook: Contains Duplicate ||
Задача.
Дан массив целых чисел nums и число k. Нужно вернуть true, если в массиве есть два уникальных индекса i и j, такие что nums[i] == nums[j] и abs(i-j)<=k.
Ссылка на leetcode: https://leetcode.com/problems/contains-duplicate-ii/
Примеры:
Input: nums = [1,2,3,1], k = 3
Output: true
nums[0] == nums[3] abs(3-0) <= k
Input: nums = [1,2,3,1,2,3], k = 2
Output: false
Одинаковые элементы есть, но расстояние между ними больше 2.
Решение. Решение описал тут: Easy задача с собеседования в Facebook: Contains Duplicate ||
Задача.
Дан массив целых чисел nums и число k. Нужно вернуть true, если в массиве есть два уникальных индекса i и j, такие что nums[i] == nums[j] и abs(i-j)<=k.
Ссылка на leetcode: https://leetcode.com/problems/contains-duplicate-ii/
Примеры:
Input: nums = [1,2,3,1], k = 3
Output: true
nums[0] == nums[3] abs(3-0) <= k
Input: nums = [1,2,3,1,2,3], k = 2
Output: false
Одинаковые элементы есть, но расстояние между ними больше 2.
Решение. Решение описал тут: Easy задача с собеседования в Facebook: Contains Duplicate ||
LeetCode
Contains Duplicate II - LeetCode
Can you solve this real interview question? Contains Duplicate II - Given an integer array nums and an integer k, return true if there are two distinct indices i and j in the array such that nums[i] == nums[j] and abs(i - j) <= k.
Example 1:
Input:…
Example 1:
Input:…
👍11
Какие бы советы я дал Junior программистам, чтобы быстрее стать Middle разработчиками?
Смотрите также: Чем отличается Junior от Middle программиста?, Часть 2
1) Не бойтесь просить помощи. Если вы застряли в решении своей задачи и не можете сами разблокироваться длительное время - не бойтесь попросить помощи. Задавайте вопросы, говорите на чем вы застряли. Это поможет вам не продалбывать постоянно сроки, быть постоянно заблокированным. Скрывать, что вы заблокированы и продалбывать сроки хуже, чем вовремя попросить помощи и продвинуться в решении задачи.
2) Выясните, что именно сделал человек, у которого вы попросили помощи, чтобы вас разблокировать. Это поможет вам в такой же ситуации разблокироваться самостоятельно, без посторонней помощи. Это и будет вашим ростом в вашей самостоятельности.
3) Попробуйте вначале сами разблокироваться, выделите на это какое-то ограниченное время. Не просите помощи сразу, даже не попытавшись решить сами проблему или разблокироваться. Потратьте несколько часов, максимум дней, на разблокировку самостоятельно, если не получилось - ищите помощи.
4) Установите хорошие взаимоотношения с людьми, кто вас может разблокировать, людьми, к кому они обращаются и вашим менеджером и ментором. Часто люди, которые вам помогают разблокироваться, делают это коммуникацией с другими людьми. Запомните, кто эти другие люди и установите с ними хорошие взаимоотношения, чтобы в следующий раз вы могли обратиться к ним самостоятельно. Также ваш промоушен и карьерный рост сильно зависит от вашего менеджера. Поэтому постарайтесь установить с ним хорошие рабочие отношения.
5) Научитесь быстро навигироваться в коде и быстро в него вникать. Один из способов разблокировки - найти и разобраться с кодом. Научитесь как это делать быстро в вашей IDE, спросите своих старших коллег. Читайте много кода и научитесь быстро вникать в логику его работы.
6) Научитесь быстро гуглить. Научитесь эффективно строить запросы к гуглу, stackoverflow, чтобы быстро найти ответы на нужные вам вопросы.
7) Научитесь быстро находить внутреннюю документацию и разбираться в ней. Аналогично предыдущему пункту. Только гуглить уже внутри своей компании.
8) Засетапьте удобный дебаг. Иногда удобно проверить, что-то на практике. Как работает тот или иной код. Воспроизвести ту или иную багу. Поэтому позаботьтесь, чтобы вы могли легко смоделировать тот или иной код у себя в базе кода и запустить его в режиме дебага или просто выводить в консоль или лог, значения переменных. Это поможем вам быстрее понимать причину багов, проверять как работает та или иная конструкция на практике, без гугления или спрашивания и т.д. Это может быть какой-то ваш специальный unit-test, скрипт, просто запускаемый main-класс, который вы будете использовать как песочницу для экспериментов.
Смотрите также: Чем отличается Junior от Middle программиста?, Часть 2
1) Не бойтесь просить помощи. Если вы застряли в решении своей задачи и не можете сами разблокироваться длительное время - не бойтесь попросить помощи. Задавайте вопросы, говорите на чем вы застряли. Это поможет вам не продалбывать постоянно сроки, быть постоянно заблокированным. Скрывать, что вы заблокированы и продалбывать сроки хуже, чем вовремя попросить помощи и продвинуться в решении задачи.
2) Выясните, что именно сделал человек, у которого вы попросили помощи, чтобы вас разблокировать. Это поможет вам в такой же ситуации разблокироваться самостоятельно, без посторонней помощи. Это и будет вашим ростом в вашей самостоятельности.
3) Попробуйте вначале сами разблокироваться, выделите на это какое-то ограниченное время. Не просите помощи сразу, даже не попытавшись решить сами проблему или разблокироваться. Потратьте несколько часов, максимум дней, на разблокировку самостоятельно, если не получилось - ищите помощи.
4) Установите хорошие взаимоотношения с людьми, кто вас может разблокировать, людьми, к кому они обращаются и вашим менеджером и ментором. Часто люди, которые вам помогают разблокироваться, делают это коммуникацией с другими людьми. Запомните, кто эти другие люди и установите с ними хорошие взаимоотношения, чтобы в следующий раз вы могли обратиться к ним самостоятельно. Также ваш промоушен и карьерный рост сильно зависит от вашего менеджера. Поэтому постарайтесь установить с ним хорошие рабочие отношения.
5) Научитесь быстро навигироваться в коде и быстро в него вникать. Один из способов разблокировки - найти и разобраться с кодом. Научитесь как это делать быстро в вашей IDE, спросите своих старших коллег. Читайте много кода и научитесь быстро вникать в логику его работы.
6) Научитесь быстро гуглить. Научитесь эффективно строить запросы к гуглу, stackoverflow, чтобы быстро найти ответы на нужные вам вопросы.
7) Научитесь быстро находить внутреннюю документацию и разбираться в ней. Аналогично предыдущему пункту. Только гуглить уже внутри своей компании.
8) Засетапьте удобный дебаг. Иногда удобно проверить, что-то на практике. Как работает тот или иной код. Воспроизвести ту или иную багу. Поэтому позаботьтесь, чтобы вы могли легко смоделировать тот или иной код у себя в базе кода и запустить его в режиме дебага или просто выводить в консоль или лог, значения переменных. Это поможем вам быстрее понимать причину багов, проверять как работает та или иная конструкция на практике, без гугления или спрашивания и т.д. Это может быть какой-то ваш специальный unit-test, скрипт, просто запускаемый main-класс, который вы будете использовать как песочницу для экспериментов.
Telegram
FAANG Master
Чем отличается Junior от Middle программиста?
Оба уровня являются начальными для программиста и в сумме на этих уровнях програмист находится от 2 до 10 лет. Обычно, рано или поздно он промоутится до Senior уровня. На котором он уже может находится очень…
Оба уровня являются начальными для программиста и в сумме на этих уровнях програмист находится от 2 до 10 лет. Обычно, рано или поздно он промоутится до Senior уровня. На котором он уже может находится очень…
👍15🔥6
Mock Coding Interview
Ранее меня спрашивали, не провожу ли я мок собеседования. Вообще нет, но могу провести для теста несколько штук. Забукать можно тут: https://calendly.com/faangmaster52/mock-coding-interview
При желании, могу сделать запись и опубликовать на канале.
Все бесплатно.
Ранее меня спрашивали, не провожу ли я мок собеседования. Вообще нет, но могу провести для теста несколько штук. Забукать можно тут: https://calendly.com/faangmaster52/mock-coding-interview
При желании, могу сделать запись и опубликовать на канале.
Все бесплатно.
👍29🔥17
Memcached vs Redis
Начал писать короткую статью про сравнение Memcached и Redis в контексте system design собеседования. Написал часть про Memcached и его использование в Facebook. Дополню статью описание Redis в сравнении с Memcached.
Memcached vs Redis
Внутри есть ссылка на Tech Talk от Зака(Zuck/Марка Цукерберга). Сейчас он редко делает технических презентации: https://youtu.be/UH7wkvcf0ys
Начал писать короткую статью про сравнение Memcached и Redis в контексте system design собеседования. Написал часть про Memcached и его использование в Facebook. Дополню статью описание Redis в сравнении с Memcached.
Memcached vs Redis
Внутри есть ссылка на Tech Talk от Зака(Zuck/Марка Цукерберга). Сейчас он редко делает технических презентации: https://youtu.be/UH7wkvcf0ys
YouTube
Facebook and memcached - Tech Talk
In this video from 2008, Mark Zuckerberg, CEO at Facebook, talks about how the company uses memcached for caching and storage performance.
👍17❤2💘2🎉1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ходил на обед сегодня в офис Google. Меня бывший коллега пригласил. Офис похож на наш, но приколюх побольше. Хотя столовая меньше.
👍24💘2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Купил себе стул домой за £1372 (около 155 тысяч рублей) и стол за ~£1000. В офисе у нас такие, очень удобные. Буду собирать стол.
👍21🥴6🔥3🤔1🙈1💘1
Задача с собеседования в Microsoft: Наибольшая подстрока без повторяющихся символов.
Задача. Дана строка, нужно найти наибольшую подстроку без повторяющихся символов.
Пример 1:
Input: s = "abcabcbb"
Output: 3
Наибольшая подстрока без повторяющихся символов: "abc"
Пример 2:
Input: s = "bbbbb"
Output: 1
Input: s = "pwwkew"
Output: 3
Наибольшая подстрока без повторяющихся символов: "wke"
Ссылка на leetcode: https://leetcode.com/problems/longest-substring-without-repeating-characters
Решение описал тут: Задача с собеседования в Microsoft: Наибольшая подстрока без повторяющихся символов.
Задача. Дана строка, нужно найти наибольшую подстроку без повторяющихся символов.
Пример 1:
Input: s = "abcabcbb"
Output: 3
Наибольшая подстрока без повторяющихся символов: "abc"
Пример 2:
Input: s = "bbbbb"
Output: 1
Input: s = "pwwkew"
Output: 3
Наибольшая подстрока без повторяющихся символов: "wke"
Ссылка на leetcode: https://leetcode.com/problems/longest-substring-without-repeating-characters
Решение описал тут: Задача с собеседования в Microsoft: Наибольшая подстрока без повторяющихся символов.
LeetCode
Longest Substring Without Repeating Characters - LeetCode
Can you solve this real interview question? Longest Substring Without Repeating Characters - Given a string s, find the length of the longest substring without duplicate characters.
Example 1:
Input: s = "abcabcbb"
Output: 3
Explanation: The answer…
Example 1:
Input: s = "abcabcbb"
Output: 3
Explanation: The answer…
👍8🔥4