Рубрики
Без рубрики

20 Основные вопросы интервьюировки и ответы в 2018 году

20 Основные вопросы интервьюировки и ответы в 2018 году

Автор оригинала: Alex Ershov.

Teadercript начинается с того же синтаксиса и семантики, что миллионы разработчиков JavaScript знают сегодня. Shotescript предлагает поддержку последних и развивающихся функций JavaScript, в том числе из ECMAScript 2015 и будущих предложений, таких как Async-функции и декораторы, чтобы помочь построить надежные компоненты. Следуйте через 20 и прочитайте 20 вопросов собеседования Teasscrient и ответы Completed Fullstack.cafe Редакция.

20 Знайкопписном интервью Вопросы и ответы в 2018 году

Q1: Что такое Tymdercript и почему я использовал его вместо JavaScript?

Тема: Tymdercript Сложность: ⭐.

Tymdercript Это SuperSet javaScript, который в основном обеспечивает необязательный статический набор, классы и интерфейсы. Одним из больших преимуществ является включение IDES, чтобы обеспечить более богатую среду для обнаруженных общих ошибок, как Вы вводите код Отказ Для большого проекта JavaScript принять напечатающий напечатающий напечатанный напечатающий программное обеспечение, пока не будет развертываться, где будет работать обычное приложение JavaScript.

Подробно:

  • Typeycripts поддерживает новые стандарты Ecmascript и компилирует их на цели (более старых) целей Ecmascript по вашему выбору. Это означает, что вы можете использовать функции ES2015 и за его пределами, как модули, функции лямбда, классы, оператор распространения, деструктурируют сегодня.
  • Код JavaScript является допустимым кодом Tearcript; Tymdercript – это суперс javascript.
  • Tymdercript добавляет тип поддержки в JavaScript. Система типа TypectScript относительно богата и включает в себя: интерфейсы, enums, гибридные типы, универсальные, союзные и пересечения, модификаторы доступа и гораздо больше. Teadercript зарабатывает немного проще, а намного менее явно по использованию вывод типа.
  • Опыт развития с Tymdercript – отличное улучшение на JavaScript. IDE в режиме реального времени информируется в режиме реального времени Compiler TypeyScript на его информации о его богатом виде.
  • С помощью строгих нулевых проверок включена ( --stricthnunkchecks Флаг компилятора) Флаг компилятора) Компилятор TypeScript не позволит неопределенному быть назначенным переменной, если вы явно не заявляете о неясном виде.
  • Чтобы использовать Typection, вам нужен процесс сборки для компиляции кода JavaScript. Компилятор TypeScript Compiler может встроить информацию о наличии исходности в сгенерированных файлах .js или создавать отдельные файлы .map. Это позволяет вам установить точки останова и проверять переменные во время выполнения напрямую в вашем Tyertcript Code.
  • Tymdercript – это открытый источник (Apache 2 Licensed, см. GitHub) и поддерживается Microsoft. Андерс Хейлсберг Ведущий архитектор C # поднимает проект.

🔗 Источник: stackoverflow.com.

Q2: объяснить дженерики в Teadercript

Тема: Tymdercript Сложность: ⭐.

Generics могут создать компонент или функцию для работы над различными типами, а не один.

/** A class definition with a generic parameter */
class Queue {
  private data = [];
  push = (item: T) => this.data.push(item);
  pop = (): T => this.data.shift();
}

const queue = new Queue();
queue.push(0);
queue.push("1"); // ERROR : cannot push a string. Only numbers allowed

🔗 Источник: basarat.gitbooks.io

Q3: ShameScript поддерживает все ориентированные на объект принципы?

Тема: Tymdercript Сложность: ⭐⭐.

Ответ – Да Отказ Существует 4 основных принципа к объектному ориентированному программированию:

  • Инкапсуляция,
  • Наследование,
  • Абстракция и
  • Полиморфизм.

Teadercript может реализовать все четыре из них с его меньшим и более чистым синтаксисом.

🔗 Источник: jonathanmh.com.

Q4: Как вы можете проверить нулевой и неопределенный в Teadercript?

Тема: Tymdercript Сложность: ⭐⭐.

Просто используйте:

if (value) {
}

Это оценит на правда Если ценность не является:

  • ноль
  • неопределенный
  • Нан
  • Пустая строка «
  • 0
  • ложный

Tymdercript включает правила JavaScript.

🔗 Источник: stackoverflow.com.

