Оригинал: SWE interview in Saudi Arabia / программирование :: it-юмор :: перевел сам :: много букв :: профессиональный юмор :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek программирование профессиональный юмор много букв перевел сам 

//Простые вопросы из разных собеседований:


/******************/
/* СТРАННОСТИ КОДА */
/******************/


//Задача: Найдите все нечётные числа в промежутке от 0 до 100
for(int i = 1; i >=1 100; i++) {
i = i%1;
int result;
if (result = 1) { int output = result; }
if (result = 0) { i++; }
}
//Я заставил претендента внимательно пройтись по коду... дважды. Это не опечатки, ни "i%1", ни одиночные "=" в последних двух строчках. Это претендент у которого 8 лет опыта.


//Задача: Найдите все нечётные числа в промежутке от 0 до 100
let number = 100;
for(let i = 0; i < number; i++) {
console.log(number[i]);
}
//Претендент сказал, что находить только нечётные числа слишком сложно и таким способом мы находим ВСЕ числа, так что это должно сработать!


//Задача: Найдите все нечётные числа в промежутке от 0 до 100
⟨html⟩
1,3,5...99
⟨/html⟩
//Я сказал: "Это работает, но что если нам понадобится найти все нечётные числа между 0 и 1 миллионом?"
//Претендент, немного подумав: "Тогда писать придётся очень долго."


//Задача: Найдите все нечётные числа в промежутке от 0 до 100
int a = [10];
for(i = 0; i < 10; i++) {
if( (a[i]<0) || (a[i] > 100) ){
exit(0);
}
}
//Думайте сами, что это должно значить. Я и понятия не имею, что это должно делать.


//Задача: Найдите все нечётные числа в промежутке от 0 до 100
function (0,100)
echo odd
//Я спросил претендента, что код вообще должен был делать, на что он ответил: "Я не хочу отвечать как-то помимо этого."
//Я ещё раз попробовал. Тот же претендент, следующая задача: Найдите сумму всех целых чисел в промежутке от 0 до 100
echo sum(0,100)
//Я: "Ладно, и если мы хотим сделать это на Javascript?"
echo sum(0,100)
sum++
//Это был самый опытный претендент, с 19 годами профессионального стажа. Девятнадцать, это не опечатка.
Этот претендент программировал профессионально до того как многие из вас ещё родились.


//Задача: Предположим у вас два целых числа, x и y, y больше чем x. Сложите все числа от x до y.
Пример: Если x равно 1, и y равно 5, тогда сумма будет 1+2+3+4+5.

int num1 = x;
int num2 = y;
for( int i = num1; i>= num2; i++) {
int result = i + (i+1);
i++;
}
//Что тут происходит? Ваша догадка будет хороша настолько же насколько и моя. Претендент и понятия не имелчто этот код должен делать.


//Задача: Сосчитайте от 700 до 200 с помощью уменьшения на 13.
for(int x = 700; x < 700; x--) {
int start = 700;
int increment = 13;
double answer;
answer = start - increment;
if(answer < 0) {
break;
}
}
//Из любопытства я спросил: "А почему ответ это число двойной точности?"
//Претендент: "Потому что надо как-то содержать значение взятое из _двух_ переменных."


//Сделайте стандартную колоду карт. Перемешайте колоду и вытащите случайно две карты. Покажите две карты.
let cards = [
['1','2','3','4','5','6','7','8','9','10','11','12','13'],
['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10','a11','a12','a13']
['b1','b2','b3','b4','b5','b6','b7','b8','b9','b10','b11','b12','b13']
['c1','c2','c3','c4','c5','c6','c7','c8','c9','c10','c11','c12','c13']
];
for(let count = 0; count <=1 ; count ++ ) {
let firstLoop = Math.random(0,3);
let secondLoop = Math. random(0,12);
console.log(cards[firstLoop] [secondLoop]);
}
//Это было медленно и вымученно написано прямо на моих глазах в codeshare. Я хотел спросить почему цикл был использовандля второй части, в которой было всего лишь две карты, в то время как ни одного цикла не было использованодля 52 карт... но я так и не решился.


//Задача: Найдите все нечётные числа между x и y, предпологая что y больше чем x.
var arr = [1, 3, 5, 7, 9];
var numLength = x.length;
var x = x.substr(numLength -1, 1);
var parsed = JSON.parse(x);

