Anonymous class
• Анонимный класс не имеет имени
• Не является членом внешнего класса
• Объявляется и сразу создает экземпляр
• Можно поместить в любом месте программы, где разрешается применять выражения
• Обычно реализует только методы и своего интерфейса или суперкласса
• Должны быть короткими, так как объявляются среди других выражений
• Анонимный класс не имеет имени
• Не является членом внешнего класса
• Объявляется и сразу создает экземпляр
• Можно поместить в любом месте программы, где разрешается применять выражения
• Обычно реализует только методы и своего интерфейса или суперкласса
• Должны быть короткими, так как объявляются среди других выражений
Local class
Локальный класс определяется в блоке кода. Часто объявление происходит в методе другого класса. Но его можно объявить в статических или нестатических блоках инициализации.
• Локальный класс виден в пределах блока, где он объявлен
• Не может быть объявлен как private, public, protected или static
• Не может содержать статические объявления, только константы
• Имеет окружающий их экземпляр только в нестатическом контексте
• Видны все поля и методы внешнего класса обычные и статические (в зависимости от контекста)
Локальный класс определяется в блоке кода. Часто объявление происходит в методе другого класса. Но его можно объявить в статических или нестатических блоках инициализации.
• Локальный класс виден в пределах блока, где он объявлен
• Не может быть объявлен как private, public, protected или static
• Не может содержать статические объявления, только константы
• Имеет окружающий их экземпляр только в нестатическом контексте
• Видны все поля и методы внешнего класса обычные и статические (в зависимости от контекста)
Собеседование Android-разработчиков
Составил вместе с моим другом, разработчиком мобильных приложений и админом канала Android Live, пост, который поможет подготовиться к собеседованиям на Андроид-разработчика.
Теоретические вопросы – первое, на что стоит обратить внимание при подготовке к собеседованиям. На работе мы большую часть времени пишем код. А чтобы писать качественный код, разработчик должен как минимум хорошо знать свой язык программирования и разбираться в алгоритмах. Поэтому часто на собеседованиях сначала спрашивают теорию, потом дают решать алгоритмические задачи и в конце вопросы по архитектуре приложений.
Вопросы по Андроид зависят от позиции, на которую собеседуешься. Если претендуешь на junior, то важно хорошо ответить на вопросы по основным компонентам: Service, Activity, Fragment. На middle и seniour – готовься к вопросам, которые связаны с архитектурой и применением специфических для проекта библиотек.
77 вопросов и ответов с собеседований
https://android.jlelse.eu/android-interview-questions-cheat-sheet-96ea01c88def
Репозиторий с ресурсами по алгоритмам: линки, книги, курсы, реализации на многих языках программирования
https://github.com/tayllan/awesome-algorithms
Сайт для прокачки себя в алгоритмах
https://www.hackerrank.com
Канал моего друга Саши об Андроид-разработке
https://yangx.top/android_live
Составил вместе с моим другом, разработчиком мобильных приложений и админом канала Android Live, пост, который поможет подготовиться к собеседованиям на Андроид-разработчика.
Теоретические вопросы – первое, на что стоит обратить внимание при подготовке к собеседованиям. На работе мы большую часть времени пишем код. А чтобы писать качественный код, разработчик должен как минимум хорошо знать свой язык программирования и разбираться в алгоритмах. Поэтому часто на собеседованиях сначала спрашивают теорию, потом дают решать алгоритмические задачи и в конце вопросы по архитектуре приложений.
Вопросы по Андроид зависят от позиции, на которую собеседуешься. Если претендуешь на junior, то важно хорошо ответить на вопросы по основным компонентам: Service, Activity, Fragment. На middle и seniour – готовься к вопросам, которые связаны с архитектурой и применением специфических для проекта библиотек.
77 вопросов и ответов с собеседований
https://android.jlelse.eu/android-interview-questions-cheat-sheet-96ea01c88def
Репозиторий с ресурсами по алгоритмам: линки, книги, курсы, реализации на многих языках программирования
https://github.com/tayllan/awesome-algorithms
Сайт для прокачки себя в алгоритмах
https://www.hackerrank.com
Канал моего друга Саши об Андроид-разработке
https://yangx.top/android_live
Вопросы с собеседований по Spring
— что такое Spring
— как понимаете Dependency Injection
— как понимаете Inversion of Control
— примеры DI и IoC
— что такое бин Spring’е
— какие есть scope у бина
— можно ли задать свой scope
— жизненный цикл бина
— что такое жизненный цикл бина
— можно ли добавить бин, если приложение уже стартануло
— как получить объекты ServletContext и ServletConfig
— виды внедрения зависимостей
— для чего нужна аннотация
— разница между аннотациями
— как работает транзакция в Spring
— что знаете о DispatcherServlet и ContextLoaderListener
— рассказать как устроен Spring MVC
— для чего нужны аннотации
— что лежит в основе Spring Security
— преимущества и недостатки Spring Data
— что такое Spring
— как понимаете Dependency Injection
— как понимаете Inversion of Control
— примеры DI и IoC
— что такое бин Spring’е
— какие есть scope у бина
— можно ли задать свой scope
— жизненный цикл бина
— что такое жизненный цикл бина
— можно ли добавить бин, если приложение уже стартануло
— как получить объекты ServletContext и ServletConfig
— виды внедрения зависимостей
— для чего нужна аннотация
@Qualifier
— разница между аннотациями
@Component
, @Repository
, @Service
— как работает транзакция в Spring
— что знаете о DispatcherServlet и ContextLoaderListener
— рассказать как устроен Spring MVC
— для чего нужны аннотации
@RequestBody
, @PathVariable
, @RequestParam
— что лежит в основе Spring Security
— преимущества и недостатки Spring Data
Что посмотреть на выходных
Крутое мок интервью от Стаса Лозенко
https://youtu.be/E6_IVAbBIug
Красно-черные деревья
https://youtu.be/-gKLTH0KTF4
Мотивация для программирования
https://youtu.be/J1usv2Hn-pU
#чтопосмотреть
Крутое мок интервью от Стаса Лозенко
https://youtu.be/E6_IVAbBIug
Красно-черные деревья
https://youtu.be/-gKLTH0KTF4
Мотивация для программирования
https://youtu.be/J1usv2Hn-pU
#чтопосмотреть
Как воспитать привычку
У Аркадия Морейниса прочитал о воспитании привычек и решил написать пост о своих, которые два года назад помогли мне начать учить Джаву.
Воспитание привычки – когда вы решили делать что-то каждый рабочий день определенное количество раз.
1. Перестаньте думать нужно ли это делать и есть ли на это время.
Решите один раз и двигайтесь в этом направлении. Когда я решил стать разрабом, начал каждый день кодить, смотреть лекции и читать книги.
2. Привяжите каждый подход ко времени или событию.
Сразу после завтрака я повторял вчерашний материал, после решал задачи, а за час до сна читал книги.
3. Подход – это выполнение определенных действий нужное количество раз.
Мои подходы: решить 10 задач, сделать конспекты по 2-м лекциям, прочитать 30 страниц, разобрать 10 вопросов с собеседований. Главное установить количество – не «почитать книгу», а именно «прочитать 30 страниц».
4. Не переборщите с количеством действий внутри подхода.
Каждый подход не должен вызывать дикого отвращения. Когда я понимал, что задача занимает овер дохрена времени, переключался на следующую. Нерешенная задача становилась первой в списке на следущий подход. Если все задачи в списке были сложными, то снижал ежедневную планку.
5. Не пропускайте ни одного подхода.Никогда.
Для этого правильно выбирайте привязку по времени и количество действий в подходе. Я понимал, что если перестану решать задачи хотя бы один день, то есть вероятность надолго отбросить мечту стать программистом.
6. Придумайте вознаграждение.
Это сильно ускорит привыкание. Когда я учил Джаву, у меня не было вознаграждения. А вот писать посты каждый день меня подстёгивают просмотры, лайки и сообщения в личку.
7. Привычка воспитывается не быстро.
Некоторые говорят, что достаточно 21 дня, но это не всегда так. Не расстраивайтесь, если были пропуски, у меня тоже получилось не с первого подхода.
У Аркадия Морейниса прочитал о воспитании привычек и решил написать пост о своих, которые два года назад помогли мне начать учить Джаву.
Воспитание привычки – когда вы решили делать что-то каждый рабочий день определенное количество раз.
1. Перестаньте думать нужно ли это делать и есть ли на это время.
Решите один раз и двигайтесь в этом направлении. Когда я решил стать разрабом, начал каждый день кодить, смотреть лекции и читать книги.
2. Привяжите каждый подход ко времени или событию.
Сразу после завтрака я повторял вчерашний материал, после решал задачи, а за час до сна читал книги.
3. Подход – это выполнение определенных действий нужное количество раз.
Мои подходы: решить 10 задач, сделать конспекты по 2-м лекциям, прочитать 30 страниц, разобрать 10 вопросов с собеседований. Главное установить количество – не «почитать книгу», а именно «прочитать 30 страниц».
4. Не переборщите с количеством действий внутри подхода.
Каждый подход не должен вызывать дикого отвращения. Когда я понимал, что задача занимает овер дохрена времени, переключался на следующую. Нерешенная задача становилась первой в списке на следущий подход. Если все задачи в списке были сложными, то снижал ежедневную планку.
5. Не пропускайте ни одного подхода.Никогда.
Для этого правильно выбирайте привязку по времени и количество действий в подходе. Я понимал, что если перестану решать задачи хотя бы один день, то есть вероятность надолго отбросить мечту стать программистом.
6. Придумайте вознаграждение.
Это сильно ускорит привыкание. Когда я учил Джаву, у меня не было вознаграждения. А вот писать посты каждый день меня подстёгивают просмотры, лайки и сообщения в личку.
7. Привычка воспитывается не быстро.
Некоторые говорят, что достаточно 21 дня, но это не всегда так. Не расстраивайтесь, если были пропуски, у меня тоже получилось не с первого подхода.
Книги для Джава-разработчика
Я выкладывал книги, которые сам прочитал в начале пути, и которые мне советовали опытные разрабы. Подборка моих обзоров:
Head First Java
https://yangx.top/java_developer/10
Грокаем алгоритмы
https://yangx.top/java_developer/28
Complete Reference Java
https://yangx.top/java_developer/48
Clean code
https://yangx.top/java_developer/71
Concurrency in practice
https://yangx.top/java_developer/77
Effective Java
https://yangx.top/java_developer/127
Я выкладывал книги, которые сам прочитал в начале пути, и которые мне советовали опытные разрабы. Подборка моих обзоров:
Head First Java
https://yangx.top/java_developer/10
Грокаем алгоритмы
https://yangx.top/java_developer/28
Complete Reference Java
https://yangx.top/java_developer/48
Clean code
https://yangx.top/java_developer/71
Concurrency in practice
https://yangx.top/java_developer/77
Effective Java
https://yangx.top/java_developer/127
Плохо – хорошо
Плохо
Хорошо
Пример взял с одного из докладов JPoint 2018
Плохо
List<T> list = new ArrayList<>();
for (T item : set) list.add(item);
Хорошо
List<T> list = new ArrayList<>(set);
Пример взял с одного из докладов JPoint 2018
Плохо – хорошо
Плохо
Хорошо
Плохо
Iterator<T> itr = list.stream().iterator();
while (itr.hasNext())
consumer.consume(itr.next());
Хорошо
list.stream().forEach(consumer);
Плохо – хорошо
Плохо
Хорошо
Плохо
list.stream().
allMatch(set::contains);
Хорошо
set.containsAll(list);
Как выучить горячие клавиши
Знание горячих клавиш – главный навык программиста, который умеет быстро кодить. Есть крутой плагин для IntelliJ Idea, который просто заставит их заучить. Называется Key Promoter. Первое время он бесит своими всплывающими окнами, но потом принимаешь его правила игры и быстро заучиваешь клавиши.
Еще про настройку Idea
https://yangx.top/java_developer/9
Знание горячих клавиш – главный навык программиста, который умеет быстро кодить. Есть крутой плагин для IntelliJ Idea, который просто заставит их заучить. Называется Key Promoter. Первое время он бесит своими всплывающими окнами, но потом принимаешь его правила игры и быстро заучиваешь клавиши.
Еще про настройку Idea
https://yangx.top/java_developer/9
Что посмотреть на выходных
В постах «Что посмотреть на выходных» я делаю подборки видео для прокачки: доклады, лекции, курсы. И в конце поста – видео для расслабона: интервью разработчиков, мотивашка, какой-нибудь обзор. Все подборки:
Что посмотреть на выходных — 1
https://yangx.top/java_developer/126
Что посмотреть на выходных — 2
https://yangx.top/java_developer/152
Что посмотреть на выходных — 3
https://yangx.top/java_developer/158
Что посмотреть на выходных — 4
https://yangx.top/java_developer/176
Что посмотреть на выходных — 5
https://yangx.top/java_developer/184
Что посмотреть на выходных — 6
https://yangx.top/java_developer/207
#чтопосмотреть
В постах «Что посмотреть на выходных» я делаю подборки видео для прокачки: доклады, лекции, курсы. И в конце поста – видео для расслабона: интервью разработчиков, мотивашка, какой-нибудь обзор. Все подборки:
Что посмотреть на выходных — 1
https://yangx.top/java_developer/126
Что посмотреть на выходных — 2
https://yangx.top/java_developer/152
Что посмотреть на выходных — 3
https://yangx.top/java_developer/158
Что посмотреть на выходных — 4
https://yangx.top/java_developer/176
Что посмотреть на выходных — 5
https://yangx.top/java_developer/184
Что посмотреть на выходных — 6
https://yangx.top/java_developer/207
#чтопосмотреть
Регистрация в приложении в 2018 году, чтобы что-то купить – полнейшая дичь
Вопросы с собеседований
Подборка постов с вопросами с собеседований. Каждый вопрос реальный – его задавали мне в какой-то компании или моим коллегам.
Java Junior
https://yangx.top/java_developer/50
https://yangx.top/java_developer/65
SQL
https://yangx.top/java_developer/76
Java Middle
https://yangx.top/java_developer/157
https://yangx.top/java_developer/159
Spring
https://yangx.top/java_developer/206
Подборка постов с вопросами с собеседований. Каждый вопрос реальный – его задавали мне в какой-то компании или моим коллегам.
Java Junior
https://yangx.top/java_developer/50
https://yangx.top/java_developer/65
SQL
https://yangx.top/java_developer/76
Java Middle
https://yangx.top/java_developer/157
https://yangx.top/java_developer/159
Spring
https://yangx.top/java_developer/206
Как работают в Google
Если вас не напугал мой пост о банках и вы мечтаете о работе в крупной компании, то почитайте обязательно статьи у The Village о русских офисах Гугла, Икеи, Кока-Колы и прочих.
Как работают в Гугл
https://www.the-village.ru/village/business/office/167995-kak-rabotayut-v-ofise-google
Другие офисы крупняков
https://www.the-village.ru/village/business/office
Если вас не напугал мой пост о банках и вы мечтаете о работе в крупной компании, то почитайте обязательно статьи у The Village о русских офисах Гугла, Икеи, Кока-Колы и прочих.
Как работают в Гугл
https://www.the-village.ru/village/business/office/167995-kak-rabotayut-v-ofise-google
Другие офисы крупняков
https://www.the-village.ru/village/business/office