Пять лет CRUD-программистов, весь процесс успешной посадки 360 от аутсорсинга;

Писать впереди


Сегодня я делюсь кратким изложением опыта собеседования с Java-инженером с 5-летним опытом работы в Imperial Capital. Я посмотрю, какие вопросы любят задавать эти интернет-компании. Я надеюсь, что это будет иметь обучающее значение для каждого собеседования.

У меня также есть 5-летний опыт разработки Java. Я начал свое собеседование в начале апреля. Примерно через 20 дней у меня были собеседования с крупными интернет-компаниями, крупными компаниями первого и второго уровня или стартапами в области финансирования, и я получил некоторые предложения, включая Qihoo 360 и т. д.

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

Навыки, которыми должен обладать Java-программист с 3-летним опытом работы, могут быть интересными для Java-программистов. Я хочу объяснить здесь, что содержание, перечисленное ниже, не является тем, что вы должны знать, но если вы освоите больше, итоговая оценка и заработная плата, которую вы можете получить, определенно будут выше.

Один, основы Java

  1. Почему класс String является окончательным.
  2. Исходный код HashMap, принцип реализации и базовая структура.
  3. Если подумать, разница между Class.forName и classloader
  4. Разница и связь между сеансом и файлом cookie, жизненный цикл сеанса и управление сеансом при развертывании нескольких служб.
  5. Какие очереди в Java и в чем отличия.
  6. Модель памяти Java и алгоритм сборки мусора
  7. Эффективность работы двух структур Java-массива и связанного списка, при каких условиях (начиная с начала, с конца, начиная с середины) какие операции (вставка, поиск, удаление) эффективны
  8. Исследование и позиционирование утечек памяти Java: использование jmap, jstack и т. Д.

Два, многопоточность

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

Если есть четыре потока Thread1, Thread2, Thread3 и Thread4 для подсчета размеров четырех дисков C, D, E и F соответственно, и все потоки подсчитываются и передаются потоку Thread5 для обобщения, как это должно быть достигнут?

Есть ли у умных пользователей сети ответ на этот вопрос? Несложно, есть уже готовые классы под java.util.concurrent.

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

Наконец, хотя в этом интервью не так много вопросов, ключевыми моментами являются также многопоточная синхронизация и блокировка.

Разница между синхронизированной и ReentrantLock, обычным методом синхронизированной блокировки и статическим методом блокировки, принципом взаимоблокировки и методом устранения неполадок и т. Д. Что касается многопоточности, я суммировал вопросы интервью по многопоточности и параллельному программированию в некоторых предыдущих статьях!

 

Друзья, которым нужны документы и материалы интервью в статье, могут лайкнуть эту статью и добавить помощника vx: bjmsb10, чтобы получить ее бесплатно;

 

三 、 I.

Ввод-вывод делится на ввод-вывод файла и ввод-вывод сокета. Файловый ввод-вывод в основном не запрашивается, и не о чем спрашивать. Его нормально использовать, и помните, что файловый ввод-вывод полностью блокирует ввод-вывод.

Socket IO - более важная часть. Нам необходимо понять разницу между блокирующим / неблокирующим, синхронным / асинхронным, а также понять четыре модели ввода-вывода: блокирующий ввод-вывод, неблокирующий ввод-вывод, мультиплексный ввод-вывод и асинхронный ввод-вывод. Как Socket IO соотносится с этими четырьмя моделями.

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

Если вы использовали Netty, вы можете спросить о Netty. В конце концов, этот фреймворк в основном является лучшим фреймворком NIO (Mina на самом деле хорош, но в целом все еще не так хорош, как Netty), и большинство интернет-компаний также используют Netty. .

Четыре, исходный код JDK

Если вы хотите получать высокую зарплату, вы должны прочитать исходный код JDK. Вышеупомянутое содержимое также может быть связано с конкретными сценариями.Исходный код JDK предназначен для проверки, нравится ли вам обычно вникать в него. В процессе мне задали много вопросов об исходном коде JDK. Один из самых сложных вопросов - как реализован метод hashCode () String. К счастью, я обычно читал много исходного кода String и отвечал на него. примерно. Исходный код JDK на самом деле нечего резюмировать. Он носит исключительно личный характер и резюмирует наиболее важный исходный код:

  1. Исходный код классов реализации List, Map, Set
  2. Исходный код ReentrantLock, AQS
  3. Принцип реализации AtomicInteger, в основном для объяснения механизма CAS и того, как AtomicInteger реализован с использованием механизма CAS.
  4. Принцип реализации пула потоков
  5. Методы в классе Object и роль каждого метода

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

