Отчет о поиске работы в Чикаго.

User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

jgreen wrote:
Montchik wrote:- Inheritance vs composition


Тут плаваю видимо. Какой правильный ответ?

Ну не позорьтесь :)
Inheritance - наследование
composition - это когда один объект член другого:
Composition (aka association) is another means of achieving re-use. Put an object inside another object and the first object can re-use the code behind the composed object.

http://atomicobject.com/training/traini ... ality.page

jgreen wrote:
Montchik wrote:Almost everybody asked about two ways of implementing Singleton.


Two ways? Знаю один. Или надо простой (классический паттерн) и отдельно thread-safe? Это значит два?

Ну один - это когда все методы у класса static - типичный пример utility-класс.
второй, это, наверное, тот, о котором Вы подумали - private constructor + instance member + getInstance method...

C Singleton'ами в Java есть вот такой прикол:
Как заиметь в одной JVM ДВА (и более) экземпляров синглтона? (сам синглтон ломать не надо). Скажем синглтон типа 2 - то есть с private constructor + static instance member...

BTW, возможность иметь несколько экземпляров синглтонов ОЧЕНЬ широко используется в Java-мире
I hated LA
Nik0
Posts: 16
Joined: 11 Oct 2002 22:55

Post by Nik0 »

А что - использование reflection допускается?

Nik
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

Nik0 wrote:А что - использование reflection допускается?
Nik
Если был вопрос про reflection чтобы получить 2 синглтона, то скажем, можно обойтись и без него. То есть делаем предположение что policy запрещает доступ к private членам класса. Действуем только Public-путями :)

Хотя вызвать private-констрактор через reflection тоже способ :mrgreen:
I hated LA
Nik0
Posts: 16
Joined: 11 Oct 2002 22:55

Post by Nik0 »

Ну тогда take this:
Test test=(Test)Test.class.newInstance(); code outside of Test
where Test(){} is the only and private constructor
<< removed because of irrelevance, sorry
and public static Test.test=new Test(); - initialized within Test
>>
Does this work?

Nik
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

Nik0 wrote:Ну тогда take this:
Test test=(Test)Test.class.newInstance(); code outside of Test
where Test(){} is the only and private constructor
<< removed because of irrelevance, sorry
and public static Test.test=new Test(); - initialized within Test
>>
Does this work?
нет, не будет:
http://java.sun.com/j2se/1.4.2/docs/api ... wInstance()
class is instantiated as if by a new expression with an empty argument list.
надо чтобы безпараметровый констрактор был виден.

Code: Select all

java.lang.IllegalAccessException: Class xxx.T1 can not access a member of class xxx.S1 with modifiers "private"
   at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
   at java.lang.Class.newInstance0(Class.java:302)
   at java.lang.Class.newInstance(Class.java:261)
   at xxx.T1.main(T1.java:13)
Exception in thread "main"


Хотя если разрешить вызов private-методов в reflection (это настраивается), то этим путём можно создать второй экземпляр. (А точнее у класса найти его private no-parameter constructor, сделать ему setAccessible(true) (здесь будет проверка security-мэнеджера на разрешённость этого безобразия), а потом уже вызывать newInstance(new Object[0]).

Кстати, Sun этим безобразием пользуется где-то в SE-корбе...


На самом деле можно добиться двух синглетонов другим способом и это используется в реальной жизни... Хотя народ обычно об этом и не задумывается :)
I hated LA
Nik0
Posts: 16
Joined: 11 Oct 2002 22:55

Post by Nik0 »

Ну видимо надо применительно к ситуации.
Можно попробовать deserialization к примеру. Или more than
one class loaders.
Короче - чего голову ломать? Скажите зачем и где нужно - а мы додумаем :)

Nik
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

Nik0 wrote:Или more than
one class loaders.
Вот он правильный ответ :) То есть если один и тот же класс загружен sibling classloader'ами, то это будут два разных класса (с одним именем!), и соответственно получим два синглетона...
А используется это внутрях app server'ов, чтобы одна аппликуха не мешала другой, например. Ну и еще с этим усиленно борются там же внутрях, чтобы те синглтоны, которые должны быть синглетонами ими и оставались :)
I hated LA
User avatar
jgreen
Уже с Приветом
Posts: 713
Joined: 11 May 2004 05:45
Location: L.A. - Chicago - L.A. - ?

Post by jgreen »

