TS TypeScript  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Типизация серверного TypeScript

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 30
Какой тип имеет text после вызова readFile с кодировкой "utf8"?
TypeScript
import { readFile } from "node:fs/promises";
const text = await readFile("config.json", "utf8");
Вопрос 2 из 30
Какой тип у результата без encoding?
TypeScript
import { readFile } from "node:fs/promises";
const data = await readFile("image.bin");
Вопрос 3 из 30
Почему callback API может дать более сложную модель ошибок?
TypeScript
readFile(path, "utf8", (error, data) => {
  // ...
});
Вопрос 4 из 30
Как типизировать код ошибки файловой системы?
Вопрос 5 из 30
Когда синхронный fs API приемлем на сервере?
Вопрос 6 из 30
Какой тип у process.env.PORT?
TypeScript
const port = process.env.PORT;
Вопрос 7 из 30
Что неверно в этом присваивании?
TypeScript
const port: number = process.env.PORT;
Вопрос 8 из 30
Почему глобальное расширение ProcessEnv всеми обязательными полями может лгать?
TypeScript
declare namespace NodeJS {
  interface ProcessEnv {
    DATABASE_URL: string;
  }
}
Вопрос 9 из 30
Где выполнять проверку конфигурации?
Вопрос 10 из 30
Как хранить секрет в типизированной конфигурации?
Вопрос 11 из 30
Что означает chunk в событии data у потока с setEncoding('utf8')?
TypeScript
stream.setEncoding("utf8");
stream.on("data", chunk => {
  // chunk
});
Вопрос 12 из 30
Почему нельзя считать один data chunk полным JSON?
TypeScript
stream.on("data", chunk => {
  const item = JSON.parse(chunk.toString());
});
Вопрос 13 из 30
Как учитывать backpressure при записи?
TypeScript
const canContinue = writable.write(chunk);
Вопрос 14 из 30
Какой интерфейс удобнее выдавать бизнес-слою вместо Node Readable?
Вопрос 15 из 30
Как отменять конвейер потоков?
Вопрос 16 из 30
Почему req.body нельзя сразу считать CreateUser?
TypeScript
app.post("/users", (req, res) => {
  const input: CreateUser = req.body;
});
Вопрос 17 из 30
Какой риск у req.params.id as UserId?
TypeScript
const id = req.params.id as UserId;
Вопрос 18 из 30
Почему JSON.parse из очереди сообщений возвращают как unknown?
TypeScript
const payload: unknown = JSON.parse(message.value);
Вопрос 19 из 30
Как моделировать ошибку внешней зависимости в сервисе?
Вопрос 20 из 30
Где заканчивается доверенная внутренняя область?
Вопрос 21 из 30
Что должен подтвердить типовой тест функции loadConfig?
TypeScript
declare const PortSchema: { parse(value: unknown): Port };
function loadConfig(env: NodeJS.ProcessEnv) {
  return { port: PortSchema.parse(env.PORT) };
}
Вопрос 22 из 30
Какой отрицательный пример полезен для HTTP-обработчика?
TypeScript
interface Request { body: unknown }
declare const req: Request;
Вопрос 23 из 30
Почему тип Readable не гарантирует корректную обработку потока?
TypeScript
declare const source: NodeJS.ReadableStream;
declare const destination: NodeJS.WritableStream;
source.pipe(destination);
Вопрос 24 из 30
После рефакторинга middleware ошибки cause расширился до any. Что поймает регрессию?
Вопрос 25 из 30
Какой набор тестов нужен для серверной границы данных?
Вопрос 26 из 30
Какой публичный контракт сервиса меньше зависит от Node.js?
TypeScript
export interface FileProcessor {
  process(data: Uint8Array, options?: { signal?: AbortSignal }): Promise<ProcessResult>;
}
Вопрос 27 из 30
Что здесь является утечкой инфраструктуры?
TypeScript
export interface PublicService {
  execute(command: Command): Promise<Result>;
  dbPool: InternalPool;
  redisSocket: InternalSocket;
  currentNodeStream: NodeJS.ReadableStream;
}
Вопрос 28 из 30
Долгая операция теперь поддерживает отмену и частичный результат. Как лучше развить контракт?
TypeScript
type RunResult =
 | { kind: "completed"; value: Output }
 | { kind: "cancelled" }
 | { kind: "partial"; value: PartialOutput };
Вопрос 29 из 30
Как проверить совместимость серверной библиотеки с поддерживаемыми версиями Node и @types/node?
Вопрос 30 из 30
Какой признак показывает, что глобальное расширение Express Request стало неуправляемым?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу