Код этот в ядре Линукса используется. Да и мы у себя в проекте тоже юзаем, вполне устраивает.АццкоМото wrote:в общих чертах надо знать всемolis wrote:Может быть Java- программистам и не нужно знать все эти указатели, списки и т.п. "низкоуровневые" вещи ?
Зато они знают Hadoop, Spring, Hibernate и т.п. Голова то чай не резиновая.
но есть другой вопрос: от старья типа того кода, что вы привели нужно уходить. ибо код хороший, но говно. ну как можно смотреть без слез на while(0) например? а все потому что выбранный инструмент устарел. он, блин, ассемблер заменял в 1972 что ли году, а не дворе подготовка 2015 году
(зы, кто не знает банальщину типа списков-хэшмепов и про знание хадупов с микросервисами врет)
Задачи для IT интервью
-
- Уже с Приветом
- Posts: 4935
- Joined: 02 Mar 2002 10:01
- Location: UK
Re: Задачи для IT интервью
-
- Уже с Приветом
- Posts: 4935
- Joined: 02 Mar 2002 10:01
- Location: UK
Re: Задачи для IT интервью
Да ладно, не обижайтесь. Я ж не со зла.Сабина wrote:Ооо, пошло поехало. А исходники надо редактировать vi-ем, если уж так не повезло и жизнь заставила писать на это жабе ?olis wrote:Может быть Java- программистам и не нужно знать все эти указатели, списки и т.п. "низкоуровневые" вещи ?
Зато они знают Hadoop, Spring, Hibernate и т.п. Голова то чай не резиновая.
Я вот Джаву не знаю и всех джавовых технологий соответственно. Восхищаюсь людьми которые могут запомнить все это.
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Задачи для IT интервью
И что теперь? Я ж говорю - код и хороший и говноolis wrote:Код этот в ядре Линукса используется. Да и мы у себя в проекте тоже юзаем, вполне устраивает.АццкоМото wrote:в общих чертах надо знать всемolis wrote:Может быть Java- программистам и не нужно знать все эти указатели, списки и т.п. "низкоуровневые" вещи ?
Зато они знают Hadoop, Spring, Hibernate и т.п. Голова то чай не резиновая.
но есть другой вопрос: от старья типа того кода, что вы привели нужно уходить. ибо код хороший, но говно. ну как можно смотреть без слез на while(0) например? а все потому что выбранный инструмент устарел. он, блин, ассемблер заменял в 1972 что ли году, а не дворе подготовка 2015 году
(зы, кто не знает банальщину типа списков-хэшмепов и про знание хадупов с микросервисами врет)
Ну и ядром Линукса пугать тоже не надо - был я там. Помойка изрядная, хотя местами хороша
ЗЫ. как-то на интервью просили найти баг в реальном коде FreeBSD. так что не показатель
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Задачи для IT интервью
Да и правда что это я . Забыла что ты - невменяемуй хам и часто пишешь с целью порисоваться и других обосрать. Откроешь тему "прочла на днях про микросервисы, обсудим"? И тут же ты на коне с шашкой - микросервисы говорит знает, бугага. Кто ж тебя так по жизни обижает, что ты постоянни бегаешь в форум на других сливать и selfesteem подпитывать ?АццкоМото wrote:Сабина, посмотри, например, на addFirst() и скажи - ты реальноь думаешь, что половозрелому человеку такое можно показывать людям? А там все смердит не хуже
Просто лень распинаться
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 5283
- Joined: 27 Sep 2008 21:48
- Location: Moscow-Seattle-SFBA
Re: Задачи для IT интервью
Сабина,
объясните пожалуйста зачем вы делаете newFirstNode.next = firstNode;? если у вас будет всего два элемента, вы же кругами будете ходить...
Code: Select all
public void addFirst(MyType value) {
if (firstNode == null) {
firstNode = new Node();
firstNode.value = value;
} else {
Node newFirstNode = new Node();
newFirstNode.next = firstNode;
newFirstNode.value = value;
firstNode = newFirstNode;
}
-
- Уже с Приветом
- Posts: 3836
- Joined: 13 Sep 2007 10:06
Re: Задачи для IT интервью
[/quote]Сабина wrote: - Форматирование не консистентное
Это как то относится к функциональности хешмепа? Форматирование кода - это дело вкуса
- Почему элементы объекты? Известен же тип?
чтобы был более generic
- проверки на currentEntry.next != null кажутся неправильными.
и почему это интересно?
- нету комментариев
в хорошем коде комментарии излишни
– Вы можете считать, что это дело вкуса, но вас на работу из-за этого могут спокойно не взять, ибо это характеризует как вы будете работать.
- это такой тонкий троллинг?
- Думайте сами...
- точно так же, как пункт 1.
В общем и целом, согласен с техасским товарищем — код на уровне первокурсника...
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Задачи для IT интервью
в этом месте приличный человек идет в упомянутую тему, перечитывает и извиняетсяСабина wrote:Откроешь тему "прочла на днях про микросервисы, обсудим"? И тут же ты на коне с шашкой - микросервисы говорит знает, бугага. Кто ж тебя так по жизни обижает, что ты постоянни бегаешь в форум на других сливать и selfesteem подпитывать ?
теперь продемонстрируй, к каким относишься ты
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Задачи для IT интервью
эээ... но тут-то все правильно, нет?Херовимчик wrote:Сабина,
объясните пожалуйста зачем вы делаете newFirstNode.next = firstNode;? если у вас будет всего два элемента, вы же кругами будете ходить...Code: Select all
public void addFirst(MyType value) { if (firstNode == null) { firstNode = new Node(); firstNode.value = value; } else { Node newFirstNode = new Node(); newFirstNode.next = firstNode; newFirstNode.value = value; firstNode = newFirstNode; }
лень открывать полную версию, но обычно добавление первого элемента делается именно так. или где я туплю?
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 5283
- Joined: 27 Sep 2008 21:48
- Location: Moscow-Seattle-SFBA
Re: Задачи для IT интервью
все верно, я туплю. Мне почему-то среди всех этих бесконечных new и first привидилось что последня строчка firstNode.next = newFirstNode. Тяжело с таким стилем читать. Ну и глобально непривычно видеть LL с добавлением впередАццкоМото wrote:эээ... но тут-то все правильно, нет?Херовимчик wrote:Сабина,
объясните пожалуйста зачем вы делаете newFirstNode.next = firstNode;? если у вас будет всего два элемента, вы же кругами будете ходить...Code: Select all
public void addFirst(MyType value) { if (firstNode == null) { firstNode = new Node(); firstNode.value = value; } else { Node newFirstNode = new Node(); newFirstNode.next = firstNode; newFirstNode.value = value; firstNode = newFirstNode; }
лень открывать полную версию, но обычно добавление первого элемента делается именно так. или где я туплю?
-
- Уже с Приветом
- Posts: 314
- Joined: 24 May 2013 22:04
Re: Задачи для IT интервью
Здесь memory leak:
Надо бы removedFirst.next обнулить.
Code: Select all
private Node removeFirstNode() {
if (firstNode == null) throw new NoSuchElementException();
Node removedFirst = firstNode;
firstNode = firstNode.next;
return removedFirst;
}
-
- Уже с Приветом
- Posts: 314
- Joined: 24 May 2013 22:04
Re: Задачи для IT интервью
Во всяких эрлангах с хасеклами списки так сделаны. Правда, они там immutable, то есть, аналог addFirst() там создает новый список, а не изменяет старый.Херовимчик wrote:Ну и глобально непривычно видеть LL с добавлением вперед
-
- Уже с Приветом
- Posts: 344
- Joined: 03 Dec 2014 23:49
Re: Задачи для IT интервью
Запощу еще раз решение и новый вопрос, не все его могли заметить 2 страницы назад.
Решим немного другую задачу. Найдем максимальное количество этажей, которые можно гарантированно проверить за К бросков. Назовем эту величину N(K).
Если всего бросков К, то с какого этажа нужно сделать первый бросок? Нельзя бросать с K+1-го этажа или выше, потому что если диск разобьется, то оставшихся K-1 бросков может не хватить на проверку >=К этажей. Если сбросить с К-го этажа и диск разобьется, то останется ровно необходимые К-1 бросков на проверку оставшихся этажей с 1-го по К-1-й. Ну а бросать с К-1-го и ниже не имеет смысла, если можно бросить с более высокого. Следовательно, первый бросок нужно делать именно с К-го этажа.
Далее рассуждаем аналогично. Если после первого броска у нас по прежнему два целых диска, то остается К-1 бросок и, следовательно, второй бросок нам нужно следать с (К+К-1)-го этажа. Если диск разобьется, то остается К-2 броска и (К+К-1)-K-1 = К-2 этажей для проверки. Третий бросок нужно делать с (К+К-1+К-2)-го этажа и т.д.
Последний, К-й бросок нужно сделать с (K+(K-1)+(К-2)+...+1)-го этажа.
Итак, мы нашли форумулу -
N(K) = K+(K-1)+(К-2)+...+1 = (К+1)К/2
При данном N и неизвестном К нужно найти такое К, чтобы выполнялось неравенство К(К-1)/2 < N <= (К+1)К/2.
Для N=30 будет К=8, для N=100 будет К=14.
Ну и легко заметить, что величина K^2/2 всегда будет удовлетворять неравенству, так что ваша формула n = sqrt(2*m) выглядит верной.
П.С. Задачка со звездочкой. Найти общее решение для случае N этажей и К дисков.
Я изложу общее решение.valchkou wrote: Может математики подскажут формулу для правильно расчета распределения.
Я для себя считаю упрощенной формулой n = sqrt(2*m)
где n начальный этаж и соотв макс кол-во попыток, а m кол-во этажей.
100 - 14 (14.14...)
30 - 8 (7.7...)
Решим немного другую задачу. Найдем максимальное количество этажей, которые можно гарантированно проверить за К бросков. Назовем эту величину N(K).
Если всего бросков К, то с какого этажа нужно сделать первый бросок? Нельзя бросать с K+1-го этажа или выше, потому что если диск разобьется, то оставшихся K-1 бросков может не хватить на проверку >=К этажей. Если сбросить с К-го этажа и диск разобьется, то останется ровно необходимые К-1 бросков на проверку оставшихся этажей с 1-го по К-1-й. Ну а бросать с К-1-го и ниже не имеет смысла, если можно бросить с более высокого. Следовательно, первый бросок нужно делать именно с К-го этажа.
Далее рассуждаем аналогично. Если после первого броска у нас по прежнему два целых диска, то остается К-1 бросок и, следовательно, второй бросок нам нужно следать с (К+К-1)-го этажа. Если диск разобьется, то остается К-2 броска и (К+К-1)-K-1 = К-2 этажей для проверки. Третий бросок нужно делать с (К+К-1+К-2)-го этажа и т.д.
Последний, К-й бросок нужно сделать с (K+(K-1)+(К-2)+...+1)-го этажа.
Итак, мы нашли форумулу -
N(K) = K+(K-1)+(К-2)+...+1 = (К+1)К/2
При данном N и неизвестном К нужно найти такое К, чтобы выполнялось неравенство К(К-1)/2 < N <= (К+1)К/2.
Для N=30 будет К=8, для N=100 будет К=14.
Ну и легко заметить, что величина K^2/2 всегда будет удовлетворять неравенству, так что ваша формула n = sqrt(2*m) выглядит верной.
П.С. Задачка со звездочкой. Найти общее решение для случае N этажей и К дисков.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Задачи для IT интервью
Из-за чего именно ? Я опровергла несколько ваших комментариев.avitya wrote: – Вы можете считать, что это дело вкуса, но вас на работу из-за этого могут спокойно не взять, ибо это характеризует как вы будете работать....
Если бы не брали пр причине неверно обьявленного типа может быть и задумалась бы
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Задачи для IT интервью
Так приличный человек и "смердит" и прочие выражения как howdoyoudo не использует.АццкоМото wrote:в этом месте приличный человек идет в упомянутую тему, перечитывает и извиняетсяСабина wrote:Откроешь тему "прочла на днях про микросервисы, обсудим"? И тут же ты на коне с шашкой - микросервисы говорит знает, бугага. Кто ж тебя так по жизни обижает, что ты постоянни бегаешь в форум на других сливать и selfesteem подпитывать ?
теперь продемонстрируй, к каким относишься ты
Думаешь я помню где это я прочла? Если очень хочтеся протестировать меня на приличность - можно просто обьяснить по поводу чего это там упоминалось
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Задачи для IT интервью
Да много чего надо, сан вон какой класс наваял . Но что успела как говорится за отведенное время, да интервью тому лет пять минимум. Зато хоть по теме поговорили, а то какие то были общие фразы о крутости писателей хешмепов и тех кто их писать не снисходит.rorp wrote:Здесь memory leak:Надо бы removedFirst.next обнулить.Code: Select all
private Node removeFirstNode() { if (firstNode == null) throw new NoSuchElementException(); Node removedFirst = firstNode; firstNode = firstNode.next; return removedFirst; }
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 3836
- Joined: 13 Sep 2007 10:06
Re: Задачи для IT интервью
Какие такие опровержения? Отсутствие комментариев или скобочки не симметрично расставленные.Сабина wrote:Из-за чего именно ? Я опровергла несколько ваших комментариев.avitya wrote: – Вы можете считать, что это дело вкуса, но вас на работу из-за этого могут спокойно не взять, ибо это характеризует как вы будете работать....
Если бы не брали пр причине неверно обьявленного типа может быть и задумалась бы
Поверьте, и то и другое считается во многих местах major fault. Это можно считать придирками и глупостями, но именно на такие мелочи и обращают внимание.
-
- Уже с Приветом
- Posts: 4935
- Joined: 02 Mar 2002 10:01
- Location: UK
Re: Задачи для IT интервью
Да ладно, это то как раз придирки. Хотя внимание конечно обращают, да.avitya wrote:Какие такие опровержения? Отсутствие комментариев или скобочки не симметрично расставленные.Сабина wrote:Из-за чего именно ? Я опровергла несколько ваших комментариев.avitya wrote: – Вы можете считать, что это дело вкуса, но вас на работу из-за этого могут спокойно не взять, ибо это характеризует как вы будете работать....
Если бы не брали пр причине неверно обьявленного типа может быть и задумалась бы
Поверьте, и то и другое считается во многих местах major fault. Это можно считать придирками и глупостями, но именно на такие мелочи и обращают внимание.
Вот у нас сейчас код ревьюят несколько десятков человек из 4 стран. Людей много, свободного времени у них еще больше. Когда сказать нечего, а сказать чего то хочется, именно это и пишут: скобочки, комментарии не те, пробелы ...
-
- Уже с Приветом
- Posts: 256
- Joined: 14 Jul 2011 09:07
- Location: SaintP -> NYC
Задачи для IT интервью
Пробелы очень важно на самом деле, потому что код читает не только компиоятор но часто и другой человек, а когда жалеют лишнюю пустую строку вставить то читать потом эти простыни нереально.
Хотя конечно на собеседовании па это обращать внимание тупо
Хотя конечно на собеседовании па это обращать внимание тупо
-
- Уже с Приветом
- Posts: 4935
- Joined: 02 Mar 2002 10:01
- Location: UK
Re: Задачи для IT интервью
Ну не знаю, убрать пробелы вот здесь: func1( 10 ) или здесь: func2(int * n) тоже важно?reality wrote:Пробелы очень важно на самом деле, потому что код читает не только компиоятор но часто и другой человек, а когда жалеют лишнюю пустую строку вставить то читать потом эти простыни нереально.
Хотя конечно на собеседовании па это обращать внимание тупо
-
- Уже с Приветом
- Posts: 349
- Joined: 24 Jul 2012 23:26
- Location: echo RU::US($me);
Re: Задачи для IT интервью
Задачка парни по крону. Получаем контен из итернета язык ПХП. Первый берёт ссылки из базы данных и с их помощю загружает рисунки в нужную директорию. Второй так же работает только использует EXCEL spreadsheet(имеет одну колонку с URL) и из за одного косяка возрашает пустой контент, что за косяк?
1.________________________________________________
$result = $db->query('SEL ECT url FR OM url ORDER BY url');
$i = 0;
foreach($result as $url){
$pos = strpos($url['url'],'photos/');
if($pos!==false){
$name = substr($url['url'],$pos+7);
$content = file_get_contents($url['url']);
if(!empty($content)){
file_put_contents('save/'.$name.'',$content);
}
}else{
$pos = strpos($url['url'],'images/');
$name = substr($url['url'],$pos+7);
$content = file_get_contents($url['url']);
if(!empty($content)){
file_put_contents('save/'.$i.''.$name.'',$content);
$i++;
}
}
}
echo '<h1>Done!</h1>';
2.______________________________________________________
$file = fopen('images.csv','r');
$next = fgets($file);
$i = 0;
while (!feof($file)){
$pos = strpos($next,'photos/');
if($pos!==false){
$name = substr($next,$pos+7);
$content = file_get_contents($next);
if(!empty($content)){
file_put_contents('save/'.$name.'',$content);
}
}else{
$pos = strpos($next,'images/');
$name = substr($next,$pos+7);
$content = file_get_contents($next);
if(!empty($content)){
file_put_contents('save/'.$i.''.$name.'',$content);
$i++;
}
}
$next = fgets($file);
}
fclose($file);
echo '<h1>Done!</h1>';
1.________________________________________________
$result = $db->query('SEL ECT url FR OM url ORDER BY url');
$i = 0;
foreach($result as $url){
$pos = strpos($url['url'],'photos/');
if($pos!==false){
$name = substr($url['url'],$pos+7);
$content = file_get_contents($url['url']);
if(!empty($content)){
file_put_contents('save/'.$name.'',$content);
}
}else{
$pos = strpos($url['url'],'images/');
$name = substr($url['url'],$pos+7);
$content = file_get_contents($url['url']);
if(!empty($content)){
file_put_contents('save/'.$i.''.$name.'',$content);
$i++;
}
}
}
echo '<h1>Done!</h1>';
2.______________________________________________________
$file = fopen('images.csv','r');
$next = fgets($file);
$i = 0;
while (!feof($file)){
$pos = strpos($next,'photos/');
if($pos!==false){
$name = substr($next,$pos+7);
$content = file_get_contents($next);
if(!empty($content)){
file_put_contents('save/'.$name.'',$content);
}
}else{
$pos = strpos($next,'images/');
$name = substr($next,$pos+7);
$content = file_get_contents($next);
if(!empty($content)){
file_put_contents('save/'.$i.''.$name.'',$content);
$i++;
}
}
$next = fgets($file);
}
fclose($file);
echo '<h1>Done!</h1>';
-
- Уже с Приветом
- Posts: 349
- Joined: 24 Jul 2012 23:26
- Location: echo RU::US($me);
Re: Задачи для IT интервью
Сколько значений содержать переменная для последующей обработки .
$result = $db->query($query);
Сделаю проше
$result = $result->fetch();
$result = $db->query($query);
Сделаю проше
$result = $result->fetch();
-
- Уже с Приветом
- Posts: 5424
- Joined: 19 Jan 2004 23:12
- Location: Florida
Re: Задачи для IT интервью
Для начала подправьте русский языкFreemanUSA wrote:Сколько значений содержать переменная для последующей обработки .
$result = $db->query($query);
Сделаю проше
$result = $result->fetch();
Все зависит от количества колонок в запросе и от типа возвращаемого результата.
По умолчанию PDO::FETCH_BOTH (default): returns an array indexed by both column name and 0-indexed column number as returned in your result set
Зачем задавать вопросы, ответ на которые находится в документации за секунду?
-
- Уже с Приветом
- Posts: 349
- Joined: 24 Jul 2012 23:26
- Location: echo RU::US($me);
Re: Задачи для IT интервью
Это чё ... или повод для драки Вы не ответили на простой вопрос что может вернуть этот запрос, а не сколько колонок или правильность орфографии Русского Языка форева
-
- Уже с Приветом
- Posts: 5424
- Joined: 19 Jan 2004 23:12
- Location: Florida
Re: Задачи для IT интервью
Вернуть может: FALSE, ARRAY, ASSOCIATED ARRAY, BOTHFreemanUSA wrote:Это чё ... или повод для драки Вы не ответили на простой вопрос что может вернуть этот запрос, а не сколько колонок или правильность орфографии Русского Языка форева
-
- Уже с Приветом
- Posts: 349
- Joined: 24 Jul 2012 23:26
- Location: echo RU::US($me);
Re: Задачи для IT интервью
Да это правильно, только что возрашает $result = $db->query($query); при неправельном или правельном вводе или SQL injection вот что я ждал. А так два дня для стандартного ответа это круто