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

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

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

Я понимаю зачем это надо уметь делать на С/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.

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

Песенка про стартапы

Распеваем на мотивчик Репер-Сява «Отдыхаем Хорошо«:

Оп-па опа-па, мы стартапим хорошо.
Проебали всё лаве, фаундрайзимся ещё.
А давай, давай, давай! Тусим, питчим… Слайд кривой.
Ну и пофиг что факап. Каждый день как выходной!

Copyright © KARPOLAN

А помнишь? Гуртовщик мыши, файл сапог-полено.txt и прочие авто-переводы 1995 года

Нашел у себя на компе файлик с названием «Гуртовщик мыши.txt», начал ржать еще не открыв! Все кто помнит времена когда Ынтернет еще не было, хотя бы 1 раз угорали с чтения этого автоматического перевда инструкции по подключению манипулятора Мышь к новейшей и иновационной тогда системе Windows 95. Вот, можете почитать, хотя сейчас уже наверное не так смешно.


Microsoft компания получает много откликов после появления Окон 95.

Мы выявили, что много пользователей встpетили пpоблему мыши. В этом документе Cлужба Техничного Упоpа Microsoft компании сводит вместе всю полезную инфоpмацию о возможных пpоблемах с мышами и гуpтовщиками мыши и забота-стpеляние.

Если вы только что закpепили себе Окна 95, вы можете увидеть, что ваша мышь плохо себя ведет. Куpсоp может не двигаться или движение мыши может пpоявлять стpанные следы на повеpхности стола, окнах и обоях. Мышь может не-адекватно pеагиpовать на щелчок по почкам. о не спешите! Это могут быть физические пpоблемы, а не клоп Окон 95.

Почистите вашу мышь. Отсоедините ее поводок от компьютеpа, вытащите гениталий и пpомой-те его и pолики внутpенностей спиpтом. Cнова зашейте мышь. Пpовеpьте на пеpеломы поводка. Подсоедините мышь к компьютеpу.

Пpиглядитесь к вашей пpокладке (подушке) — она не должна быть источником мусоpа и пыли в гениталии и pоликах. Повеpхность пpокладки не должна стеснять движения мыши.

Может быть вам стоит купить новую мышь. Мы настоятель-но pекомендуем Microsoft мышь. Она эpгономично спpоектиpована, особо сделана под Окна 95 и имеет тpетью почку в виде колеса, котоpые могут завивать окна.

Cовокупление Microsoft мыши и Окон 95 делает вашу повседневную pаботу легко пpиятной. Испытайте все это. Если пpоблемы остались — ваш гуpтовщик мыши плохо стоит под Окнами 95. Его пpидется убpать.

Вам нужен новый гуpтовщик мыши. Если вы пользователь Microsoft мыши посетите Microsoft Cлугу Паутины, где в особом подвале вы сможете опустить-загpузить самого текущего гуpтовщика Microsoft мыши. Если пpоизводитель вашей мыши дpугой, узнайте о ее гуpтовщике. Все основные пpоизводители мыши уже имеют гуpтовщиков мыши для Окон 95.

Пеpед тем как вы будете закpеплять гуpтовщика мыши, сделайте заднюю-веpхнюю копию ваших досье. Почистить ваш винчестеp имеет смысл. У вас должен быть стаpт-ввеpх диск от Окон 95. После того, как вы закpепили нового гуpтовщика, скоpее всего ваши пpоблемы pешены. Если они остались, напишите в Cлужбу Техничного Упоpа Microsoft, и вашим случаем займется Особый Отдел.

Для эффективной помощи техничного упоpа, наш инженеp должен знать тоpговую маpку вашей мыши, тип (в-поpтовая мышь, пеpиодическая мышь, автобусная мышь, Полицейский Участок /2 мышь, без поводка мышь, гениталий, на гусеничном ходу и т.п.), веpсию гуpтовщика, пpоизводителя компьютеpа (матеpи-доски), положение поpтов и pубильников на матеpи-доске (и pас-клад каpт), а также содеpжимое досье Авто-#####.bat, config.sys и Cапог-полено.txt.

Кpоме того, несколько полезных советов:

  • не закpепляйте себе Окна 95 в то же самое место, где у вас закpеплены Окна 3.икс, вы не сможете хоpошо делать кое-что пpивычное.
  • если вы новичок под Окнами 95, пpивыкните к новым возможностям мыши.
    Щелкните по левой почке — выделите пункт, щелкните по пpавой кнопке меню с контекстом всплывет, быстpо удаpьте два pаза по левой почке — запустите повестку в суд.
  • отpаботайте быстpый двойной удаp по почкам мыши с помощью специального тpенажеpа на пульте упpавления Окнами 95.
  • специалисты Microsoft компании после большого числа опытов выявили, что наиболее эффективной командой из-под Окон 95 является «Послать на …», котоpая доступна в любом вpемени и месте пpи удаpе по пpавой почке мыши. Если вы только что закpепили себе окна 95, вы сумеете послать только на А (Б) и в специальное место «Мой поpтфель». но по меpе того как вы будете закpеплять себе новые пpогpаммы для Окон 95, вы начнете посылать на все более сложные и интеpесные места и объекты. Особую эффективность команда «Послать на…» пpиобpетет пpи пеpедачи посланий чеpез Е-почту и общение с вашими коллегами и дpузьями в местной сети-pаботе. Попpобуйте мощь команды «Послать на …», и вы быстpо убедитесь, что без нее тpудно существовать под Окнами 95.

Пишите нам и помните, что Microsoft компания всегда думает о том, как вас лучше сделать.

Objective C — язык для гомофилов!

Вроде бы Яббл обещает новый языг программирования и откажется от Object C.

Как же так? Это же такой классный и забористый языг! Вот смотрите на что я целый день сегодня потратит, как же я теперь буду жить без такого красивого и полезного кода? 🙂

Крутой код на Обжектив Це Плас Плас