for (var i = 0; i < arr.length; i++) {
if(arr[i] === parsed) {
console.log('Starting with an odd number');
for (var i = x; i <= y; i+=2) {
console.log(i)
}
} else {
console.log('Starting with and even number');
var bb = x +1;
for (var i = x; i <= y; i+=2) {
console.log(i)
}
}
};
//Если это вас озадачило, то позвольте объяснить. Претендент берёт последнюю цифру числа x, и проверяет
равна ли она 1/3/5/7/9. Если это так, то к нему добавляется 2, пока вы не достигните числа y. Иначе добавляется 1, чтобы сделать число нечётным и уж потом добавляются 2 до тех пор пока не достигнет y.
//Несмотря на мелкие ошибки в коде, логика была вполне функциональной, но неэффективной до ужаса.


//Сделайте стандартную колоду карт. Перемешайте колоду и вытащите случайно две карты. Покажите две карты.
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K'];
var arr1 = [];
var arr2 = [];
var arr3 = [];
var arr4 = [];

var one = 'D';
var two = 'H';
var three = 'C';
var four = 'S';

var position = 1;

for (var i = 0; i < arr.length; i++) {
if (position === 1) {
x = one;
} else if (position === 2) {
x = two;
} else if (position === 3) {
x = three;
} else if (position === 4) {
x = four;
}
arr[position].push(arr[i] * x);
position += 1;
};

var fr = math.random();
var finalArr = [];
var newArr = [];
var eeArr = [];

for (var 1 = 0; i < finalArr.length; i++) {
var fr = math.random();
newArr.push({name: finalArr[i], value: fr});
eeArr.push(fr);
};

eeArr.sort();
var yyArr = [];

for (var i = 0; i < newArr.length; i++) {
var index = eeArr.indexOf(newArr[i].value);
newArr.newPos = index;
};
//Узрите этот шедевр! Читайте его медленно и вкушайте каждую строчку, такая красота приходит только раз в жизни.


/*********************/
/* ИНТЕРЕСНЫЕ ЛИЧНОСТИ */
/*********************/


//Задача: Напишите код, который проверяет является ли число нечётным.
//Претендент: Ладно, дайте мне минутку. *звуки печатания*
//Претендент: Мой ответ *голос заметно меняется с говорящего на читающий*

if((i%2)==1) cout⟨⟨i;
//Я *подозреваю, что претендент просто нагуглил это*: Ладно, а можете ли вы объяснить что эта строчка обозначает?
//Претендент: Это означает, что мы находим процент от i в 2.
//Я: Процент? Зачем мы находим "процент"?
//Претендент: Ээээ... Я хотел... эмм.... уууу....
//Я *с приятным голоском, но злобными намерениями*: Я понимаю, что это сложно. Вы когда-нибудь использовали этот
"процентный" оператор раньше?
//Претендент *с заметным облегчением*: Нет, никогда! Это мой первый раз когда я его использовал!
//Я: ...
//Претендент *сообразил что он только что сказал*: Я имел в виду... имел в виду...


//Задача: Найдите все нечётные числа в промежутке от 0 до 100.
//Претендент: Я прошу прощения, но я забыл точную формулу для нахождения нечётных чисел.
//Я: Нечётные числа это 1, 3, 5, и так далее.
//Претендент: Я понял, но я не могу вспомнить формулу, соответственно я не смогу найти эти числа.


//Вопрос: Можете рассказать мне об истории своей профессии?
//Претендент: Я выкладываюсь по полной, чтобы быть уверенным, что в моём коде не так много ошибок, перед тем как он заработает.


//Задача: Сосчитайте от 700 до 200 с помощью уменьшения на 13.
*совсем непонятный код*
//Я: Вы думаете, что оно заработает если я это запущу?
//Претендент: Честно говоря, нет. Я не думаю, что это вообще заработает.
//Я: Почему же?
//Претендент: Там куча синтаксических ошибок.
//Я: Ну а что если мы их исправим, тогда оно заработает?
//Претендент: Все равно не.
//Я: С чего же это?
//Претендент: Там ещё и логические ошибки.


//Претендент: Я программировал на протяжение 10 лет. 5 лет в качестве хобби и 5 профессионально. Я знаю PHP, Ruby,
JS (включая node и angular) , MongoDB, MySQL, PostgreSQL, и много чего ещё.
//Я: Чудесно. Ради чего вы используете свои навыки?
//Претендент: В течение 5 лет, в те, что я работал профессионально, я работал в 4 компаниях в качестве вебдева.
У меня также множество сайтов, созданных с нуля. Некоторые разрабатывал в одиночку, а некоторые находясь в команде
Я занимался одновременно фронт-энд и бэк-энд разработкой. Я готов встретиться с любыми трудностями!
//Я: Ладно. Используя язык на ваш выбор, сможете ли вы найти все нечётные числа между 0 и 100?
//Претендент: *пытается где-то 3 минуты*
//Претендент: Я не могу сделать этого. Мои навыки в математике не столь сильны.