Пять, кадр

  1. На какие пакеты jar нужно ссылаться в Spring framework и назначение этих пакетов jar
  2. Принцип srpingMVC
  3. Значение аннотаций springMVC
  4. Связь и разница между beanFactory и ApplicationContext весной
  5. Несколько способов весеннего впрыска
  6. Как весна понимает управление вещами
  7. Принципы SpringIOC и AOP
  8. Способ циклического впрыска весной

 

 

Шесть, база данных

База данных также, скорее всего, спросит об этом. Некоторые основы, такие как разница между объединением и объединением всех, левое объединение, несколько индексов и их различия, обсуждаться не будут. Более важным является оптимизация производительности базы данных. Если вы ничего не знаете об оптимизации производительности базы данных, то если вы У меня есть время, я предлагаю вам потратить день или два до собеседования, чтобы подготовить содержание основ SQL и оптимизации SQL.

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

 

 

Семь, структура данных и алгоритм анализа

Анализ структуры данных и алгоритмов лучше, чем нет для программиста, и они определенно могут пригодиться в работе. Основой являются массивы и связанные списки. Стеки и очереди немного глубже, но не сложны. Деревья очень важны. Более важными деревьями являются деревья AVL и красно-черные деревья. Вам не нужно знать их конкретную реализацию, но вы должен знать, что такое двоичное дерево поиска.Что такое сбалансированное дерево, чем отличается AVL-дерево от красно-черного дерева. Помню интервью, интервьюер рассказывал мне об индексе базы данных, он меня спросил:

Вы знаете, какая структура данных используется для реализации индекса?

Ответьте на используемую хеш-таблицу, ответ неверный. Он снова спросил, знаете ли вы, почему вы хотите использовать деревья? Ответ: Поскольку в таблице хешей может быть больше конфликтов, перед лицом десятков миллионов или даже сотен миллионов данных, это значительно увеличит временную сложность поиска. Дерево относительно стабильно, и в основном гарантируется, что нужные данные можно будет найти самое большее 20 или 30 раз. Другая сторона сказала, что это не совсем правильно. В конце концов, мы обсудили эту проблему, и я также понял, зачем было использовано дерево.

Восемь, JVM

Неожиданно виртуальная машина Java должна стать очень важным элементом контента, поэтому вероятность того, что вас спросят в этих компаниях, практически равна нулю. Знаете, в прошлом году я потратил много времени на изучение виртуальной машины Java. Я прочитал более пяти раз «Углубленное понимание виртуальной машины Java: расширенные возможности и лучшие практики JVM» г-на Чжоу Чжиминга.

Ближе к дому, хотя я не спрашивал о виртуальной машине Java, я думаю, что ее необходимо изучить, поэтому я просто сделаю набросок и расскажу о более важном содержимом виртуальной машины Java:

  1. Структура памяти виртуальной машины Java
  2. Алгоритм GC и несколько сборщиков мусора
  3. Механизм загрузки классов, который является родительской моделью делегирования
  4. Модель памяти Java
  5. происходит до правила
  6. изменчивые правила использования ключевых слов

Возможно, собеседование бесполезно, но на пути к тому, чтобы стать большой коровой, оно обязательно. Это собеседование с несколькими компаниями и, наконец, собраны эти вопросы для собеседования. Собеседование определяет вашу зарплату. Вы должны относиться к нему хорошо. Эти вопросы могут не Я спрошу, но программисты не такие умелые, и наконец-то получили предложение от Baidu, зарплата неплохая, я поделился этими вопросами на собеседовании и надеялся помочь тем, кто планирует сменить работу ~~

 

Друзья, которым нужны документы и материалы интервью в статье, могут лайкнуть эту статью и добавить помощника vx: bjmsb10, чтобы получить ее бесплатно;

 

Учиться и поощрять

В то же время золотая тройка и серебряная четверка прошли. Что касается нынешнего режима домашнего собеседования, очень важно активно подготовиться к собеседованию перед собеседованием. Очень важно будет просмотреть всю Java система знаний Вы можете очень ответственно сказать, адекватен ли обзор, напрямую повлияет на вашу успешность входа. Однако многие друзья страдают от того, что у них нет соответствующей информации для обзора всей системы знаний Java, или некоторые друзья могут не знать, с чего начать. Я случайно получил отобранный материал, будь то из всей системы знаний Java или с точки зрения собеседования, это высокотехнологичный материал (версия PDF).

Как получить бесплатную информацию:

Друзья, которым нужны документы и материалы интервью в статье, могут лайкнуть эту статью и добавить помощника vx: bjmsb10, чтобы получить ее бесплатно;

 

 

Другие темы архитектуры и видеоматериалы отображаются следующим образом:

 

 

 

Друзья, которым нужны документы и материалы интервью в статье, могут лайкнуть эту статью и добавить помощника vx: bjmsb10, чтобы получить ее бесплатно;

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

отblog.csdn.net/Java0258/article/details/112369254