Amazon Interview

tieboss
Уже с Приветом
Posts: 116
Joined: 12 Dec 2012 15:39

Amazon Interview

Post by tieboss »

Всем привет.
Я из Израиля.
Хотел поделиться опытом телефонного интервью с Амазон.
В процессе некто по имени Удам поверг меня в шок утверждая что
код такого типа на Java
DerivedClass dc = (DerivedClass)baseClassInstance;
выбросит compile time exception

Потом спрашивал какие то довольно тривиальные задачки про HashTable.

Меня терзают смутные сомнения...
Это пример того что на этом форуме называют индусским стилем...?
Может мы не поняли друг друга или просто он в своих делах но как-то не по себе стало.
Поделитесь мыслями плз
Спасибо.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Amazon Interview

Post by dotcom »

Вы уверены, что это не были "трудности перевода"? Подозреваю, что интервьюирующий спрашивал:

BaseClass bc = new BaseClass();
DerivedClass dc = (DerivedClass)bc;
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon Interview

Post by crypto5 »

dotcom wrote:Вы уверены, что это не были "трудности перевода"? Подозреваю, что интервьюирующий спрашивал:

BaseClass bc = new BaseClass();
DerivedClass dc = (DerivedClass)bc;
скомпилится
In vino Veritas!
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Amazon Interview

Post by Мальчик-Одуванчик »

tieboss wrote:Всем привет.
Я из Израиля.

Меня терзают смутные сомнения...

Спасибо.
Не экономьте на заварке
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Amazon Interview

Post by dotcom »

crypto5 wrote:
dotcom wrote:Вы уверены, что это не были "трудности перевода"? Подозреваю, что интервьюирующий спрашивал:

BaseClass bc = new BaseClass();
DerivedClass dc = (DerivedClass)bc;
скомпилится
Естественно. Интервьюер говорил про exception... а, вижу. А что таке compile time exception? :D Там, чувствую, двойные "трудности перевода" были.
User avatar
Komissar
Уже с Приветом
Posts: 64661
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Amazon Interview

Post by Komissar »

я стар и туп в жабе, но 100 лет назад некошерный кастинг обычно выбрасывал run-time exceptions, а компилился ок.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Amazon Interview

Post by Мальчик-Одуванчик »

а если потомок пустой - тоже в отказ?
А как поведет себя Java-аналог CRTP?
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Amazon Interview

Post by Интеррапт »

dotcom wrote:
crypto5 wrote:
dotcom wrote:Вы уверены, что это не были "трудности перевода"? Подозреваю, что интервьюирующий спрашивал:

BaseClass bc = new BaseClass();
DerivedClass dc = (DerivedClass)bc;
скомпилится
Естественно. Интервьюер говорил про exception... а, вижу. А что таке compile time exception? :D Там, чувствую, двойные "трудности перевода" были.
Compile-time exception, это наверное когда компилятор крешается :)
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

Komissar wrote:я стар и туп в жабе, но 100 лет назад некошерный кастинг обычно выбрасывал run-time exceptions, а компилился ок.
+1
тоже не врубаюсь, Base пытаются приравнять к Derived, конечно падать в runtime должно, если по ссылке Base не лежит Derived или DerivedDerived :)
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

dotcom wrote:Вы уверены, что это не были "трудности перевода"? Подозреваю, что интервьюирующий спрашивал:

BaseClass bc = new BaseClass();
DerivedClass dc = (DerivedClass)bc;
он это спрашивал, если хотел запутать автора и ожидал от него ClassCastException
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Amazon Interview

Post by dotcom »

Alexandr wrote: он это спрашивал, если хотел запутать автора и ожидал от него ClassCastException
Традиционный вопрос на основы. Но стороны видимо не поняли друг друга. :D
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

dotcom wrote:
Alexandr wrote: он это спрашивал, если хотел запутать автора и ожидал от него ClassCastException
Традиционный вопрос на основы. Но стороны видимо не поняли друг друга. :D
Ну, в таких случаях не мешает полностью проговаривать свои соображения, чтобы интерьер понимал, правильно ли его вопрос поняли или нет
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Amazon Interview

Post by Мальчик-Одуванчик »

А как поведет себя такая конструкция - тоже вывалится при кастовании?
class Generic<T> {}
public class CuriouslyRecurringGeneric extends Generic<CuriouslyRecurringGeneric> {}
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Amazon Interview