//Эта ситуация произошла с _двумя_ разными претендентами. Их ответы звучали по разному, но посыл был один и тот же.
//Я: Ладно, я хочу дать вам парочку задач по программированию. У вас есть с собой бумага и ручка?
//Претендент: Конечно.
//Я: Хорошо. Используя предпочитаемый вами язык программирования, найдите все нечётные числа между 0 и 100.
//Претендент: Что, прям на бумаге?
//Я: Да. Напишите ваш код сюда и когда закончите зачитайте его мне и тогда мы перейдём дальше.
//Претендент: Но это же невозможно! Как я могу написать код не используя компьютер?


//Задача: Найдите все нечётные числа между 0 и 100. Заметка: это было собеседование по телефону.
//Претендент: А гуглить можно?
//Я: Я пытаюсь оценить ваши умения по программированию, а не по использованию поиска в Google.
//Претендент: Хах, верно! Но если я использую Google, то как вы узнаете?
//Я: Я дам вам похожую задачу, когда наше собеседование будет происходить с глазу на глаз.
//Претендент: Ну тогда я не могу.


//Худшее из худших собеседований, что у меня было и которое действительно заставило меня почувствовать себя плохо, было именно этим. Я пытался запечатлить _настрой_ того, как это проходило, так как мне не довелось увидеть хоть какой-нибудь код.
Некоторые из действий, которые я описываю, это то, что предположительно происходило на другом конце телефона, основываясь на том, что я услышал.
//Я: Здравствуйте! Благодарю, что позволили мне провести собеседование с вами. Вы подготовились? Готовы?
//Претендент: Я готов.
//Я: Отлично! Давайте начнём. *вступление и немного расслабляющей беседы, претендент очень клёвый* Ладно, так
ваше резюме перечисляет около 5 разных языков программирования. Вы хороши во всех из них?
//Претендент: Я хорош в Javascript и PHP, и неплох в Java.
//Я: Хорошо, какой ваш любимый язык?
//Претендент: Конечно же Javascript! Я много проработал на Javascript!
//Я: Это хорошо. Могу ли я дать вам пару задач по Javascript?
//Претендент: *молчит 10 секунд*
//Я: Алло? Вы всё ещё на линии?
//Претендент: Да, да. Я всё ещё на линии!
//Я: Так не возражаете если я дам парочку задач по Javascript?
//Претендент *с нервной дрожью в голосу*: Да, я думаю, я могу попробовать приложить все усилия, чтобы ответить.
//Я *вспоминая себя, не пытаюсь уничижить претендента*: Хорошо, так вы знаете что такое нечётные числа, верно? Ну 1, 3, 5 и так далее?
//Претендент *голос слегка подуспокоился*: Да! Да, я знаю что такое нечётные числа!
//Я: Ладно, моя задача такова. Используя ваш любимый язык, Javascript, сможете ли вы найти все нечётные числа в промежутке от 0 до 100?
//Претендент: *слышимые тяжёлые вздохи, но никаких слов на протяжении 10 секунд*
//Я: Алло?
//Претендент *говорит с большим усилием, голос в сейчас-точно-запаникует режиме*: Я э... Я... нахожу... а... нечётные...
Я... нечётные числа... ухх...
//Я *стараюсь немного проконтроллировать ситуацию*: Всё хорошо. Почему бы вам не потратить несколько минут, чтобы
записать ответ, и уж тогда зачтёте мне, когда закончите и будете готовы?
//Претендент *весь взволнованный и бездыханный*: ДА! Да, да! Я сначала запишу. Ладно! Ладно, я сейчас записываю это!
//На этом моменте, я убедился, что претендент действительно отложил трубку и начал писать. Я мог слышать лёгкие поскрябывания около двух минут, затем более жёсткие поскрябывания в течение минуты, а затем *чёёёёёёрк* *чёёёёёрк* звуки, будто бы кто-то расчерчивает кучу линий на бумаге. Затем наступила минута очень тяжёлого, очень быстрого дыхания, но никаких звуков записывания.
//Претендент *голос совершенно сломлен*: Я думаю я... я... нечётные числа... ааа... Я думаю... эммм...
//Я *совершаю критическую ошибку в суждении вопросом*: Там всё в порядке?
//Претендент: Нет. Нет! НЕТ! Я не могу! Это... не! Как это... нечётные... нечётные числа? Я... Я не могу делать это.
Я не могу это БОЛЬШЕ делать! Простите меня, мне надо идти. Надо идти, сейчас же! Прямо сейчас! Мне НУЖНО идти!
//Я: Ладно, без проблем. Может мы сможем продолжить это попозже.
//Претендент: Да, может завтра. *пииип*
//Претендент *в спокойном, вежливом электронном сообщении, гораздо позже в тот же день*: В этот момент я сожалею, что мне придётся отказаться от собеседования. Тем не менее может найдётся подходящее время когда-нибудь в будущем.


