//Простые вопросы из разных собеседований:
/******************/
/* СТРАННОСТИ КОДА */
/******************/
//Задача: Найдите все нечётные числа в промежутке от 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,Прикольные гаджеты. Научный, инженерный и айтишный юмор,программирование,профессиональный юмор,много букв,перевел сам
Правильный ответ вообще должен звучать так https://jsfiddle.net/hb0uvxrk/
Ну так и второе то же. O(n) это нижняя граница.
Тут вообще о асимтоматике говорить не приходится, так как говорится о промежутке от 0 до 100, а не промежутке от 0 до n
>> второе не работает при старте с четного.
Задача: Найдите все нечётные числа в промежутке от 0 до 100
Не нужно додумывать в задачу то, чего там не было. Не было задачи найти все числа в промежутке от a до b, где a и b произвольные числа.
ну и два варианта решения: попроще с полным перебором всех чисел и условием в цикле, либо чуть сложней с приведением x к нечётному и циклом с итератором, увеличивающимся на 2.
Ваше решение имеет ровно ту же O(n) и содержит мусор. К примеру if в цикле никогда не вернет false. Решили выпендриться и, в итоге, нахалтурили. Сразу виден недостаток опыта
не стоит другим указывать на недостаток опыта.
if (i % 2)
if (i % 2 === 1)
if (!(i % 2))
if (i % 2 === 0)
Console.Write(allTreeRandKnittedEarl(Pro_log));
Помню дали задачку закрутить одномерный массив в виде спирали в двумерный. Вот я там костыли нахерачил...
В смысле там что-то нетривиальное? Двумерный массив и два цикла нетривиальны?
Городскую олимпиаду по информатике на бумаге решали (т.е. без возможности проверить), а Вы про заполнить спиралькой.
Генераторы заданий с решениями под всякие математические, алгоритмические и эконометрические задачи также пилил, и это было намного проще, чем сидеть перед парой скучающих людей и писать код на обрывке бумаги.
Если ты не можешь решить такую задачку то ожидать от тебя "офигенный оптимизированный SQL запрос" просто глупо.
Мне кажется нужно задавать более профильные вопросы, например давать код и чтоб собеседник описал его работу в подробностях или предложил лучший вариант. А то брать на работу человека который может только считать до 100 и находить четные числа и все такое себе, а то работал я в одной конторке в которую брали на работу по сертификатам и из за этого попадали куча неучей с купленными сертификатами которые умели что-то только на бумаге.
Отсутвие элементарной логики означает что ничего сложного ты точно не сделаешь.
Наличие элементарной логики не означает что ты сделаешь что то сложное. Может на элементарной логике все и заканчивается :)
Человек разобрался с четными числами - уж SQL запрос он как-нибудь напишет.
>например давать код и чтоб собеседник описал его работу в подробностях или предложил лучший вариант.
И нанять на работу того, которому этот код, так уж сложилось, оказался более знакомым. Именно поэтому на собеседовании и просят находить четные числа да деревья ворочать - потому, что хотят найти лучшего кодера, а не кодера, который на прошлой работе имел дело с ровно таким же кодом, как на интервью.
Как раз на этой неделе собеседовал на мидла парня, знания у него так себе тк он работал в энтепрайз-говне где развитие и обучению новому труднодостижимо , но он всю свою трудовую жизнь, но он с младых лет задрачивал алгоритмы и на интервью это видно, он прошел и прошел именно благодаря задрачиванию алгоритмов. Плюс я прошел достаточно много разных интервью за свою карьеру, в основном в Европе и могу сказать там точно такой же подход как я и описал, хочешь норм работу задрачивай алгоритмы.
Я не программист, единственная шутка которую я умею - 2 цикла, перебирающие айпи адреса для ssh
Завтра, с одинадцати до двенадцати тридцати, с двумя перекурами, я решу все эти задачи на баш скрипте.
Сейчас, заправлюсь кофе, сделаю текучку и займусь задачками.
попробуйте cmd, особенно парсинг вывода команд. потом баш - эторадость-радость :)
но не скажу что просто, читать - глаза сломаешь.
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])
Выводит
t
i
p
i
d
o
r
если остаток Ы делить на 2 равно 1 то вывод Ы
повторить
list(range(2, 100, 2))
⟨html⟩
1,3,5...99
⟨/html⟩
А, легкотня, ща сделаю. Думаю, оптимальней всего тут рекурсией будет. Или даже без рекурсии никак не обойтись. Ща, минуту...
const A = 0, b = 100;
function Recursia(...x) {
let odd = 1;
...
if (Math.isOdd(x)) odd... +1? блин, не помню, я бы загуглил разок, можно с телефона?
}
я думаю, тут промисами нужно, да?
Данный кадр добивался чего-то подобного.
FOR i = 0 TO 100
IF Mod(i, 2) = 0 THEN i = 0
NEXT
[1..2..100]
Есть список ну или аррей
Пересобрать в двумерный, с изменяемой шириной.
Вечером выложу "сахарную" версию)
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)]
сорян, дедлайн на пятках, два пакующих генератора