WildVlad wrote:Ну не позорьтесь :)
Inheritance - наследование
composition - это когда один объект член другого:


IS-A, HAS-A. Блин. Посыпаю пеплом голову.

WildVlad wrote:Ну один - это когда все методы у класса static - типичный пример utility-класс.
второй, это, наверное, тот, о котором Вы подумали - private constructor + instance member + getInstance method...


Я о первом указаном Вами вообще не подумал. Я только о втором подумал :-)

WildVlad wrote:C Singleton'ами в Java есть вот такой прикол:
Как заиметь в одной JVM ДВА (и более) экземпляров синглтона? (сам синглтон ломать не надо).


Другой classloader? В одной JVM могут быть несколько classloader'ов, и собственно так?
User avatar
deschanel
Уже с Приветом
Posts: 189
Joined: 16 Jun 2005 07:31

Post by deschanel »

Montchik wrote:Список наиболее часто задаваемых вопросов (senior J2EE dev):

OOP concepts
- Inheritance vs composition
- Design patterns. Almost everybody asked about two ways of implementing Singleton.
- Java interfaces vs abstract classes.


I would welcome some short answers for these 3 questions...
thanks.
Last edited by deschanel on 08 Aug 2005 15:24, edited 1 time in total.
There is no way to fight the nature.
User avatar
Mark
Уже с Приветом
Posts: 1980
Joined: 10 Oct 2000 09:01
Location: New England

Post by Mark »

Montchik wrote:Спасибо за поздравления! :gen1:

Mark, а ты все еще в RI. :wink: Поздравляю с новой работой!

Job market is really good this year.


Спасибо Андрей! я все еще в RI - и в связи с покупкой здесь недвижимости похоже надолго :)
Насчет job market - это точно - и что радует стали появлятся позиции "образца начала 2000 года" :) и работодателей много. В пятницу еще 2 предложения получил - но уже подписал первое (впрочем не жалею).
Поражен проделанной тобой систематизацией вопросов - аж стало жаль что я не java developer.
Удачи тебе с переездом. У меня там родственники в северном сабербе Чикаго - так что ежели есть какие вопросы могу им форварднуть - пиши в приват (ну или сюда в топик).
User avatar
deschanel
Уже с Приветом
Posts: 189
Joined: 16 Jun 2005 07:31

Post by deschanel »

There is no way to fight the nature.
Garry
Уже с Приветом
Posts: 240
Joined: 25 Jan 2000 10:01
Location: KS, USA

Re: Отчет о поиске работы в Чикаго.

Post by Garry »

Montchik wrote: Оффице Мах попытался дать лучший оффер, но был очень вежливо послан.
:хат:


Поздравляю!! Непонятно только почему лучшиы оффер бил отвергнут?

Garry
User avatar
Montchik
Уже с Приветом
Posts: 2119
Joined: 27 Dec 1999 10:01
Location: Воронеж -> Naperville, IL

Post by Montchik »

Mark wrote:Спасибо Андрей! я все еще в RI - и в связи с покупкой здесь недвижимости похоже надолго :)
Насчет job market - это точно - и что радует стали появлятся позиции "образца начала 2000 года" :) и работодателей много. В пятницу еще 2 предложения получил - но уже подписал первое (впрочем не жалею).
Поражен проделанной тобой систематизацией вопросов - аж стало жаль что я не java developer.
Удачи тебе с переездом. У меня там родственники в северном сабербе Чикаго - так что ежели есть какие вопросы могу им форварднуть - пиши в приват (ну или сюда в топик).


Thank you Mark. :radio%:
User avatar
Montchik
Уже с Приветом
Posts: 2119
Joined: 27 Dec 1999 10:01
Location: Воронеж -> Naperville, IL

Re: Отчет о поиске работы в Чикаго.

Post by Montchik »

Garry wrote:
Поздравляю!! Непонятно только почему лучшиы оффер бил отвергнут?

Garry


I simply did not like them. :wink:
User avatar
Montchik
Уже с Приветом
Posts: 2119
Joined: 27 Dec 1999 10:01
Location: Воронеж -> Naperville, IL

Post by Montchik »

deschanel wrote:I would welcome some short answers for these 3 questions...
thanks.


- Inheritance vs composition
http://www.google.com/search?hl=en&q=In ... omposition

- Design patterns. Almost everybody asked about two ways of implementing Singleton.
http://www.google.com/search?hl=en&lr=& ... tnG=Search