Подробнее
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,программирование,профессиональный юмор,много букв,перевел сам
Еще на тему
Развернуть
мне в такое не верится.
PlayTime PlayTime 19.09.201920:01 ответить ссылка 8.7
Подскажите бога ради, как отключить автоматическое обновление страницы после открытия консоли в Chrome?
K1l0 K1l0 19.09.201920:57 ответить ссылка 0.0
Если у тебя страница не обновляется, а консоль обновляется постоянно, то значит твой хром заражен. Как такое лечить я не нашел, переполз на оперу. Спустя долгое время обнаружил, что эта фигня в хроме прошла.
iNji iNji 20.09.201907:52 ответить ссылка -0.1
Первое имеет асимптоматику O(n), второе не работает при старте с четного.

Правильный ответ вообще должен звучать так https://jsfiddle.net/hb0uvxrk/
mktums mktums 19.09.201921:44 ответить ссылка -5.0
Если докапываться, то тогда уже лучше так https://jsfiddle.net/0zvw9tgo/
Наверное, не знаю JS...
mktums mktums 19.09.201921:59 ответить ссылка -0.6
Ууух, изращения! https://jsfiddle.net/p8vs6kyh/
А зачем в вашем примере for, если по сути, вы написали while? )
Ну если выпендриваться, то можно так:
> function* findOdd (from, to) {
for (let i = from | 1; i <= to; i+= 2) { yield i;
>
console.log(...find0dd(6, 100));
7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
>> Первое имеет асимптоматику O(n)

Ну так и второе то же. O(n) это нижняя граница.
Тут вообще о асимтоматике говорить не приходится, так как говорится о промежутке от 0 до 100, а не промежутке от 0 до n

>> второе не работает при старте с четного.

Задача: Найдите все нечётные числа в промежутке от 0 до 100
Не нужно додумывать в задачу то, чего там не было. Не было задачи найти все числа в промежутке от a до b, где a и b произвольные числа.
int16 int16 19.09.201923:33 ответить ссылка 1.3
ниже была задача - в промежутке x..y, где y больше x.
ну и два варианта решения: попроще с полным перебором всех чисел и условием в цикле, либо чуть сложней с приведением x к нечётному и циклом с итератором, увеличивающимся на 2.
на мой взгляд второе решение плохое тем, что некоторая логика решения осталась вне программы (начало не с 0, а с 1 и увеличение на 2), это все же больше решение человеком, а не программой и не далеко ушло от простого перечисления. а вот решение с делением на остаток норм
pleten pleten 20.09.201915:12 ответить ссылка 0.0
решение с делением на остаток -> решение с остатком от деления
pleten pleten 20.09.201915:24 ответить ссылка 0.0
> Первое имеет асимптоматику O(n), второе не работает при старте с четного.
Ваше решение имеет ровно ту же O(n) и содержит мусор. К примеру if в цикле никогда не вернет false. Решили выпендриться и, в итоге, нахалтурили. Сразу виден недостаток опыта
TheShock TheShock 20.09.201900:19 ответить ссылка -0.2
следующие пары условий тождественны для большинства C-подобных языков программирования.
не стоит другим указывать на недостаток опыта.

if (i % 2)
if (i % 2 === 1)

if (!(i % 2))
if (i % 2 === 0)
Спасибо, капитан. Вам я укажу на недостаток внимательности:

> var start = 0; var end = 100;
var i = start + (-(start % 2) + 1)
for(i; i < end; i += 2) { console.log(!!(i % 2));
>
true
<• undefined
> I
Дональд Кнут как-то сказал нечто вроде: "преждевременная оптимизация — это корень всех зол". Ух как я люблю коллег-"математиков", выябывающихся нотациями Ландау, теорией графов, алгоритмами кратчайшего поиска анального отверстия методом дихотомии, везде сующими циклы с декерментом, и использующих операции побитового сдвига для поиска корня числа...правда, при этом они почему-то умудряются писать бэкенд в виде спринговых контроллеров на 13К строк(по 7К и 6К на два метода), а единственная парадигма программирования, которая им знакома - это процедурщина родом из барсика...но зато я уверен что там прям идеальный код, да. Недаром никто кроме них в это говно не лезет, интеллекта не хватет, видимо.
C4Grey C4Grey 20.09.201900:37 ответить ссылка 1.1
Мы вам перезвоним.
Supert Supert 20.09.201900:44 ответить ссылка 0.0
Мне интересно, как такое возможно? Знакомый отписал что дело в "in Saudi Arabia", но я не убежден.
Helldrow Helldrow 19.09.201920:16 ответить ссылка 0.8
Я хочу там работать кто проведет собеседование со мной?
asdiky asdiky 19.09.201920:19 ответить ссылка 1.9
Сделай вывод всех деревьев рандомного связного графа на прологе.
а как же.. нечетные парные от 1 до бесконечности?
asdiky asdiky 19.09.201923:48 ответить ссылка 1.7
Легко!
Console.Write(allTreeRandKnittedEarl(Pro_log));
Ты не знаешь, что такое Пролог.
Зато он знает просак
suiginto suiginto 03.10.201918:24 ответить ссылка -0.6
А ты знаешь слоупок. Полмесяца назад тему закрыли.
nonnname nonnname 04.10.201904:25 ответить ссылка -0.1
Претендент: ставит телегу впереди лошади.
Что такое SWE?
bryams bryams 19.09.201920:21 ответить ссылка 0.0
Software engineering (Программная инженерия)
Kupull Kupull 19.09.201920:25 ответить ссылка 0.2
Я на собеседовании тоже всякой херни наговорил, да и после собеседования, да и когда устроился, да и до сих пор. Вообще это сложно, говорить сложно. А вот решать задачи норм, и что-то слабо верится, что кто-то бы не смог найти нечетные числа, да пройти с шагом -13. Банальные параметры цикла с выводом.

Помню дали задачку закрутить одномерный массив в виде спирали в двумерный. Вот я там костыли нахерачил...
Бля, я задачки со спиралями делал в качестве лабораторных на первом курсе. Там граничные случаи плавающие, вычисляются по формулам от размеров массива и его сужающихся стенок. В общем, это далеко не тривиальная задача для 10 минут кода на бумаге.
В смысле? Что там не тривиальное? Писал "генератор лабораторок" со всеми типовыми задачками первых трех курсов электротеха, с 4мя разными стилями программирования, с комментариями и без.
В смысле там что-то нетривиальное? Двумерный массив и два цикла нетривиальны?
Городскую олимпиаду по информатике на бумаге решали (т.е. без возможности проверить), а Вы про заполнить спиралькой.
Stenly76 Stenly76 19.09.201922:24 ответить ссылка -5.2
Что нетривиального: 10 минут на бумаге для человека, который это не делал до этого.

Генераторы заданий с решениями под всякие математические, алгоритмические и эконометрические задачи также пилил, и это было намного проще, чем сидеть перед парой скучающих людей и писать код на обрывке бумаги.
и тут сообразил, что и одного цикла хватит, да :) сорь, если грубо
Stenly76 Stenly76 19.09.201922:30 ответить ссылка -0.3
понимаешь, это задачи на логику.
Если ты не можешь решить такую задачку то ожидать от тебя "офигенный оптимизированный SQL запрос" просто глупо.
Также как и человек может знать как найти четные числа но при этом не уметь писать SQL запросы, опять таки не вижу никакой логики.

Мне кажется нужно задавать более профильные вопросы, например давать код и чтоб собеседник описал его работу в подробностях или предложил лучший вариант. А то брать на работу человека который может только считать до 100 и находить четные числа и все такое себе, а то работал я в одной конторке в которую брали на работу по сертификатам и из за этого попадали куча неучей с купленными сертификатами которые умели что-то только на бумаге.
ggghh ggghh 19.09.201921:08 ответить ссылка -1.9
"Также как и человек может знать как найти четные числа но при этом не уметь писать SQL запросы, опять таки не вижу никакой логики."

Отсутвие элементарной логики означает что ничего сложного ты точно не сделаешь.
Наличие элементарной логики не означает что ты сделаешь что то сложное. Может на элементарной логике все и заканчивается :)
Логично
>Также как и человек может знать как найти четные числа но при этом не уметь писать SQL запросы, опять таки не вижу никакой логики.
Человек разобрался с четными числами - уж SQL запрос он как-нибудь напишет.

>например давать код и чтоб собеседник описал его работу в подробностях или предложил лучший вариант.
И нанять на работу того, которому этот код, так уж сложилось, оказался более знакомым. Именно поэтому на собеседовании и просят находить четные числа да деревья ворочать - потому, что хотят найти лучшего кодера, а не кодера, который на прошлой работе имел дело с ровно таким же кодом, как на интервью.
Так сосчитай до 100 на SQL, там же говорят что можно исопльзовать любой язык. Они не могут этого на своём любимом языке сделать, на своём профильном направлении.
DrXak DrXak 20.09.201911:27 ответить ссылка 0.0
Я знаю людей, которые 5+ лет запросы пишут, но не знакомы с рекурсией. Про pivot через MAX()/SUM()/etc я и говорить не буду, так мне одного раза хватило запустить таблицу, которая формировалась через Select (Select xxx From t1) g1, (Select xxx From t1) g1...
WITH RECURSIVE tl (numb) AS (
SELECT 1 AS numb UNION ALL
SELECT tl.numb + 1 FROM tl WHERE numb < 100
SELECT numb FROM tl WHERE mod (numb,2) = o|
Недавно проходил собеседование на стажерство. Были вопросы про алгоритмы и нужно было объяснить как работает код из тестового (ну просто обсуждение было), а потом он сломал мой код в одной из задач( По SQL были задачи, он посмотрел и начал спрашивать как это можно оптимизировать, что бы был тот же вывод. Короче я хз где такие задачи как в посте спрашивают, но насчет задач на логику не совсем согласен, ибо иногда на простых задачах ловишь дикий тупняк.
Gissh Gissh 19.09.201921:15 ответить ссылка 1.0
С чего вы взяли, что все люди из поста должны писать SQL запросы? Может они как раз должны на том же JS программировать? И если человек не может написать один сраный цикл и один сраный if, то сомневаюсь, что он сможет даже данные из ответа сервера в форму затолкать.
Я привел только свой пример, как я писал выше человек может тупо выучить наизусть какие-то ответы на вопросы при этом не умея программировать. Уж лучше сказать ему "сделай форму и отправь данные" чем "найди четные и нечетные числа".
ggghh ggghh 19.09.201921:31 ответить ссылка -1.3
Мне доводилось присутствовать на собеседованиях, которые проводили более опытные коллеги. Отличить человека, который нагуглил, от человека, который знает и имеет опыт, очень легко. Подобные задачки тупо проверяют, как человек умеет думать бошкой.
По роду деятельности сейчас провожу технические интервью в компанию где работаю - крупная галера. Если есть два кандидата и оба приблизительно одинакового уровня в плане знания технологий но один из них лучше понимает и решает алгоритмы(не просто решение но и понимание сложности итп) то выбор всегда будет в пользу кандидата знающего алгоритмы. Потому что технологии он подтянет по ходу дела, а фундаментальные знания вряд ли. Как бы кодить и знать баззворды можно и обезьяну научить.

Как раз на этой неделе собеседовал на мидла парня, знания у него так себе тк он работал в энтепрайз-говне где развитие и обучению новому труднодостижимо , но он всю свою трудовую жизнь, но он с младых лет задрачивал алгоритмы и на интервью это видно, он прошел и прошел именно благодаря задрачиванию алгоритмов. Плюс я прошел достаточно много разных интервью за свою карьеру, в основном в Европе и могу сказать там точно такой же подход как я и описал, хочешь норм работу задрачивай алгоритмы.
А можете, если не секрет, рассказать о роде деятельности на крупной галере и о том, где требуется знание алгоритмов и сложностей? Чисто из любопытства. Не имею большого опыта, но практически везде, где приходилось работать, от веба и андроида до контроллеров и си, суть работы сводилась к большому количеству довольно простых "лобовых" решений, а стек или связанный список - самая сложная структура данных. К сожалению.
Сейчас Java technical lead, примеры: например оптимизация складских процессов, Оптимизация выборки и получения данных со стороны заказчиков у которых очень слабое и устаревшее железо. Из контор куда собеседовался - DeliveryHero в команду логистики там очень много чисто алгоритмических проблем тк курьеру могут приходить заказы когда он уже доставляет заказ его маршрут должен оптимизироваться на лету с учетом разных факторов и курьеров в одной локации могут быть десятки.
коментом выше ты открестился от энтерпрайза, а теперь у тя ява, складской учет, логистика. что это, если не энтерпрайз?
villy villy 20.09.201910:47 ответить ссылка 0.0
Это энтерпрайз с точки зрения бизнеса, для меня энтерпрайз в плохом смысле это когда легаси которому уже 7-10 лет в котором каждый новый лид приходил и своего говна горку насыпал, или когда на апрув фичи вы тратите в 3 раза больше времени чем на саму фичу, итп. С складской логистикой работал в очень прогрессивной компании где на то время стек был максимально актуальный и писалось все на микросервисной архитектуре - соответсвенно при написании микросервиса тебе не надо было тащить за собой большую часть легаси.
Ты не путай, это про всякие "сортировки пузырьком" и прочие алгоритмы ещё можно подискутировать, но приведённые задачи - просто тест на наличие хотябы зайчатков разума на уровне первого класса и знания самого базового синтаксиса. Если человек даже этого не может, то он какбэ вообще не способен никакой работы выполнять по определению.
AjiTae AjiTae 19.09.201922:35 ответить ссылка 2.4
Деление с остатком довольно часто используется. Суть задачи не в знание, а умении придумать логику
Заебали.
Я не программист, единственная шутка которую я умею - 2 цикла, перебирающие айпи адреса для ssh
Завтра, с одинадцати до двенадцати тридцати, с двумя перекурами, я решу все эти задачи на баш скрипте.
noavatar noavatar 19.09.201920:44 ответить ссылка -0.4
На баше кодить больно, друже. Если нужно что-то сложнее поочередного вызова каких-нить утилит с какими-то параметрами, то вместо этого набора костылей выбирай любой полноценный скриптовой язык и фигачь, сэкономишь время и нервы.
AjiTae AjiTae 19.09.201922:41 ответить ссылка -0.1
Я не кодер вообще, просто баш это единственное, что есть у меня под рукой.
Сейчас, заправлюсь кофе, сделаю текучку и займусь задачками.
noavatar noavatar 20.09.201909:33 ответить ссылка -0.1
Если есть баш, то и хотяб пуфон обычно имеется.
AjiTae AjiTae 20.09.201909:50 ответить ссылка -0.1
>На баше кодить больно
попробуйте cmd, особенно парсинг вывода команд. потом баш - эторадость-радость :)
avelor avelor 20.09.201914:49 ответить ссылка 0.0
Да даже чистый sh радость по сравнению с cmd, кто спорит. Но кодить стоит всё-же на языке для того предназначенном. Я сам одно время чудеса на баше выпиливал, и именно от этого опыта отталкиваюсь: взял бы я нормальный язык сразу - сэкономил бы кучу времени и фейспалмов.
AjiTae AjiTae 20.09.201921:25 ответить ссылка 0.0
Ебашь, мы подождем!
DutchL DutchL 19.09.201922:44 ответить ссылка 0.3
башь норм я такие вещи видел в проде что охуевал.
но не скажу что просто, читать - глаза сломаешь.
На работе время от времени проводим собеседования, поверьте - это абсолютно "жизненно"ю
Написал бы на собеседовании для джоя:

a = ord('a')
t = ''.join([chr(i) for i in range(a,a+26)])
b = (19,8,15,8,3,14,17)
for c in b:
print(t[c])
Headballz Headballz 19.09.201921:47 ответить ссылка -0.6
Плиз, объясните кто-нибудь, что делает этот код?
tovix tovix 20.09.201909:56 ответить ссылка -0.1
Выводит в консоль: "ты пидор!"
А, по русски. Меня число 26 смутило и я подумал что это английский. Только тогда получается "типигос", если а=0 и ё пропускаем. Походу с индексами напутано
tovix tovix 20.09.201911:44 ответить ссылка 0.0
Не напутано.
Выводит
t
i
p
i
d
o
r
А, по английски всё таки. Точно - я когда первый раз пробовал, то взял "a" за 1 вот и не понял
tovix tovix 20.09.201912:46 ответить ссылка 0.0
на бумаге? ручкой(карандашом)? это невозможно!
20 лет назад было возможно, так почему сейчас нет?
Ну вообще-то да. Потому что ты автоматом будешь закрывать скобки, а на бумаге впихнуть уже нельзя
Автоматом закрывал бы лет 5 назад, теперь совсем бы не закрывал от привычки к умным иде
tovix tovix 20.09.201911:45 ответить ссылка 0.3
для Ы от 1 до 100 делать
если остаток Ы делить на 2 равно 1 то вывод Ы
повторить
nonnname nonnname 20.09.201912:44 ответить ссылка -0.1
Ох эти 1с'ники
Это псевдокод. И я сделал ошибку.
синтаксический сахар наше всё

list(range(2, 100, 2))
medelect medelect 19.09.201922:51 ответить ссылка 0.1
Эти вроде чётные? А требуются нечётные. Хотя там столько бреда написано.
list(range(1, 100, 2))
Держи своего питона в руках. В посте вроде речь про JS.
один адекватный нешелся:
⟨html⟩
1,3,5...99
⟨/html⟩
villy villy 19.09.201923:59 ответить ссылка 0.8
> Найдите все нечётные числа в промежутке от 0 до 100

А, легкотня, ща сделаю. Думаю, оптимальней всего тут рекурсией будет. Или даже без рекурсии никак не обойтись. Ща, минуту...

const A = 0, b = 100;
function Recursia(...x) {
let odd = 1;
...
if (Math.isOdd(x)) odd... +1? блин, не помню, я бы загуглил разок, можно с телефона?
}

я думаю, тут промисами нужно, да?
Вааааау, текст а не картинка с текстом? Я реально вижу это? О_о
Причём по ссылке оригинал как раз картинкой - автор перевода вообще бог!
tovix tovix 20.09.201910:03 ответить ссылка 1.5
А расставление цвета чего стоит
Не могу понять блок про претендента с "function (0,100) echo odd". Это каким то образом мудро или как то по особому тупо?
tovix tovix 20.09.201909:46 ответить ссылка 0.0
Тупо, по особому: представь что ты сел перед компьютером и говоришь в монитор: "хочу нечётных чисел".
Данный кадр добивался чего-то подобного.
Kupull Kupull 20.09.201913:11 ответить ссылка 0.6
А, а я уж боялся, что тут какие-то сакральные знания, которыми я не обладаю. Или что он сослался на то, что у него уже написаны такие функции и он просто их вызывает. Попытка найти связь между Javascript и sum++ окончательно сломала мне мозг
tovix tovix 20.09.201913:23 ответить ссылка 0.3
Есть одна вещь, где это работает. И как знак равенства, и как присваивания.
FOR i = 0 TO 100
IF Mod(i, 2) = 0 THEN i = 0
NEXT
Иисyc Иисyc 20.09.201911:41 ответить ссылка 0.1
Нечётные числа на F#
[1..2..100]
DrXak DrXak 20.09.201911:45 ответить ссылка 0.0
К стати вот вам таска:
Есть список ну или аррей
Пересобрать в двумерный, с изменяемой шириной.
Вечером выложу "сахарную" версию)
medelect medelect 20.09.201914:26 ответить ссылка -0.1
Что-то ты медлишь.
vect = 6
data = list(range(77))
data_packed_rows = [data[i::vect] for i in range(vect)]
data_packed_columns = [data[0+vect*i:vect+vect*i] for i in range(1, len(data)//vect+1)]

сорян, дедлайн на пятках, два пакующих генератора
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
gkoberger commented on Mar 18, 2013
Owner © • ••
Okay this is awesome. I'll test it out and merge when I get home. Thanks!
v1993 commented on Dec 17, 2020	© -
Sorry for rushing this a bit, but got home yet?
подробнее»

песочница программирование geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор терпение профессиональный юмор it юмор

gkoberger commented on Mar 18, 2013 Owner © • •• Okay this is awesome. I'll test it out and merge when I get home. Thanks! v1993 commented on Dec 17, 2020 © - Sorry for rushing this a bit, but got home yet?
Мой десятилетий сын программирует лучше вас.
10 июля Newbie: So which programming language should I learn first?
Programmers: Абстракция
BankAccount
accountNo
balance
Robert's Account		Julia’s Account
A8624		A6363
$500		$800
5/3/2015		7/8/2014
Checking		Checking
Инкапсуляция
BankAccount
accountNumber
balance
dateOpened
accountType
open{)
close()
deposit!)
withdraw!)
Наследование
Person	
name	
email
подробнее»

geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор ООП программирование профессиональный юмор

Абстракция BankAccount accountNo balance Robert's Account Julia’s Account A8624 A6363 $500 $800 5/3/2015 7/8/2014 Checking Checking Инкапсуляция BankAccount accountNumber balance dateOpened accountType open{) close() deposit!) withdraw!) Наследование Person name email