Q5: Как реализовать константы классов в Typescript?

Тема: Tymdercript Сложность: ⭐⭐.

В TypeScript, Const Ключевое слово не может быть использовано для объявления свойств класса. Это приводит к тому, что компилятор к ошибке с ошибкой «класс не может иметь ключевое слово« const ». Tymdercript 2.0 имеет readly модификатор:

class MyClass {
    readonly myReadonlyProperty = 1;

    myMethod() {
        console.log(this.myReadonlyProperty);
    }
}

new MyClass().myReadonlyProperty = 5; // error, readonly

🔗 Источник: stackoverflow.com.

Q6: Что такое файл картнопных карт?

Тема: Tymdercript Сложность: ⭐⭐.

.map Файлы являются файлами исходных карт, которые позволяют отображать отображение инструментов между испуском кода JavaScript и исходных файлах Teadercript, которые создали его. Многие отладчики (E.G. Visual Studio или DEV-инструменты Chrome) могут потреблять эти файлы, чтобы вы могли отладки файла TeampScript вместо файла JavaScript.

🔗 Источник: stackoverflow.com.

Q7: Что такое Getters/Setters в Tymdercript?

Тема: Tymdercript Сложность: ⭐⭐.

Teamscripts поддерживает Геттерс/Соседниты как способ перехватить доступ к члену объекта. Это дает вам способ иметь более тонкий контроль над тем, как доступа к каждому объекту.

class foo {
  private _bar:boolean = false;

  get bar():boolean {
    return this._bar;
  }
  set bar(theBar:boolean) {
    this._bar = theBar;
  }
}

var myBar = myFoo.bar;  // correct (get)
myFoo.bar = true;  // correct (set)

🔗 Источник: ThmyscriptLang.org.

Q8: Можем ли мы использовать Teamscript на Backend и как?

Тема: Tymdercript Сложность: ⭐⭐.

Tymdercript не работает только для браузера или кода Frestend, вы также можете написать приложения Backenc. Например, вы можете выбрать Node.js и иметь некоторые дополнительные виды безопасности, а другая абстракция, которая приносит язык.

  1. Установите компилятор по умолчанию
npm i -g typescript
  1. Компилятор Typeyctry принимает варианты в форме файла TSConfig.json, который определяет, где вводить встроенные файлы, и в целом довольно похоже на конфигурацию Babel или WebPack.
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "outDir": "build"
  }
}
tsc
node build/index.js

🔗 Источник: jonathanmh.com.

Q9: Какие разные компоненты Tymdercript?

Тема: Tymdercript Сложность: ⭐⭐⭐.

Есть преимущественно 3 компонента Tymdercript.

  1. Язык – Самая важная часть для разработчиков – новый язык. Язык состоит из нового синтаксиса, ключевых слов и позволяет писать TeampScript.
  2. Компилятор – Компилятор Tymdercript представляет собой открытый исходный код, кроссплатформенную и открытую спецификацию и записывается в Teadercript. Компилятор будет компилировать ваш Teadercript в JavaScript. И это также выделяет ошибку, если таковая имеется. Это также может помочь в сочетании различных файлов на один выходной файл и в генерации исходных карт.
  3. Языковая служба – Служба языка Typeycript, которая способствует интерактивным опыте в визуальной студии, VS код , Sublime, The Teadercript Playground и другой редактор.

🔗 Источник: PalaceDotnet.com.

Q10: Это код Teamplectry действителен? Объяснить, почему.

Тема: Tymdercript Сложность: ⭐⭐⭐.

Рассмотреть возможность:

class Point {
    x: number;
    y: number;
}

interface Point3d extends Point {
    z: number;
}

let point3d: Point3d = {x: 1, y: 2, z: 3};

Да, код действителен. Декларация класса создает две вещи: A Тип Представление экземпляров класса и Функция конструктора Отказ Поскольку классы создают типы, вы можете использовать их в тех же местах, которые вы сможете использовать интерфейсы.

🔗 Источник: ThmyscriptLang.org.

Q11: объясните, как и почему мы могли бы использовать декораторы недвижимости в TS?

Тема: Tymdercript Сложность: ⭐⭐⭐.

Декораторы могут быть использованы для изменения поведения класса или стать еще более мощным при интеграции в рамки. Например, если ваша рамка имеет методы с ограниченными требованиями доступа (только для администратора), было бы легко написать @Admin Метод декоратор, чтобы отрицать доступ к неамериканским пользователям или @owner Декоратор позволяет только владельцу объекта возможность его модифицировать.

