Опыт собеседования с Android в 2020 году: после получения 3 основных заводских предложений основная фабрика часто тестирует очки знаний и навыки собеседования, ожидая вас!

На получение предложений от трех крупных компаний (JD.com, Sina и Didi) ушло полтора месяца. Вот краткое изложение, надеемся помочь всем.

Вообще говоря, собеседование обычно основывается на вашем резюме . Как правило, вы сначала изучите свои основы, затем изучите полноту своей системы знаний, затем изучите свои пределы и, наконец, изучите некоторые мягкие навыки, такие как способность к обучению, способность к сотрудничеству и т. Д. коммуникабельность, способность анализировать и решать неизвестные проблемы, способность противостоять давлению и т. д.

Личный опыт

Предупрежден - значит вооружен, без учета потерь.

Подготовительный период

Перед собеседованием лучше систематически проанализировать базовые знания, а затем проанализировать свой собственный проектный опыт, чтобы выявить основные моменты. Персональная рекомендация для цикла проверки составляет от трех месяцев до шести месяцев . Это время не должно быть слишком долгим. После долгого времени легко расслабиться или поработать за закрытыми дверями. Лучше выйти на улицу и начать тестирование воды. через три месяца, чтобы проверить свой эффект обучения.

Составление плана проверки и контроль прогресса также очень важны.Вы можете обратиться к планам обучения других людей, чтобы учиться, а затем внести соответствующие изменения в соответствии с вашей реальной ситуацией.

Обзор навыков

Я всегда думаю, что короткого пути к обучению нет . Я верю в то, что «хорошая память не так хороша, как плохое письмо», а также верю в «сто раз прочитать книгу, чтобы увидеть, что правильно».

Обязательно потренируйтесь . Для программистов это не просто механическое запоминание. У нас есть более эффективные способы обучения, например написание демонстраций для проверки. Например, в процессе изучения исходного кода вы должны сами просмотреть исходный код и прочитать его несколько раз. Скажи это снова.

Я думаю, что учебные заметки очень важны не только для того, чтобы делать заметки, но и для написания опыта, текстовых заметок, рисования изображений, резюме и т. Д. Есть много способов, но вы должны отнестись к этому серьезно, не доверяйте своей собственной памяти тоже много, только повторяйте воспоминания, чтобы углубить ваше понимание. Просто работайте.

В процессе изучения точек знаний вы можете следовать трем осям: что, как и почему . Что это за вещь? Как это делается? Почему он это делает, каков принцип и есть ли лучший способ?

В процессе обзора вы начинаете извлекать уроки из небольших точек знаний. На определенном этапе обзора вы можете попытаться связать эти вещи вместе, от точки к поверхности.

Кроме того, в процессе обзора вы должны объединить его с проектами, которые вы сделали вовремя, чтобы вы могли получать отзывы о своих проектах. Вы будете знать, как говорить во время собеседования, а некоторые проекты будут говорить о точках знаний. Подключиться к другой точке знания, так что ваша система знаний установлена.

Подготовить резюме

Резюме - это ваша ступенька. Я не буду приводить конкретные шаблоны резюме. В Интернете есть много отличных шаблонов для справки. Я думаю, что самое важное - это то, что вы должны досконально разбираться в том, что есть в вашем резюме, копать глубже и спрашивать еще несколько причин, например, почему я выбрал эту программу, какие преимущества и недостатки у нее есть, и есть ли лучший путь.

Интервьюер, как правило, проверяет ваши всесторонние способности на основе вашего резюме, поэтому вы не должны лениться при написании резюме. Вы должны использовать позицию написания статьи, внимательно ее пересмотреть и попробовать еще раз, а также попросить нескольких больших парней помочь вам. пересматривать и вносить предложения.

Навыки ответа

Вообще говоря, собеседование - это процесс, в котором вы и интервьюер знакомитесь и общаетесь друг с другом. Интервьюеры с крупных заводов обычно добры. Если вы столкнулись с проблемой, о которой вы не знаете, вы можете спросить другого человека в время. Не бойтесь потерять лицо. Собеседование - это процесс обучения и общения друг с другом. Предложение - это не цель, а процесс.

