The Six Most Common Species Of Code
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: The Six Most Common Species Of Code
Не, кошкин код прекрасен, хоть и бажный
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: The Six Most Common Species Of Code
В jvm нету unsigned типов, нет и проблем с ними ))dimp wrote:Кстати, характерно, что ни один вариант не использует unsigned int
In vino Veritas!
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: The Six Most Common Species Of Code
А вот и прекрасный вопрос для интервью. Как добавить в JVM unsigned int?
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: The Six Most Common Species Of Code
Что значит в JVM? На уровне байт-кода?Zorkus wrote:А вот и прекрасный вопрос для интервью. Как добавить в JVM unsigned int?
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: The Six Most Common Species Of Code
Открытый вопрос для обсуждения Предположим, у меня есть исходники javac/hotspot, я хочу добавить новый примитивный тип uint, 32-битный, беззнаковый. Я естественно хочу, чтобы все было сделано аккуратно и оптимально. Расскажите, какие изменения в javac и JVM и где будут нужны.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: The Six Most Common Species Of Code
Лучше сразу лаптоп с сорцами дать и время засечь когда будет готово ))Zorkus wrote:Открытый вопрос для обсуждения Предположим, у меня есть исходники javac/hotspot, я хочу добавить новый примитивный тип uint, 32-битный, беззнаковый. Я естественно хочу, чтобы все было сделано аккуратно и оптимально. Расскажите, какие изменения в JVM и где будут нужны.
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: The Six Most Common Species Of Code
Боюсь, что я завалил бы такое интервью.Zorkus wrote:Открытый вопрос для обсуждения Предположим, у меня есть исходники javac/hotspot, я хочу добавить новый примитивный тип uint, 32-битный, беззнаковый. Я естественно хочу, чтобы все было сделано аккуратно и оптимально. Расскажите, какие изменения в javac и JVM и где будут нужны.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: The Six Most Common Species Of Code
ОпоздалZorkus wrote:А вот и прекрасный вопрос для интервью. Как добавить в JVM unsigned int?
https://blogs.oracle.com/darcy/entry/unsigned_api
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: The Six Most Common Species Of Code
Не... это совсем не то. Я этот блог еще в прошлом году читал. Тут чувак пишет про несколько добавленных классов во фреймворк, но уж никак не на уровне JVM добавление беззнаковых типов.Сабина wrote:ОпоздалZorkus wrote:А вот и прекрасный вопрос для интервью. Как добавить в JVM unsigned int?
https://blogs.oracle.com/darcy/entry/unsigned_api
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: The Six Most Common Species Of Code
Да ну ладно тебе. Естественно, кроме инженеров сана кто это делал в свое время, точно никто не расскажет - вопрос в том, кто насколько приблизится в своих рассуждениях к идеалу.Интеррапт wrote:Боюсь, что я завалил бы такое интервью.Zorkus wrote:Открытый вопрос для обсуждения Предположим, у меня есть исходники javac/hotspot, я хочу добавить новый примитивный тип uint, 32-битный, беззнаковый. Я естественно хочу, чтобы все было сделано аккуратно и оптимально. Расскажите, какие изменения в javac и JVM и где будут нужны.
Но вопрос имеет массу плюсов для интервью, согласись. Если требуются не просто кодеры.
- К нему не подготовиться по книжке "cracking the coding interview: 150 typical questions"
- позволяет выделить людей, кто заглядывал под капот платформе, с которой работает
- людей, которые могут быстро набросать план решения задачи, которая кажется крайне трудной сходу
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: The Six Most Common Species Of Code
Ну это типичная задача Ферми (http://en.wikipedia.org/wiki/Fermi_problem), более многоуровневая чем скажем вопрос сколько пианистов живет в Чикаго. Нужно сделать ряд предположений, о том как люди пишут обычно виртуальные машины, и компиляторы, и какие изменения нужно что бы поддержать новый тип: типа лексический/семантический и т.д. анализатор, формат байтока, jit compiler, либы наверное какие то и АПИ переписать, тесты поправить.Интеррапт wrote:Боюсь, что я завалил бы такое интервью.Zorkus wrote:Открытый вопрос для обсуждения Предположим, у меня есть исходники javac/hotspot, я хочу добавить новый примитивный тип uint, 32-битный, беззнаковый. Я естественно хочу, чтобы все было сделано аккуратно и оптимально. Расскажите, какие изменения в javac и JVM и где будут нужны.
In vino Veritas!
-
- Уже с Приветом
- Posts: 13080
- Joined: 14 Sep 2001 09:01
- Location: Odessa, Ukraine -> Santa Clara, CA
Re: The Six Most Common Species Of Code
Я большой любитель рекурсии, много писал на LISP в свое время (там, обычно, рекурсия используется вместо циклов). Но, за двойную рекурсию на пустом месте, на интервью, могут дать по голове. Итерация - лучше всего, в данном случае.
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: The Six Most Common Species Of Code
В данном случае как раз правильно написать с простой рекурсией, если не спрашивают другого. Как в оргигинальной картиинке было упомянуто, этому учат в CS, если не 101, то к 301 точно.slozovsk wrote:Я большой любитель рекурсии, много писал на LISP в свое время (там, обычно, рекурсия используется вместо циклов). Но, за двойную рекурсию на пустом месте, на интервью, могут дать по голове. Итерация - лучше всего, в данном случае.
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
Re: The Six Most Common Species Of Code
Лично для меня двойная рекурсия была бы красным флагом. Ее применение означает, что испытуемый закончил CS 101, но лишен всякого представления о производительности написанного им кода.dotcom wrote:В данном случае как раз правильно написать с простой рекурсией, если не спрашивают другого. Как в оргигинальной картиинке было упомянуто, этому учат в CS, если не 101, то к 301 точно.slozovsk wrote:Я большой любитель рекурсии, много писал на LISP в свое время (там, обычно, рекурсия используется вместо циклов). Но, за двойную рекурсию на пустом месте, на интервью, могут дать по голове. Итерация - лучше всего, в данном случае.
Протоукр
-
- Уже с Приветом
- Posts: 12303
- Joined: 23 Mar 2004 21:10
Re: The Six Most Common Species Of Code
Я рекурсией баловалась, когда есче на C писала, сразу после института, в конце 80х. Красиииво. И работало, что самое интересное, свою миссию выполняло. Интересно было бы как-то восстановить етот код.Hamster wrote:Лично для меня двойная рекурсия была бы красным флагом. Ее применение означает, что испытуемый закончил CS 101, но лишен всякого представления о производительности написанного им кода.dotcom wrote:В данном случае как раз правильно написать с простой рекурсией, если не спрашивают другого. Как в оргигинальной картиинке было упомянуто, этому учат в CS, если не 101, то к 301 точно.slozovsk wrote:Я большой любитель рекурсии, много писал на LISP в свое время (там, обычно, рекурсия используется вместо циклов). Но, за двойную рекурсию на пустом месте, на интервью, могут дать по голове. Итерация - лучше всего, в данном случае.
-
- Уже с Приветом
- Posts: 64661
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: The Six Most Common Species Of Code
компактно, но не эффективно, и мало-мальско сложные задачи трудно отдебажжить.
Ненавижу.
Ненавижу.
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: The Six Most Common Species Of Code
А еще вот так:crypto5 wrote: Модные перцы пишут вот так:Code: Select all
def fib: Stream[Int] = 0 #:: 1 #:: fib.zip(fib.tail).map{case (a,b) => a + b}
Code: Select all
fibs = 0 : 1 : [ a + b | (a, b) <- zip fibs (tail fibs)]
-
- Уже с Приветом
- Posts: 314
- Joined: 24 May 2013 22:04
Re: The Six Most Common Species Of Code
+100500slozovsk wrote:Я большой любитель рекурсии, много писал на LISP в свое время (там, обычно, рекурсия используется вместо циклов). Но, за двойную рекурсию на пустом месте, на интервью, могут дать по голове. Итерация - лучше всего, в данном случае.
Говнокод
Code: Select all
def fibonacci(n: BigInt): BigInt = {
@tailrec
def fib(i: BigInt, a: BigInt, b: BigInt): BigInt = {
if (i < 0)
a
else
fib(i - 1, b, a + b)
}
fib(n, 0, 1)
}
Code: Select all
public BigInt fibonacci(BigInt n)
{
return fib$1(n, BigInt..MODULE$.int2bigInt(0), BigInt..MODULE$.int2bigInt(1));
}
private final BigInt fib$1(BigInt i, BigInt a, BigInt b)
{
while (true)
{
if (i.$less(BigInt..MODULE$.int2bigInt(0))) {
return
a;
}
b = a.$plus(b); a = b; i = i.$minus(BigInt..MODULE$.int2bigInt(1));
}
}
-
- Уже с Приветом
- Posts: 314
- Joined: 24 May 2013 22:04
Re: The Six Most Common Species Of Code
Те же яйца, вид сбоку. Если памяти не жалко, пойдет.Мальчик-Одуванчик wrote:А еще вот так:crypto5 wrote: Модные перцы пишут вот так:Code: Select all
def fib: Stream[Int] = 0 #:: 1 #:: fib.zip(fib.tail).map{case (a,b) => a + b}
Code: Select all
fibs = 0 : 1 : [ a + b | (a, b) <- zip fibs (tail fibs)]
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: The Six Most Common Species Of Code
Я бы еще понял такие суровые нравы, если интервьюируемого попросили написать эффективный код, а он выдал бы стандартную "отписку". А иначе красный флаг вывешивать - это не больше чем самодурство интервьюирующего.Hamster wrote: Лично для меня двойная рекурсия была бы красным флагом. Ее применение означает, что испытуемый закончил CS 101, но лишен всякого представления о производительности написанного им кода.
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
Re: The Six Most Common Species Of Code
То, что код должен быть эффективным (или по крайней мере не работать экспоненциальное время) - подразумевается само собой.dotcom wrote:Я бы еще понял такие суровые нравы, если интервьюируемого попросили написать эффективный код, а он выдал бы стандартную "отписку". А иначе красный флаг вывешивать - это не больше чем самодурство интервьюирующего.Hamster wrote: Лично для меня двойная рекурсия была бы красным флагом. Ее применение означает, что испытуемый закончил CS 101, но лишен всякого представления о производительности написанного им кода.
Если этот перец пишет код с двойной рекурсией, работающий за время O(2^n), на интервью, когда он может подумать еще минуту и написать код со временем O(n), то какие у меня будут гарантии, что он не станет так же подходить к написанию продукционного кода?
И в чем вообще смысл этой задачи? Проверить, что человек знает, что такое число Фибоначчи? Для этого необязательно писать код. Проверить, что он знает, что такое рекурсия? Подразумевается, что это знает любой человек, пытающийся устроиться на работу программистом. Логически следует, что это проверка на способность писать качественный код. Которым рекурсия, очевидно, не является.
Протоукр
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
Re: The Six Most Common Species Of Code
Кстати, а кто-нибудь может придумать, как посчитать в целых числах быстрее O(n)?
Вариант от Math Ph.D. это в принципе O(ln(n)), если считать, что экспоненциация это O(ln(n)). Но он на плавающей точке и на целые числа очевидным способом не обобщается.
Lookup table не предлагать (хотя в большинстве случаев это будет самым быстрым вариантом). Граничные условия: 1 <= n <= 93, fib(n) <= 2^64.
Вариант от Math Ph.D. это в принципе O(ln(n)), если считать, что экспоненциация это O(ln(n)). Но он на плавающей точке и на целые числа очевидным способом не обобщается.
Lookup table не предлагать (хотя в большинстве случаев это будет самым быстрым вариантом). Граничные условия: 1 <= n <= 93, fib(n) <= 2^64.
Протоукр
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: The Six Most Common Species Of Code
По ссылке из самого первого поста темы есть за константу ))
In vino Veritas!
-
- Уже с Приветом
- Posts: 12257
- Joined: 20 Dec 2000 10:01
- Location: Bellevue, WA
Re: The Six Most Common Species Of Code
можно изгалиться с multi-threading или на hadoop, но в этом случае наверное лучше считать по приближенной формуле а не точное LongInt значениеHamster wrote:Кстати, а кто-нибудь может придумать, как посчитать быстрее
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: The Six Most Common Species Of Code
Известно точное решение за O(logn), думаю можно найти в википедииHamster wrote:Кстати, а кто-нибудь может придумать, как посчитать в целых числах быстрее O(n)?
Вариант от Math Ph.D. это в принципе O(ln(n)), если считать, что экспоненциация это O(ln(n)). Но он на плавающей точке и на целые числа очевидным способом не обобщается.
Lookup table не предлагать (хотя в большинстве случаев это будет самым быстрым вариантом). Граничные условия: 1 <= n <= 93, fib(n) <= 2^64.
In vino Veritas!