Как пройти собеседование с Ele.me Node.js
Привет, добро пожаловать в ElemeFE, как следует из названия, цель этого урока - научить вас, как пройти собеседование с интерфейсом Ele.me, должность - программист сервера Node.js с 2-3 годами опыта (не полный стек), если вы заинтересованы в этой позиции или изучаете какой-либо расширенный контент Node.js, добро пожаловать на просмотр.
Следует отметить, что эта статья не предназначена для нулевых студентов, вам необходимо иметь определенную базу JavaScript/Node.js и иметь определенный опыт работы. серверная основа.JS-программисты должны знать эту часть.
Если вы считаете, что мало знаете, вам не нужно отправлять свое резюме(Это экономит время обеих сторон), если вы думаете, что большинство из них понимают илиПросто посмотрите на схему и почувствуйте, что она очень проста, так что добро пожаловать, присылайте свое резюме на ElemeFe (fe.job@ele.me).
Управляемое чтение
Хотя цель состоит в том, чтобы пройти собеседование, в этом руководстве не просто перечислены все вопросы интервью, ноВ основном это перечисление моментов в интервью, которые вам нужно подтвердить, понимаете вы или нет., и обсудить это в какой-то степени.
В этой статье некоторые распространенные проблемы разделены на категории, и в каждой категории указаны некоторые из рассматриваемых проблем.覆盖点
, и перечислите несколько常见问题
, обычно эти вопросы нужно понимать или сталкиваться с 2~3 годами опыта работы.Если вас интересует определенный тип вопросов, или вы хотите узнать ответы на перечисленные в нем вопросы, вы можете пройти阅读更多
Узнать больше.
В целом, перечисленная схема не очень исчерпывающая, охват деталей невелик, и многие обсуждения ведутся точно по делу, надеюсь, каждый сможет обдумать это с вопросами.
Js основная проблема
В отличие от front-end Js, back-end обращен прямо к серверу и больше склонен к памяти.
[Basic]
Типовое суждение[Basic]
объем[Basic]
пройти по ссылке[Basic]
освобождение памяти[Basic]
Что нового в ES6
Общая проблема
- Какой тип передается по ссылке в js и какой тип передается по значению Как передать переменную типа значения по ссылке?[more]
- js, 0,1 + 0,2 0,3 === правда ли это?Я не знаю, как плавать в медиане и третий должен определить количество двух чисел с плавающей запятой равны?
- Массив const средний элемент определения может быть изменен?Если да, то смысл измененного объекта const?[more]
- Когда в JavaScript освобождается память разных типов и переменных в разных средах?[more]
модуль
Общая проблема
- Будут ли два файла a.js и b.js требовать друг друга в бесконечном цикле? Могут ли обе стороны экспортировать переменные? Как избежать этой проблемы по замыслу?[more]
- Если a.js требует b.js, то определите глобальные переменные в b
t = 111
Можно ли распечатать прямо в формате ?[more] - Как сделать горячее обновление файла js/json без перезапуска процесса node?Есть ли проблема с самим этим вопросом?[more]
событие/асинхронное
[Basic]
Promise[Doc]
События[Doc]
Таймеры[Point]
блокировка/асинхронность[Point]
Параллельно/параллельно
Общая проблема
- В чем разница между вторым параметром .then в Promise и .catch?[more]
- Eventemitter Emit синхронизирован или асинхронный?[more]
- Как судить, является ли интерфейс асинхронным, асинхронным ли он, пока есть функция обратного вызова?[more]
- В чем разница между nextTick, setTimeout и setImmediate?[more]
- Как реализовать функцию сна?[more]
- Как реализовать асинхронное сокращение? (Примечание: не синхронное сокращение после асинхронного)[more]
обработать
[Doc]
Процесс (процесс)[Doc]
Дочерние процессы[Doc]
Кластер[Basic]
межпроцессного взаимодействия[Basic]
демон
Общая проблема
- Каков текущий рабочий каталог процесса и что он делает?[more]
- В чем разница между child_process.fork и форком POSIX?[more]
- Влияет ли смерть родительского или дочернего процесса друг на друга?[more]
- Как кластер обеспечивает балансировку нагрузки?[more]
- Что такое процесс демона Как реализовать процесс демона?[more]
IO
[Doc]
Buffer[Doc]
Строковый декодер[Doc]
Поток[Doc]
Приставка[Doc]
Файловая система[Doc]
Readline[Doc]
REPL
Общая проблема
- Для каких данных обычно используется Buffer и может ли динамически изменяться его длина?[more]
- Что такое highWaterMark и события стока Stream?Какова связь между ними?[more]
- Какова функция канала Stream?Данные передаются по ссылке или путем копирования в процессе канала?[more]
- Что такое дескриптор файла?Что такое поток ввода/вывода/поток ошибок?[more]
- Является ли console.log синхронным или асинхронным?Как реализовать console.log?[more]
- Как получить пользовательский ввод синхронно?[more]
- Как реализован Readline? (Вы можете иметь представление)[more]
Network
[Doc]
Сеть[Doc]
UDP/Datagram[Doc]
HTTP[Doc]
DNS (сервер доменных имен)[Doc]
ZLIB (сжатие)[Point]
RPC
Общая проблема
- В чем разница между cookie и сеансом?Как сервер очищает cookie?[more]
- В чем разница между POST и PUT в протоколе HTTP?[more]
- Что такое кросс-оригинальный запрос и как разрешить кросс-оригинал?[more]
- Разница между TCP/UDP[more]
-
TIME_WAIT
Какова ситуация? Слишком многоTIME_WAIT
Что может быть причиной?[more] - Что такое ошибка ECONNRESET?Как воспроизвести эту ошибку?
- Что означает зависание сокета и при каких обстоятельствах оно может появиться?[more]
- Что такое файл hosts?Что такое локальное разрешение DNS?
- Перечислите несколько способов увеличить скорость передачи по сети?
OS
[Doc]
TTY[Doc]
ОС (операционная система)[Doc]
Path[Doc]
аргументы командной строки[Basic]
нагрузка[Point]
CheckList
Общая проблема
- Что такое телетайп?Как определить, что я нахожусь в среде телетайпа?[more]
- В чем разница между символами перевода строки (EOL) в разных операционных системах?[more]
- Что такое понятие нагрузки на сервер, как проверить нагрузку?[more]
- Для чего используется ulimit?[more]
Обработка ошибок/отладка
[Doc]
Ошибки[Doc]
Домен[Doc]
Отладчик[Doc]
Плагин С/С++[Doc]
V8[Point]
снимок памяти[Point]
CPU profiling
Общая проблема
- Как бороться с непредвиденной ошибкой?С try/catch или каких других доменов?[more]
- что
uncaughtException
Событие? В каких ситуациях обычно используется это событие?[more] - Каков принцип домена?Почему домен должен быть объявлен устаревшим?[more]
- Что такое защитное программирование?
- Зачем передавать ошибку в первый параметр cb?Почему первый параметр некоторых cb не является ошибкой, например http.createServer?
- Почему некоторые исключения не могут быть обнаружены в вызове кода на основе сообщения об ошибке? Как точно определить местонахождение исключения?[more]
- Каковы причины утечек памяти, как анализировать и локализовать утечки памяти?[more]
тестовое задание
[Basic]
метод тестирования[Basic]
модульный тест[Basic]
Интеграционное тестирование[Basic]
Ориентиры[Basic]
испытание давлением[Doc]
Утверждать
Общая проблема
- Зачем писать тесты, не замедлит ли написание тестов разработку?[more]
- Что такое единица модульного тестирования?[more]
- Как тест гарантирует отсутствие бесконечного цикла в бизнес-логике?[more]
- Что такое мок Что такое мок вообще?[more]
util
Общая проблема
- Как HTTP передает let arr = [1,2,3,4] на сервер с помощью метода GET (URL)?[more]
- Реализация наследования (util.inherits) в Node.js?[more]
- Как рекурсивно получить все имена файлов в папке?[more]
место хранения
Общая проблема
- В чем разница между резервной копией базы данных и M/S, M/M и другими методами развертывания?[more]
- В чем польза индекса, каков общий принцип, на что обратить внимание при разработке индекса?[more]
- Проблемы соединения MongoDB (тайм-ауты / отключения и т. Д.) Что может быть причиной?[more]
- При каких обстоятельствах данные будут выглядеть грязными и как этого избежать?[more]
- Разница между Redis и Memcached?[more]
Безопасность
[Doc]
Крипто[Doc]
TLS/SSL[Doc]
HTTPS[Point]
XSS[Point]
CSRF[Point]
Посредническая атака[Point]
SQL / NoSQL инъекция
Общая проблема
- Как шифрование обеспечивает безопасность паролей пользователей?[more]
- В чем разница между TLS и SSL?[more]
- Можно ли взломать HTTPS?[more]
- Что такое XSS-атака и какой вред?[more]
- Может ли фильтрация HTML-тегов предотвратить XSS? Перечислите случаи, когда это невозможно?[more]
- Какой CSRF то?Как предотвратить?[more]
- Как избежать атаки «человек посередине»?[more]
наконец
В настоящее время репо находится на строительной площадке, если вы обнаружите какие-либо проблемы, вы можетеissuesуказал в. Если у вас есть лучшие вопросы / знания / исправления, пожалуйста, отправьте PR.
Кроме того, основы Js - это относительно большая тема. В этом уроке мы не будем подробно обсуждать ее. Это больше перечислит некоторые важные или связанные с сервером места, поэтому, если вы возьмете "JavaScript Definitive Guide" для учебник A PR не может быть принят. В этом руководстве более подробно рассматривается то, что программистам Node.js необходимо знать об основах работы на стороне сервера.