class CRUD {
    get() { }
    post() { }

    @admin
    delete() { }

    @owner
    put() { }
}

🔗 Источник: www.sitepen.com.

Q12: категорически набираются функции в качестве возможных параметров в Teadercript?

Тема: Tymdercript Сложность: ⭐⭐⭐.

Рассмотрим код:

class Foo {
    save(callback: Function) : void {
        //Do the save
        var result : number = 42; //We get a number from the save operation
        //Can I at compile-time ensure the callback accepts a single parameter of type number somehow?
        callback(result);
    }
}

var foo = new Foo();
var callback = (result: string) : void => {
    alert(result);
}
foo.save(callback);

Можете ли вы сделать параметр результата в Сохранить Функция безопасной тип? Перепишите код, чтобы продемонстрировать.

В TearkScript вы можете объявить свой Тип обратного вызова нравиться:

type NumberCallback = (n: number) => any;

class Foo {
    // Equivalent
    save(callback: NumberCallback): void {
        console.log(1)
        callback(42);
    }
}

var numCallback: NumberCallback = (result: number) : void => {
    console.log("numCallback: ", result.toString());
}

var foo = new Foo();
foo.save(numCallback)

🔗 Источник: stackoverflow.com.

Q13: Как вы можете разрешить классы, определенные в модуле для доступных за пределами модуля?

Тема: Tymdercript Сложность: ⭐⭐⭐.

Классы определяют в модуле доступны в модуле. За пределами модуля вы не можете получить доступ к ним.

module Vehicle {
    class Car {
        constructor (
            public make: string, 
            public model: string) { }
    }
    var audiCar = new Car("Audi", "Q7");
}
// This won't work
var fordCar = Vehicle.Car("Ford", "Figo");

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

module Vehicle {
    export class Car {
        constructor (
            public make: string, 
            public model: string) { }
    }
    var audiCar = new Car("Audi", "Q7");
}
// This works now
var fordCar = Vehicle.Car("Ford", "Figo");

🔗 Источник: http://www.talkingdotnet.com.

Q14: Typeycript поддерживает перегрузку функций?

Тема: Tymdercript Сложность: ⭐⭐⭐.

Да, Typeyctry делает поддержку функции перегрузки, но реализация немного отличается, если мы сравним его с языками OO. Мы создаем только одну функцию и ряд деклараций, чтобы TymerctScript не дает компиляционные ошибки. Когда этот код компилируется на JavaScript, одна конкретная функция будет видна. Как функция JavaScript может быть вызвана путем передачи нескольких аргументов, она просто работает.

class Foo {
    myMethod(a: string);
    myMethod(a: number);
    myMethod(a: number, b: string);
    myMethod(a: any, b?: string) {
        alert(a.toString());
    }
}

🔗 Источник: ThmyscriptLang.org.

Q15: объясните, почему этот код помечен как неправильный?

Тема: Tymdercript Сложность: ⭐⭐⭐⭐.

/* WRONG */
interface Fetcher {
    getObject(done: (data: any, elapsedTime?: number) => void): void;
}

Не используйте Дополнительные параметры в обратных вызовах, если вы действительно это не имеете в виду. Этот код имеет очень конкретное значение: сделано Обратный вызов может быть вызван с 1 аргументом или может быть вызван 2 аргументами. Автор, вероятно, намеревался сказать, что обратный вызов может не заботиться о ElapsedteTime Параметр, но нет необходимости делать параметр необязательно выполнить это – всегда законно предоставить обратный вызов, который принимает меньше аргументов.

🔗 Источник: ThmyscriptLang.org.

Q16: Как бы вы перегружете конструктор класса в TypeyctScript?

Тема: Tymdercript Сложность: ⭐⭐⭐⭐.

Tymdercript Позволяет объявлять перегрузки, но у вас может быть только одна реализация, и эта реализация должна иметь подпись, совместимую со всеми перегрузками. Некоторые методы для перегрузки конструктора являются:

  • с дополнительным параметром, как в
class Box {
    public x: number;
    public y: number;
    public height: number;
    public width: number;

    constructor();
    constructor(obj: IBox); 
    constructor(obj?: any) {    
        this.x = obj && obj.x || 0
        this.y = obj && obj.y || 0
        this.height = obj && obj.height || 0
        this.width = obj && obj.width || 0;
    }   
}
  • Параметры по умолчанию