Post by crypto5 »

Мальчик-Одуванчик wrote:А как поведет себя такая конструкция - тоже вывалится при кастовании?
class Generic<T> {}
public class CuriouslyRecurringGeneric extends Generic<CuriouslyRecurringGeneric> {}
Вы приведите околожизненный пример когда такие знания могут понадобиться.
In vino Veritas!
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

Мальчик-Одуванчик wrote:А как поведет себя такая конструкция - тоже вывалится при кастовании?
class Generic<T> {}
public class CuriouslyRecurringGeneric extends Generic<CuriouslyRecurringGeneric> {}
да тот же ClassCastException, вы же не оставляете в "интерфейсе" класса параметризацию, а прячете ее в глубь наследования, соответственно, и ругнуться на этапе компиляции оно не может. На этапе выполнения все тот же баян по приведению базового (не только ссылка, но и объект по ней) к производному.
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

к предыдущему посту - это я домыслил, что вызывать вы его будете также как и в примерах выше
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Amazon Interview

Post by Мальчик-Одуванчик »

crypto5 wrote:
Мальчик-Одуванчик wrote:А как поведет себя такая конструкция - тоже вывалится при кастовании?
class Generic<T> {}
public class CuriouslyRecurringGeneric extends Generic<CuriouslyRecurringGeneric> {}
Вы приведите околожизненный пример когда такие знания могут понадобиться.
Про джаву не скажу а в плюсах сплошь и рядом. В ATL к примеру.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Amazon Interview

Post by Мальчик-Одуванчик »

Alexandr wrote:к предыдущему посту - это я домыслил, что вызывать вы его будете также как и в примерах выше
Но в самои-то коде такого базового класса кастование к производному должно быть по умолчанию?
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

Мальчик-Одуванчик wrote:
crypto5 wrote:
Мальчик-Одуванчик wrote:А как поведет себя такая конструкция - тоже вывалится при кастовании?
class Generic<T> {}
public class CuriouslyRecurringGeneric extends Generic<CuriouslyRecurringGeneric> {}
Вы приведите околожизненный пример когда такие знания могут понадобиться.
Про джаву не скажу а в плюсах сплошь и рядом. В ATL к примеру.
Сплошь и рядом - это называется реализация статического полифорфизма
Только шаблоны в C++ и генерики особенно в Java - вещи сильно разные
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

Мальчик-Одуванчик wrote:
Alexandr wrote:к предыдущему посту - это я домыслил, что вызывать вы его будете также как и в примерах выше
Но в самои-то коде такого базового класса кастование к производному должно быть по умолчанию?
ну если дописать что-то типа

Code: Select all

class Generic<T> {}
class CuriouslyRecurringGeneric extends Generic<CuriouslyRecurringGeneric> {}
class CuriouslyRecurringGeneric2 extends CuriouslyRecurringGeneric {}
и далее юзать

Code: Select all

CuriouslyRecurringGeneric a = new CuriouslyRecurringGeneric();
CuriouslyRecurringGeneric2 b = (CuriouslyRecurringGeneric2)a;
видите, никакого генеризма не остается при использовании
возможно автор имел немного другой вариант использования, когда Generic<T> будет общим, а в качестве параметра будут полиморфные классы использоваться. Но я пошел самым простым путем :mrgreen:
tieboss
Уже с Приветом
Posts: 116
Joined: 12 Dec 2012 15:39

Re: Amazon Interview

Post by tieboss »

так сильно не извращались :)
началось все действительно с основ.
т,е он спросил можно ли сделать
derived=base;
я сказал что вообще-то можно
base=derived
хотя можно и
derived=(derived)base;
но может произойти ClassCastException
на что он сказал что это будет ошибкой во время компиляции а не во время Runtime.

Хотя наиболее вероятно это что то из серии Lost In Translation...
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: Amazon Interview

Post by Zorkus »

Независимо от того, скомпилится данный кусок кода или нет, задавать такие вопросы на собеседовании - плохой тон имхо. Такие вопросы резко понижают желание там работать.
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

какие мы нежные :mrgreen:
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: Amazon Interview

Post by Zorkus »

Чего это?
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Amazon Interview

Post by Alexandr »

чем вопрос плохой?

Return to “Работа и Карьера в IT”