Кроме того, иногда вы не знаете деталей определенных технологий или точек знаний, но знаете общие идеи дизайна, поэтому вы можете максимально полно ответить на свое понимание, и вы можете использовать горизонтальные аналогичные технологии для объяснения этого навыка.

Иногда, если определенная точка знаний не может быть запомнена какое-то время, вы можете сделать обходной путь. Как и в случае с рекурсивной формулой, вы можете выводить шаг за шагом в соответствии с точками знаний, в которых вы хорошо разбираетесь. Делайте смелые предположения, а затем осторожно проверьте процесс вывода. Объясните некоторые проблемы.

Следует отметить еще один момент: на то, что невозможно, вы можете попытаться ответить с точки зрения принципов, но постарайтесь не ошибиться. Неполные ответы и неправильные указания - это две концепции.

Общие сведения

1 、 Java

  • Говоря о равенстве и хэш-коде, почему их нужно переписывать вместе? Правила перезаписи метода хэш-кода.
  • Связанные с HashMap
  • Разделение области данных во время выполнения, какие потоки являются частными, а какие - общими. Структура данных кадра стека. Какие данные хранятся в области метода.
  • Кратко опишите процесс создания экземпляра Person person = new Person (). Лучше всего иметь процесс загрузки классов.
  • Тип GCRoot, например
  • Реализация LRU. Позвольте вам реализовать один, что бы вы сделали
  • Несколько состояний потока
  • Пул потоков
  • Как обеспечить выполнение трех потоков T1, T2 и T3 по порядку? То есть путь от асинхронного к синхронному.
  • В чем разница между ожиданием и сном в Java? (Подождите, снимите блокировку, сон не разблокирует)
  • Связанные с безопасностью потоков
  • замок. синхронизированный, изменчивый, Lock. Несколько состояний замка. Принцип CAS.
  • Поговорите о родительской делегации Java
  • Универсальный
  • отражение
  • аннотация
  • Когда анонимный внутренний класс внутри метода использует локальную переменную метода, зачем использовать окончательную модификацию?

2 、 Android

  • Режим запуска и обычное использование.
  • Жизненный цикл деятельности.
  • Оптимизация памяти для растровых изображений.
  • Изображения в формате xhdpi отображаются на мобильных телефонах с разрешением hdpi и xxhdpi соответственно. Каков размер дисплея и объем памяти?
  • Правила загрузки файла ресурсов. Например, если изображение хранится в файлах drawable-hdpi и drawable-xxhdpi, какое изображение будет загружено на мобильный телефон xhdpi? Что делать, если изображение под drawable-xxhdpi будет удалено?
  • Метод межпроцессного взаимодействия Android.
  • Расскажите о своем понимании контекста в Android? Откуда возникает Контекст в четырех основных компонентах?
  • Приложение запускает процесс.
  • Конкретный процесс startActivity.
  • Конкретный процесс Activity # setContentView.
  • Какова роль Surface? Когда он был инициализирован? Как данные, нарисованные View, отображаются на экране?
  • Механизм обработки
  • Реализация ThreadLocalMap.
  • Посмотреть процесс рисования
  • Как можно настроить просмотр? Меры предосторожности. Как вы понимаете настраиваемые атрибуты?
  • Распространение событий. Как разрешать скользящие конфликты и каким методом? Как определить направление скольжения?
  • Анимация
  • Процесс упаковки Apk. Какой файл в конечном итоге сгенерирует R-файл? Какова роль aapt?
  • LocalBroadcastReceiver, почему быстрее BroadCastReceiver, реализация LocalBroadcastReceiver.
  • Кеш RecyclerView. Какие преимущества у RecyclerView? Для какой функции вы его использовали?
  • Поговорим о принципе утечки Canary. Почему бы не использовать фантомные ссылки? Что хранится в очереди ссылок? Как выгружаются данные памяти?
  • Поговорим о реализации OkHttp. Порядок перехватчиков, в чем разница между сетевыми перехватчиками и обычными перехватчиками? Каков его пул потоков? Как это удается?
  • Как работает трехуровневый кеш Glide?
  • Принцип rxjava. Как реализовать переключение потоков rxjava? Разница между операторами map и flatmap; разница между операторами zip и merge.
  • Роль и детали реализации ArrayMap и SparseArray.
  • Разница между компонентизацией и модуляризацией.
  • mvp 、 mvvm。
  • Компоненты реактивного ранца.
  • Жизненный цикл задачи в gradle.
  • Принцип плагина.
  • Принцип горячего ремонта.

