Несколько дней назад я получил письма о намерениях от Meituan и Baidu, что является завершением моего осеннего набора. Подведем итоги этой осени.
Прежде всего, я хотел бы поблагодарить Niuke.com. Все предложения поступают через внутренние сообщения Niuke.com. Я также прочитал много фейсбуков на этой платформе и ответил на множество вопросов. Я отклонил Tencent и TAL и остальные Следующие два варианта Baidu и Meituan.Вы можете обратиться к моему предыдущему сообщению.Пожалуйста, дайте несколько предложений.
PS: арендодатель C++За кулисами
Алибаба, финансовый муравей(стоя на коленях с обеих сторон)
Алибаба встал на колени, во-первых, из-за собственной некомпетентности, во-вторых, из-за того, что посвятил себя посту JAVA (я в основном знаюC++).
-
одна сторона:
1. Опыт стажировки
2. Расскажите об алгоритме Дейкстры
3. Разница между LinkedList и ArrayList
4. B-дерево B+Дерево
5. Согласованное хеширование
6. Обнаружение графических колец (глубокий поиск)7. Симметричное и асимметричное шифрование
8. Есть некоторые вещи, которые я долго не могу вспомнить
-
Вторая сторона:
1. Напишите сортировку кучи
2. Предварительный обход бинарного дерева (с рекурсией и без рекурсии)
3. TCP рукопожатие три раза, волна четыре раза
4. Расскажите о своем проекте и о том, как его оптимизировать
результат ГГ
Отдел эксплуатации и обслуживания Baidu(стоя на коленях с трех сторон)
-
одна сторона
1. Трёхстороннее рукопожатие TCP, а почему не двух- или четырёхстороннее
2. Состояние волны TCP четыре раза, почему есть time_wait и как его избежать
3. Реализация файловой системы
Файловая система 5.proc (meminfo, cpuinfo)
6. Команда Linux для просмотра размера файла
7. Алгоритм фильтра Блума
8. Проект, как улучшить -
две стороны
1. Расскажите обо всем процессе стажировки
2. Задайте сортировку кучи, затем роль кучи3.Topk
4. Измените первое число неупорядоченного массива (неповторяющегося), содержащего только 1 ~ n, на -1 и найдите, какое число изменено на -1.
Я спросил у интервьюера, занимался ли я эксплуатацией и обслуживанием или развитием, он меня немного обучил, но сказал, что все равно дал мне это.
-
Три стороны
1. Укажите способ связи baidu.com
2. Можно ли приехать на стажировку?
3. . . Я не могу вспомнить остальное, меня оскорбили
В результате ГГ проснулся от собственной посуды. . .
хорошее будущее(отказался предлагать)
-
одна сторона
1. Высота бинарного дерева (рекурсивное, нерекурсивное)
2. В массиве есть только одно число, которое не повторяется, найдите это число.
3. В массиве есть два уникальных числа, найдите эти два числа
4. Напишите сортировку кучи
5. Механизм реализации виртуальной функции
6. Монета, есть A, и B два человека подбрасывают монету, A первый голосует, A выигрывает орлом, B продолжает голосовать, B бросает орел, B выигрывает, в противном случае A продолжает голосовать, это правило продолжает находить вероятность выигрыша А (и т.д. забыл формулу *_*)
7. Ява иC++разница
8. Как вы узнали -
две стороны
1. Как оптимизировать быструю сортировку, преимущества и недостатки быстрой сортировки и кучи
2. Создайте класс, ... забудьте
3.статический эффект
4. Расскажите о проекте
5. Желание изменить направление алгоритма
предложение результата
Мейтуан Кейтеринг(offer)
-
одна сторона
1.Общение с Meituan.com
2. TCP рукопожатие три раза, волна четыре раза, состояние
3. Механизм виртуальной памяти
4. Как справиться с ошибкой страницы операционной системы
5. Что такое заголовочный файл эльфа
6. Пишите quicksort, binary, singleton7. Нестабильная роль, барьер памяти
8. Java и C++Различия (объясняются из указаний по шаблонам, компиляции, компоновке, памяти и библиотекам)
-
две стороны
1. Имея массив строк и строку S, найдите все строки s в массиве строк, соответствующие правилам: s можно изменить на S, удалив, добавив или заменив символ.
2. Кратко рассказать о механизме управления памятью операционной системы, преимуществах и недостатках сегментированного и страничного управления памятью (кстати, упоминается следующая страница)
3. Знаете ли вы sendfile (имеется в виду, что не знаете), что такое NIO (Сяобай сказал, что никогда о нем не слышал...)
4. Реализация RPC (очень плохой ответ)
5. Расскажите о процессе компиляции и компоновки C-файла.
6. B-дерево B+Дерево
7. Расскажите о стажировках и о своих проектах
Когда интервьюер подошел, он сказал, что предыдущий алгоритм был слишком простым, а первый вопрос немного сложным, (не слишком сложным *_*... -
Три стороны
2D-массив печати косой черты 1,45 градуса
2. Расскажите о стеке сетевых протоколов связи
3. Отличие TCP от UDP, как TCP обеспечивает надежность, time_wait, в чем недостатки TCP
4. Как реализован HTTPS5. Что такое кеш, зачем он нужен и каковы сценарии использования кеша
6. Что вы недавно прочитали?Расскажите о ядре GFS и mapreduc
-
4 крышки от бутылок обмениваются на 1 бутылку вина Чтобы выпить 150 бутылок вина, сколько бутылок он покупает хотя бы?
-
8. Говорите о жизни
предложение результатов
Tencent SNG QQ Музыка(отказался предлагать)
-
одна сторона
1. Разница между вектором и списком
2. Что такое черты и их роль
3. Ошибка итератора
4. Как реализована unordered_map
5. Две специализации шаблона, роль (требуется по СТЛ, а дальше сказано трейтами)
6. Расскажите о yacc и lex, рекурсивном спуске
7.tcp/ip... (Этот ответ почти вызывает рвоту, см.
8. Как решить проблему глубокого копирования, поверхностного копирования, ссылки rvalue, интеллектуального указателя, подсчета ссылок и циклической ссылки. -
две стороны
1. Объедините два отсортированных массива в один отсортированный массив2. Почему TCP или UDP используются в играх (пестицидах)?
3. Разница между Epoll и Select и преимущества epoll, почему производительность epoll в целом лучше, чем у select, режима ET и режима LT
4. Неблокирующее чтение под Epoll ET, почему нельзя блокировать
5. Отправляем 3 80-байтных пакета, а пиры по TCP и UDP получают несколько раз соответственно (собственно это одно из отличий TCP от UDP, TCP основан на потоке)
6. Стажировки, проекты
-
Три стороны
1. Как определить, является ли число степенью двойки
2. Быстрый ряд
3. Есть еще некоторые, которые я не помню, и ответ не очень хороший
4. Говорите об идеалах
Подразделение облачных вычислений Baidu(offer)
-
одна сторона
1. Учитывая последовательность предварительного порядка, восстановить полное двоичное дерево, если это обычное двоичное дерево, можно восстановить, почему (код записи QQ)_)
2. Есть три очереди сообщений, и элементы вставляются в три очереди случайным образом (вероятности могут быть разными), как обеспечить эффективность вставки и поиска (есть две идеи, одна добавить контроллер, очередь уведомляет коэффициент заполнения, а контроллер управляет вставкой и поиском, другой - вычисляет количество раз блокировки, а затем пропорционально контролирует частоту вставки и частоту поиска в очереди в соответствии с временем блокировки)
3. Самая длинная общая подпоследовательность
4. Копия вектора, функция подкачки для обмена указателями
5. Отличие потока от процесса, преимущества и недостатки, модель памяти процесса
6. Что такое IPC, принцип разделяемой памяти
7. Расскажите об идее кэша LRU
8. Задача о скачках, 36 лошадей, 6 дорожек, найти минимальное количество скачек для самых быстрых 6 лошадей, если есть n лошадей, как насчет m дорожек
-
две стороны
1. Механизм реализации виртуальной функции
2. Факторы, влияющие на модель памяти (выравнивание памяти, модель памяти при множественном наследовании, проблема алмаза, модель памяти виртуального наследования, способ обработки виртуального наследования)
3. Оптимизация NRVO, ссылка на rvalue
4. Роль extern C, зачем он нужен
5.C++Перегрузка, механизм управления именами
6. Разница между Epoll и Select и преимущества epoll, почему производительность epoll в целом лучше, чем у select, режима ET и режима LT
7. Как использовать epoll для достижения высокого параллелизма, многопоточности, пулов потоков и решения проблем с скоплением потоков
8. Обход предварительного порядка двоичного дерева, рекурсия, нерекурсия, как использовать пространство O (1) для реализации (обход Морриса)
9. Принцип реализации блокировки взаимного исключения (маскирующее прерывание, CAS), реализация блокировки чтения-записи -
Три стороны
1. Стажировки, проекты
2. Контроль перегрузки TCP, протокол скользящего окна, запутанное окно
3. Механизм виртуальной памяти, вторичная таблица страниц, быстрая таблица TLB, отсутствие страницы, подкачка
4. Алгоритм планирования операционной системы
5. Как TCP обеспечивает надежность, четыре таймера, как решить time_wait, алгоритм Nagle
6. Алгоритм согласованности (плот), непротиворечивый хэш
7. Преимущества и недостатки, готовы ли вы приехать на стажировку
предложение результатов
Суммировать
Как школа она не очень хороша, и до сих пор существует разрыв между учениками, которые не учатся в предметном классе, и великими учителями (** Например, босс ядра и TDF @Siro Altman). После того, как домовладелец получил предложение от Chengdu Meituan и Baidu, он не участвовал ни в наборе других школ, ни в других письменных тестах (**) , выше это все мои писанины лица. Позвольте мне рассказать о моем опыте обучения, а затем поделиться некоторыми учебными ресурсами,нужныйМожно забрать самостоятельно
Обобщая опыт, можно дать развернутые ответы на некоторые распространенные вопросы (такие как разница в процессах потоков, внешний C, виртуальная функция, IPC). . Некоторые задачи должны быть подготовлены заранее и не должны воспроизводиться временно, например: самопрезентация, предложение о намерении, преимущества и недостатки и т. д. Необходимо заранее рассмотреть личные проекты и опыт стажировки, а также повторить упражнения, чтобы увидеть, что можно улучшить. . Алгоритмические вопросы следует больше практиковать (литкод, меч относится к предложению), особенно меч относится к предложению. Можно читать больше писаний лицом к лицу.В конце концов, очень полезно заранее подготовить много вопросов, а также можно проверить пропуски и восполнить пробелы.Еще один момент, что можно максимально углубиться вовнутрь , что может сэкономить много энергии.
поделиться некоторыми учебными материалами
Это C Хоу Цзе++Учебные видеоролики, очень, очень хорошие обучающие видеоролики, посвященные управлению памятью, STL (анализ исходного кода), C++11 Этот контент, интервью об управлении памятью, контент STL, узнал, что видео, можно сказать, убивает эти проблемы, здесь я наврал, чтобы лайкнуть, пожалуйста, поморщиться, поставить лайк, набраться опыта (*_*)
Связь:pan.baidu.com/s/1qXQynz2Пароль: fus4
Есть также несколько книг, рекомендуемых для всех, на самом деле это обычные книги, просто взгляните, если они вам нужны:
C++:
"С++праймер" Излишне говорить, что его можно использовать.
Шаблон "Анализ исходного кода STL", трейты, структура данных. . Это большой бонус к моему интервью, прочитав его несколько раз, я сымитировал небольшой STL.
Виртуальная таблица «Глубокое исследование объектной модели C», множественное наследование, виртуальное наследование, NRVO. . . .
"Эффективный С++》Выучите немного C++Навык
Есть и более сложные, которые не рекомендуются.
Алгоритмы и структуры данных:
Я читал «Алгоритмы», красную книгу, следил за курсом обучения (Алгоритмы I, II) и выполнял лабораторные после занятий, и мои навыки значительно улучшились.
"Введение в алгоритмы", я не дочитал, полезно проверить на утечки и восполнить пробелы, и дополнить знания по динамическому программированию, B-деревьям и другим знаниям, не упомянутым в вышеприведенной книге
Остальное - почистить leetcode oj. Хозяин не сильно почистил и закончил первые 150 курсов. Я слышал, что большой парень почистил более 300 курсов на втором курсе. Мне стыдно. .
Интернет:
Сначала посмотрите «Метод компьютерных сетей сверху вниз», затем «Подробное объяснение TCP/IP».
операционная система:
Я должен порекомендовать божественную книгу "Углубленное понимание компьютерных систем".Внутренние навыки хорошие, и это необходимо для собеседований.
Затем посмотрите «Современные операционные системы», в основном рассматривая процессы, потоки, управление памятью, файловые системы.
Практическая книга рекомендует «Восстановление правды операционной системы», что очень весело для реализации небольшого ядра. Я помню, @Siro·Altman также рекомендовал это. Прочтите главу о сборке CSAPP, прежде чем читать ее.
Linux
Я не буду много говорить о библейских книгах Стивенса. . .
Шаблоны проектирования
Простой и понятный "шаблон проектирования головой вперед", прочитав его, я понимаю паттерн проектирования, но думаю, что эту штуку все же нужно внедрить в проект, иначе это пустая болтовня. . .
Другой принцип компиляции, если интересно, можете посмотреть. . . Очень интересна книга "Паттерны реализации языка программирования", она учит писать парсеры. Затем есть «Принципы и практика компиляции», в которых объясняются основные принципы LR, рекурсивного спуска, DFA, NFA и принципы процесса компиляции программы, но не подробно. . . Чуть глубже знаменитая Книга Дракона "Принципы составления", не напрягающая после прочтения двух предыдущих книг. . После прочтения этих пунктов написания Parser, Lexer становится довольно интересным. . Заинтересованы в том, чтобы поиграться с генерацией кода, оптимизацией и т. д., арендодатель только ничего не знает и не умеет играть, а только читает принцип компиляции бэкенда. . .
По поводу распределенного обучения можете мне тоже порекомендовать какие-то методы.Это пока немного просто и наивно.Теорию изучаю а практики хватает.Я готов выучить Redis(*_*),а потом смотреть исходники код.
2017.09.18 обновление
О резюме:
При написании резюме основное внимание уделяется ключевым моментам, личной информации, опыту стажировки, проектам (двум или трем), а затем вводятся очки навыков. Одностраничного резюме обычно достаточно. Рекомендовать артефактTypora, Вы можете использовать уценку для написания своего резюме, это программное обеспечение может конвертировать формат md в pdf, и есть разные стили уценки, конечно, лучше всего писать в LaTeX.
Также порекомендуйте сайт для индийцевGeeksforgeeks, На этом веб-сайте есть много поясняющих примеров алгоритмов и структур данных, хотя он на английском языке, его легко понять, а также много личного опыта иностранных компаний.