- Java interfaces vs abstract classes.
http://www.google.com/search?hl=en&q=Ja ... %20classes


Google rulez! :umnik1:
User avatar
deschanel
Уже с Приветом
Posts: 189
Joined: 16 Jun 2005 07:31

Post by deschanel »

Montchik wrote:Google rulez! :umnik1:


thanks.
There is no way to fight the nature.
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Post by hooch »

Montchik wrote:
Brat wrote:Поздравляем с новой работой! Спасибо за интересный рассказ!

А почему, если ни секрет, Чикаго? Чаще люди наоборот едут с мид-веста в Калифорнию.


Спасибо, Brat.

Это первый вопрос, который мне задавали во время interview. :) LA слишком жаркое место для меня и семьи. Нам больше подходит четыре сезона. Второй момент это real estate prices. В LA аrеа цены просто сумашедшие.
Чикаго был выбран еще и потому что там хороший job market, что собственно и подтвердилось в процессе поиска работы.


Не хочется вас разочаровывать, но цены на дома здесь не намного ниже, нормальный дом в пределах 10-20 миль от Чикаго меньше чем за $600К здесь не купить. А уж климат, летом жарко и влажно, зимой оечнь холодно, было бы ладно, тут штормовые ветра 9 мес. в году почти ежедневно. :sadcry:
Comprehensiveness is
the enemy of comprehensibility .
SEL
Уже с Приветом
Posts: 14421
Joined: 31 May 2002 17:00

Post by SEL »

hooch wrote:Не хочется вас разочаровывать, но цены на дома здесь не намного ниже, нормальный дом в пределах 10-20 миль от Чикаго меньше чем за $600К здесь не купить. А уж климат, летом жарко и влажно, зимой оечнь холодно, было бы ладно, тут штормовые ветра 9 мес. в году почти ежедневно. :sadcry:
Ага-ага :sadcry:
Хотя мы не в Чикаго перехали,а в Висконсин,что-то дешевизны в пригодных для жизни местах я не заметила :sadcry: И жарко + влажно-это совсем кранты однако :sadcry:
Сбегу в Калифорнию назад :mrgreen:
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

SEL wrote:Хотя мы не в Чикаго перехали,а в Висконсин,что-то дешевизны в пригодных для жизни местах я не заметила :sadcry: И жарко + влажно-это совсем кранты однако :sadcry:
Сбегу в Калифорнию назад :mrgreen:
Вы же Фресно сравниваете?
I hated LA
SEL
Уже с Приветом
Posts: 14421
Joined: 31 May 2002 17:00

Post by SEL »

WildVlad wrote:
SEL wrote:Хотя мы не в Чикаго перехали,а в Висконсин,что-то дешевизны в пригодных для жизни местах я не заметила :sadcry: И жарко + влажно-это совсем кранты однако :sadcry:
Сбегу в Калифорнию назад :mrgreen:
Вы же Фресно сравниваете?
Хе-хе
Фресно жарче ЛА скажу вам честно (летом)
Калифорния однако в стадии помешательства на тему недвижимости находится :roll: Так что я не сравниваю, а просто пишу свои наблюдения
Last edited by SEL on 08 Aug 2005 20:03, edited 1 time in total.
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

SEL wrote:Хе-хе
Фресно жарче ЛА скажу вам честно (летом)
Сбегать буду в другие части. По возможности не ЛА :hat:

Знаю я что жарче. 90F+ ночью :mrgreen:
Да, в LA однозначнА делать неча :)
I hated LA
Orest
Уже с Приветом
Posts: 543
Joined: 25 Jul 2001 09:01
Location: South Ukraine -> South West

Post by Orest »

В дополнение к тем конспектам по EJB/J2EE вот вам частые вопросы по plain Java, SWT, JDBC потому как - как правило, без java ниодно такое (J2EE) интервью не обходиться.

http://www.techinterviews.com/?p=214
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

Orest wrote:В дополнение к тем конспектам по EJB/J2EE вот вам частые вопросы по plain Java, SWT, JDBC потому как - как правило, без java ниодно такое (J2EE) интервью не обходиться.

http://www.techinterviews.com/?p=214
Только осторожно с этим. Насчитал несколько неточностей, так что на 100% веру принимать не стоит. Примеры:

15(юникодов на самом деле много и далеко не все из них 16ти битные),
30 (see boxing in java5 (?), а также иногда reflection может сконвертит int<->Integer),
31 (нет определения что же на самом деле cloneable),
32 (бред полнейший - a)abstract класс не обязан иметь abstract method; b) неправильно построено предложение - пропущено слово abstract перед method; c) ну то есть если я декларирую абстрактный класс, то я должен сразу декларировать потомка??? а если не задекларировал?)
43. Если бы только two :)
44. Полнейший бред. То есть daemon - это только GarbageCollector thread????
45. то есть, например, java.lang.System.in это не глобальная переменная? Ну синтакс доступа чуть длиннее, но смысл то тот же :mrgreen:
51. Если предыдущий security manager не против :)
70. ну не только SQL можно вызывать через JDBC. Можно аще по методате пройтись :)
85. а разве h) еще жив? ну и где же WebSphere?
87. При чём тут a)? Ну может как-то можно что-то протрачить через какие-нибудь client-side сертификаты... но к теме вопроса это отшоения не имеет. e) типа session tracking делается через http session :) не поспоришь :) Правда в качестве компенсации забыли про SSL - этим тоже можно тракить :)
93. парметры разделяются через & а не через ||
94. не совсем точно.
104 - порадовал ответ :) ну то есть умение написать какие-то слова при этом не несущие ни какой смысловой нагрузки :)
105. jar может быть и uncompressed :) suprise. вывод верный, а логика не совсем :)


короче, выглядит как индусская шпаргалка :)
I hated LA
Nik0
Posts: 16
Joined: 11 Oct 2002 22:55

Post by Nik0 »

[quote="WildVlad"][quote="Nik0"]Или more than
one class loaders.[/quote]Вот он правильный ответ :) То есть если один и тот же класс загружен sibling classloader'ами, то это будут два разных класса (с одним именем!), и соответственно получим два синглетона...
А используется это внутрях app server'ов, чтобы одна аппликуха не мешала другой, например. Ну и еще с этим усиленно борются там же внутрях, чтобы те синглтоны, которые должны быть синглетонами ими и оставались :)[/quote]

(Sorry for plain Engligh - no RU keyboard at work)
Ok! I am not sure if they (at Sun) are fighting against doubling singletons,
but one of them (Sun gurus) has actually put a nice article about singletons
and how to use them AND how to create more than one!

And like I said - it is always good to tell what is the purpose of one
and what are other constraints.Reflection, deserialization, using
.class.newInstance() - all are valid options provided conditions are
met.
Cheers.

Nik
(Canada)
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

Nik0 wrote:Ok! I am not sure if they (at Sun) are fighting against doubling singletons,
but one of them (Sun gurus) has actually put a nice article about singletons
and how to use them AND how to create more than one!

And like I said - it is always good to tell what is the purpose of one
and what are other constraints.Reflection, deserialization, using
.class.newInstance() - all are valid options provided conditions are
met.
Не знаю, что именно там было написано, но вот попробуйте запустить

Code: Select all

import java.lang.reflect.Constructor;

public class T1 {

   public static void main(String[] args) throws Exception {
      S1 s1 = S1.getInstance();
      try {
         S1 s2 = (S1) s1.getClass().newInstance();
      } catch (Throwable t) {
         t.printStackTrace(System.out);
      }
      
      Constructor constructor =  s1.getClass().getDeclaredConstructor(new Class[0]);
      constructor.setAccessible(true);
      S1 s3 = (S1)constructor.newInstance(new Object[0]);
      System.out.println(s3);
      System.out.println(s1 == s3);
   }

}
class S1 {
   
   private S1(){
   }
   private final static S1 instance = new S1();
   
   public static S1 getInstance(){
      return instance;
   }

}

Результат:

Code: Select all

java.lang.IllegalAccessException: Class T1 can not access a member of class S1 with modifiers "private"
   at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
   at java.lang.Class.newInstance0(Class.java:302)
   at java.lang.Class.newInstance(Class.java:261)
   at T1.main(T1.java:10)
S1@765291
false

Тупой вызов S1 s2 = (S1) s1.getClass().newInstance(); кидает IllegalArgumentException... Надо явно делать setAccessible(true) конструктору (здесь SecurityManager проверит допустимость такого безобразия)... Причём его можно получить только через Class#getDeclaredConstructor, а просто Class#getConstructor его не вернёт...

Ну и десериализовать в обход конструктора можно только что-нибудь Serializable :)
I hated LA

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