3. Оптимизация производительности Android

  • Начать оптимизацию скорости. А как насчет холодного, теплого и горячего старта?
  • Оптимизация памяти
  • Оптимизация Caton
  • Оптимизация сети
  • Оптимизация базы данных
  • Оптимизация утечки памяти
  • Оптимизация размера упаковки

4. Связанные с http

  • Опишите полный процесс сетевого запроса.
  • Разница между TCP и UDP, детали трехстороннего рукопожатия и четырех махов руками; почему для установления связи требуется три раза, а для отключения - четыре раза.
  • Разница между http и https. https процесс ссылки?
  • Как реализовать возобновляемую передачу после отключения. Как загружать большие изображения по частям. ключевой шаг
  • Как добиться сегментированной загрузки.
  • Как реализовать механизм повтора запроса.

5. Шаблоны проектирования

  • С какими шаблонами проектирования вы знакомы? Приведите пример. Почему стоит выбрать этот шаблон дизайна.
  • Разница между режимом стратегии и режимом моста

6 、 котлин

  • Поговорим о преимуществах и недостатках котлина. Разница между let и with
  • Функция расширения
  • Разница между lateinit котлина и ленивым
  • Какие бывают конструкторы
  • Coroutine

7 、 трепетание

  • флаттер я изолировать
  • Преимущества и недостатки флаттера
  • Какие существуют способы связи каналов флаттера?
  • Оптимизация размера пакета Flutter
  • Жизненный цикл State в трепетании, когда был вызван метод didUpdateWidget

8. Связанные с проектом

  • Для объяснения выберите наиболее знакомый вам проект.
  • Расскажите мне о своем стеке технологий
  • Проект или клип, которым вы больше всего гордитесь
  • В чем ты хорош
  • Что было самым большим преимуществом из вашего последнего опыта работы?
  • Ваш карьерный план

Маршрут просмотра интервью в Дачанге

Я не буду говорить о лишних словах. Затем я поделюсь маршрутом обзора для собеседования. Если вы также готовитесь к собеседованию, но не знаете, как его эффективно использовать, вы можете обратиться к моему маршруту обзора. Если у вас есть любые вопросы, пожалуйста, не стесняйтесь общаться друг с другом.

Вот инструкция, которую каждый должен изучать систематически:

1. Посмотрите видео для систематического обучения

Опыт Круда за последние несколько лет заставил меня осознать, что я действительно боец ​​в новичке.Также из-за Круда мои технологии относительно фрагментированы и недостаточно глубоки, чтобы быть систематическими, поэтому необходимо учиться снова. . Чего мне не хватает, так это системных знаний, плохой структурной основы и идей, поэтому обучение с помощью видео лучше и полнее. Что касается видеообучения, люди могут порекомендовать обучение на станции B. На станции B есть много обучающих видео. Единственный недостаток в том, что они бесплатные и быстро устаревают.

Кроме того, я сам собрал несколько наборов видео, и при необходимости могу поделиться ими с вами.

2. Систематически сортировать знания и пополнять резервы

В развитии клиентов так много знаний, а на собеседовании так много мелочей. Поэтому для собеседования нет других уловок, просто чтобы посмотреть, насколько хорошо вы подготовились к этим пунктам знаний. Итак, когда вы идете на собеседование, хорошо видеть, какой стадии вы достигли в своем обзоре.