class Box {
    public x: number;
    public y: number;
    public height: number;
    public width: number;

    constructor(obj : IBox = {x:0,y:0, height:0, width:0}) {    
        this.x = obj.x;
        this.y = obj.y;
        this.height = obj.height;
        this.width = obj.width;
    }   
}
  • Дополнительные перегрузки как статические фабричные методы
class Person {
    static fromData(data: PersonData) {
        let { first, last, birthday, gender = 'M' } = data 
        return new this(
            `${last}, ${first}`,
            calculateAge(birthday),
            gender
        )
    }

    constructor(
        public fullName: string,
        public age: number,
        public gender: 'M' | 'F'
    ) {}
}

interface PersonData {
    first: string
    last: string
    birthday: string
    gender?: 'M' | 'F'
}


let personA = new Person('Doe, John', 31, 'M')
let personB = Person.fromData({
    first: 'John',
    last: 'Doe',
    birthday: '10-09-1986'
})
  • используя профсоюзные типы
class foo {
    private _name: any;
    constructor(name: string | number) {
        this._name = name;
    }
}
var f1 = new foo("bar");
var f2 = new foo(1);

🔗 Источник: stackoverflow.com.

Q17: В чем разница между утверждениями «Интерфейс VS типа»?

Тема: Tymdercript Сложность: ⭐⭐⭐⭐.

interface X {
    a: number
    b: string
}

type X = {
    a: number
    b: string
};

В отличие от интерфейсной декларации, который всегда вводит названный тип объекта, Декларация типа псевдонима может представить Имя Для любого типа типа, включая примитивные, союзные и пересеченные типы.

Используя тип вместо интерфейса Следующие возможности теряются:

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

🔗 Источник: stackoverflow.com.

Q18: объясните, когда использовать ключевое слово «DECLARE» в Teadescript

Тема: Tymdercript Сложность: ⭐⭐⭐⭐⭐.

Типографы Объявить Ключевое слово используется для объявления переменных, которые могут не произойти из файла TeampScript.

Например, давайте представим, что у нас есть библиотека под названием MyLibrary У этого нет файла объявления Teampcript и имел пространство имен, называемое MyLibrary в глобальном пространстве имен. Если вы хотите использовать эту библиотеку в вашем TyerkScript Code, вы можете использовать следующий код:

declare var myLibrary;

Тип, который Typeyctle Runtime даст MyLibrary Переменная – это любой тип. Проблема здесь заключается в том, что у вас не будет Intellisense для этой переменной в разработке времени, но вы сможете использовать библиотеку в вашем коде. Другой вариант, чтобы иметь то же поведение без использования ключевого слова DECLARE, просто использует переменную с любым типом:

var myLibrary: any;

Оба образца кода приведут к тому же выводу JavaScript, но и Объявить Пример более читаемый и выражает Окружающая декларация Отказ

🔗 Источник: stackoverflow.com.

Q19: Что такое Combians в типографии и когда их использовать?

Тема: Tymdercript Сложность: ⭐⭐⭐⭐⭐.

Обиты или Окружающие декларации Являются ли способ сказать Teamplectry Compiler, который существует фактический исходный код в другом месте. Декларации окружающей среды помогают беспрепятственно интегрировать другие библиотеки JS в Typeycript.

Декларации окружающей среды являются Конвенцией, хранятся в файле декларации типа с Д.Тс расширение. Синтаксис для объявления переменных или модулей окружающей среды будет следующим:

declare module Module_Name {
}

Файлы окружающей среды должны быть упомянуты в файле Client TeampStry, как показано на рисунке

/// 

🔗 Источник: stackoverflow.com.

Q20: Можно ли генерировать файлы объявления Teamscript из JS библиотеки?

Тема: Tymdercript Сложность: ⭐⭐⭐⭐⭐.

JavaScript не всегда содержит достаточно типа информации для Compiler TypeyScript для вывода структур в вашем коде – поэтому автоматически генерируя определение на основе JavaScript, редко вариант, но вы можете попробовать:

  • Microsoft/DTS-GEN – Официальная отправная точка Microsoft использует при создании типов

  • dtsmake – Это выглядит очень многообещающе. Это зависит от Ternjs, которые некоторые редакторы используют для предоставления автозаполнения для кода JS.

🔗 Источник: stackoverflow.com.

Спасибо 🙌 Для чтения и удачи в интервью! Убедитесь, что вопросы и ответы на 👉 www.fullstack.cafe.