Направление системного обучения:

  • Необходимые навыки для архитекторов: углубленные обобщения Java + аннотации на простом языке + параллельное программирование + передача и сериализация данных + принципы виртуальной машины Java + отражение и загрузка классов + динамический прокси + эффективный ввод-вывод

  • Расширенный пользовательский интерфейс Android и исходный код FrameWork: расширенное продвижение пользовательского интерфейса + анализ ядра платформы + ядро ​​компонента Android + сохранение данных

  • Полная настройка производительности на 360 °: идеи дизайна и оптимизация качества кода + оптимизация производительности программы + оптимизация эффективности разработки

  • Интерпретация идей дизайна фреймворка с открытым исходным кодом: дизайн горячего ремонта + интерпретация фреймворка плагина + дизайн фреймворка компонентов + фреймворк загрузки изображений + дизайн фреймворка доступа к сети + дизайн фреймворка адаптивного программирования RXJava + дизайн архитектуры IOC + компонент архитектуры Android Jetpack

  • Разработка модуля NDK: базовая система знаний NDK + обработка изображений + разработка аудио и видео

  • Мини-программа WeChat: введение в мини-программу + разработка пользовательского интерфейса + работа с API + док-станция WeChat

  • Гибридная разработка и Flutter: Html5 project combat + Flutter advanced

После того, как знания были отсортированы, необходимо проверить недостающие пункты, поэтому для этих пунктов знаний я подготовил много электронных книг и заметок, которые представляют собой идеальное резюме каждого пункта знания.

3. Прочтите исходный код, прочтите настоящие боевые заметки и изучите идеи Бога.

«Язык программирования - это способ выражения программиста, а архитектура - это восприятие мира программистом». Следовательно, если программисты хотят быстро понять и изучить архитектуру, чтение исходного кода имеет важное значение. Чтение исходного кода - это решение проблем + понимание вещей и, что более важно: увидеть идеи, лежащие в основе исходного кода; программисты говорят: прочтите тысячи строк исходного кода и попробуйте тысячи способов.

В основном включают исходный код WeChat MMKV, исходный код AsyncTask, исходный код Volley, исходный код модернизации, исходный код OkHttp и т. Д.

4. Накануне собеседования спринтерские вопросы.

За неделю до собеседования можно начинать спринт. Имейте в виду, что при чистке вопросов первостепенным приоритетом являются технологии, а алгоритм является базовым, например сортировка и т. Д., А интеллектуальные вопросы, если они не являются школьниками, обычно не задаются.

Что касается вопросов для собеседований, я лично подготовил набор систематических вопросов для собеседований, чтобы помочь вам учиться друг у друга:

5. Резюме + решение для социального найма + классический HR-анализ интервью

Приведенное выше представляет собой краткое изложение реальных вопросов, возникающих в ходе собеседований среднего и старшего звена Android. Я надеюсь, что это будет полезно для всех. В то же время многие люди часто сталкиваются с множеством вопросов на собеседовании о составлении резюме, путанице в карьере и классическом собеседовании с HR вопросов. Я также собрал и составил полный набор резюме, головоломок по найму в Клубах Golden Three Silver Four и интервью с персоналом. Если у вас есть какие-либо вопросы, я могу предоставить профессиональные ответы.

Для друзей-разработчиков Android это должна быть наиболее полная и полная информация о собеседовании. Чтобы лучше организовать каждый модуль, я обращаюсь к множеству высококачественных сообщений в блогах и проектах в Интернете и стараюсь не упустить каждый пункт знаний. Многие друзья полагались на это содержимое при просмотре и получали предложения от крупных производителей, таких как BATJ. Эта информация также помогла многим разработчикам Android, и я надеюсь помочь вам тоже.

Наконец, если вы хотите получить вышеупомянутый полный сборник собеседований Android BAT 2020, нажмите здесь, чтобы просмотреть полный контент .

рекомендация

отblog.csdn.net/weixin_44339238/article/details/113254355