почему нет смысла ехать по H1B?

User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

Misha wrote:Уточню - лотереей называется такой процесс отбора, когда выигрывает меньшинство... гораздo меньше половины участников. А когда каждый, скажем, четвертый, проигрывает - это не лотерея.

а разве это уже не так? желающих получить ГК давно уже превысило квоту в разы, из-за чего все эти cut-off dates и получились. Как следствие, начали влиять факторы, которые вроде бы не имеют отношения к получению ГК, а на самом деле очень даже имеют - слияние компаний, их разорение, передислокация человека в другой штат в офис той же компании и т.п. За длительный срок может много чего случиться и случается. З-ны Мерфи надеюсь не забыли?
User avatar
Misha
Уже с Приветом
Posts: 29235
Joined: 04 Jan 1999 10:01
Location: Portland OR, USA

Post by Misha »

Flash-04 wrote:
Misha wrote:Уточню - лотереей называется такой процесс отбора, когда выигрывает меньшинство... гораздo меньше половины участников. А когда каждый, скажем, четвертый, проигрывает - это не лотерея.

а разве это уже не так? желающих получить ГК давно уже превысило квоту в разы, из-за чего все эти cut-off dates и получились. Как следствие, начали влиять факторы, которые вроде бы не имеют отношения к получению ГК, а на самом деле очень даже имеют - слияние компаний, их разорение, передислокация человека в другой штат в офис той же компании и т.п. За длительный срок может много чего случиться и случается. З-ны Мерфи надеюсь не забыли?


Я кажется уже четко сформулировал - о том, является ли сегодняшняя ситуация лотереей можно будет судить лет через пять. На сегодняшний день я могу только сказать что глядя с моей колокольни те, кто, скажем, приехал в 99-ом преувеличивают риск, когда говорят что и в те времена была лотерея. Мысль понятна?
User avatar
DP
Уже с Приветом
Posts: 17359
Joined: 24 Jan 1999 10:01
Location: Pittsburgh, PA, USA

Post by DP »

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


Лотерея была ехать на работу где спонсор делал LC в богоизбранных штатах типа California... сколько там Linus Torvalds времени провел на данном этапе ???
User avatar
Misha
Уже с Приветом
Posts: 29235
Joined: 04 Jan 1999 10:01
Location: Portland OR, USA

Post by Misha »

DP wrote:
Misha wrote:На сегодняшний день я могу только сказать что глядя с моей колокольни те, кто, скажем, приехал в 99-ом преувеличивают риск, когда говорят что и в те времена была лотерея. Мысль понятна?


Лотерея была ехать на работу где спонсор делал LC в богоизбранных штатах типа California... сколько там Linus Torvalds времени провел на данном этапе ???


Линус перебрался в Портланд года два назад, значит лет 5 провел в Калифорнии?

А вообще именно на мысль о том, что Лотерея была ехать на специфическую работу здесь на Привете встречается некоторыми в штыки.
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

Kuzmin99 wrote:дык, вы же тут заявили что с переводами и прочими английскими вещами аборигены лучше справятся. вот я наглядно показал что не лучше. причем настолько нелучше что у них даже на дип работе сидят такие которые грамматику английского не знают (был случай мне переводчик рассказывал как он столкнулся с людьми из канадского пос-ва которые делают грубые ошибки в грамматике)

Хорошо. Тем инженерам, которые хотят работать переводчиками, нужно ехать в Америку. В Англии, Ирландии, Австралии, Новой Зеландии, Канаде, английский, совсем не английский. Я правильно понял?
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

Misha wrote:А вообще именно на мысль о том, что Лотерея была ехать на специфическую работу здесь на Привете встречается некоторыми в штыки.

Что за "специфическая работа"?
User avatar
Misha
Уже с Приветом
Posts: 29235
Joined: 04 Jan 1999 10:01
Location: Portland OR, USA

Post by Misha »

KP580BE51 wrote:
Misha wrote:А вообще именно на мысль о том, что Лотерея была ехать на специфическую работу здесь на Привете встречается некоторыми в штыки.

Что за "специфическая работа"?


Это у нас щас сказка про белого бычка получится. :mrgreen:

Есть работа где делают ГК сразу, а есть где не сразу. И т.д. и т.п. - много отличий. К примеру, у меня начали сразу, а у моих друзей через год. А поскольку они приехали на год позже, в 2000-ом, то им с грехом пополам начали летом 2001-го, а тут 11 сентября ёкнуло. Обе фирмы - очень большие и солидные, между прочим.

Вот и DP подразумeвает специфику некоторых фирм, которые где-то делали а где-то не делали ....
User avatar
Двуручник
Новичок
Posts: 22
Joined: 12 Sep 2004 02:45
Location: PA, USA

Post by Двуручник »

Gennadiy wrote:
2005 wrote:Лучше расскажите на каких вопросах народ засыпается? Интересен уровень.

Хе. В последнее время у меня появился любимый вопрос для Кумаров и Пателов.
Есть ArrayList (для тех кто не работает с .NET - это самый используемый collection class в 1.0 и 1.1 (народа знающего 2.0 мне еще не попадалось)) в который поместили кучу строк (string).
Надо удалить все строки начинающиеся с "A". Конкретной имплементации не спрашиваю. Только идею.
Каких только замысловатых алгоритмов мне не придумывали. 8)


Если лист большой можно и по-замысловатее, чтоб побыстрее работало...

aList.Sort();

int start = aList.Count;
for(int i=0; i<aList.Count; i++) {
if(aList[i].ToString().StartWith("A")) { start = i; break; }
}

int end = -1;
for(int i=aList.Count; i>=0; i--) {
if(aList[i].ToString().StartWith("A")) { end = i; break; }
}

aList.RemoveRange(start,end-start);

Если бы было слово для фильтрации, а не просто "А", то можно было бы лаконичнее..

aList.Sort();
int start = aList.IndexOf("Apple");
int end = aList.LastIndexOf("Apple");
aList.RemoveRange(start,end-start);
User avatar
Scrooge McDuck
Уже с Приветом
Posts: 5598
Joined: 28 Nov 2005 06:56

Post by Scrooge McDuck »

DP wrote:
Misha wrote:На сегодняшний день я могу только сказать что глядя с моей колокольни те, кто, скажем, приехал в 99-ом преувеличивают риск, когда говорят что и в те времена была лотерея. Мысль понятна?


Лотерея была ехать на работу где спонсор делал LC в богоизбранных штатах типа California... сколько там Linus Torvalds времени провел на данном этапе ???

DP, пардон Вам что не очевидно, что Торвальдс шел как экстроординары? При безмерной поддержке кучи компаний. А то и просто, через какое-то время, как миллионер. Зачем Вы этот пример за уши притащили?
на войне только дурак строит долгие планы, на войне есть одна задача - пережить нынешний день
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

Scrooge McDuck wrote:DP, пардон Вам что не очевидно, что Торвальдс шел как экстроординары? При безмерной поддержке кучи компаний. А то и просто, через какое-то время, как миллионер. Зачем Вы этот пример за уши притащили?

А все самое сложное, сделал Столлман. :х
newbee
Уже с Приветом
Posts: 434
Joined: 02 Aug 2005 10:00
Location: RU76 -> IL -> WA

Post by newbee »

Двуручник wrote:Если лист большой можно и по-замысловатее, чтоб побыстрее работало...

aList.Sort();

Это уже как минимум ln(n)*n, а предлагаемые до этого алгоритмы тупого перебора дают n ;)
newbee
Уже с Приветом
Posts: 434
Joined: 02 Aug 2005 10:00
Location: RU76 -> IL -> WA

Post by newbee »

Gennadiy wrote:Обещаное fake resume:
IPRO TECHNOLOGIES LTD. (Feb. 98 – Apr. 02)

Infinity Computers U.K
Software Consultant
Internet Payment Gateway is a secure online payment-processing system that allows Internet-based businesses to authorize process and manage credit card transactions directly from the Web site. The server sends the data through the authorization network to the appropriate card issuer's bank, using a secure connection where numbers are checked for discrepancies to prevent fraudulent misuse.
• Extensively used ASP.NET to develop the front end screens
• C# is used in ASP.Net pages to take the advantage of object oriented .Net Framework class library.
• Developed business, database objects and security objects using C# and ADO.NET.
• Used ADO.NET Disconnected Dataset model to access the Database and compared the performance with already existing Data Retrieval methods in the System.

IPRO TECHNOLOGIES LTD. (Feb. 98 – Apr. 02)

• Worked with security policies and Principal Permission security classes in .NET for encrypted signing Data, Code access and role based security checks. Created XML web service to retrieve an XML feed from an online store based on the user search criteria and display the search results to the users.
• Used .Net framework class library, built user Interface that separated Application Logic from Presentation code using Code behind pages.
• Used Server side Controls, event driven code, Tracing and Debugging features, just in time compilation, Caching Services for better performance
• Used C# to develop COM components.
• Used private as well shared assemblies.
• Used C#, VB.net for XML web services in project.
• Implemented .Net Error handling techniques
Environment: ASP.Net, ADO.net, COM, JavaScript, XML, HTML, SQL Server 2000, Visual Studio.NET, SQL
Server 2000, Windows XP/2000


Резюме fake от первого до последнего слова. Интервью это было что-то. Жаль на диктофон не записал.


чувак утверждает что занимался .NET c 98 года :)
User avatar
Двуручник
Новичок
Posts: 22
Joined: 12 Sep 2004 02:45
Location: PA, USA

Post by Двуручник »

newbee wrote:
Двуручник wrote:Если лист большой можно и по-замысловатее, чтоб побыстрее работало...

aList.Sort();

Это уже как минимум ln(n)*n, а предлагаемые до этого алгоритмы тупого перебора дают n ;)


Log(n)*n - это операций чтения (добавлено строк) и замены указателей. Время сильно зависит от конкретной реализации методов Remove и RemoveRange... Опять же речь о большом количестве записей...

RemoveRange работает быстрее чем Remove, но Sort() конечно отнимает время тоже.

В эксперименте наблюдается следующая статистика.
Использовались строки 12 символов длиной, генерированые с использованием Random class. sval += (char)rnd.Next((int)'A',(int)'Z');

100 K строк:
ArrayList.Remove i-- loop (100000 records)(): Time: 0.421897 sec.
Sort()+ArrayList.RemoveRange way (100000 records)(): Time: 0.609406 sec.

200 К строк:
ArrayList.Remove i-- loop (200000 records)(): Time: 1.687586 sec.
Sort()+ArrayList.RemoveRange way (200000 records)(): Time: 1.296941 sec.

500 К строк:
ArrayList.Remove i-- loop (500000 records)(): Time: 14.891390 sec.
Sort()+ArrayList.RemoveRange way (500000 records)(): Time: 3.656437 sec.

700 К строк:
ArrayList.Remove i-- loop (700000 records)(): Time: 31.407860 sec.
Sort()+ArrayList.RemoveRange way (700000 records)(): Time: 5.156514 sec.

Если кому интересно, могу весь тестирующий код привести (если не верите моим цифрам).
Last edited by Двуручник on 21 Jun 2006 21:20, edited 1 time in total.
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

newbee wrote:чувак утверждает что занимался .NET c 98 года :)

Точно. :mrgreen: А говорят не мелочи не надо внимания обращать.
Aquila non captat muscas
Sam Adams
Уже с Приветом
Posts: 1316
Joined: 03 Jul 2003 06:02
Location: USA

Post by Sam Adams »

Двуручник wrote:Если кому интересно, могу весь тестирующий код привести (если не верите моим цифрам).


1) Ваш код не только удаляет элементы, но еще и сортирует коллекцию;
2) Если уж взялись сравнивать, то сравните лучше свой вариант и тот, который я предложил (один проход и одна операция удаления).
User avatar
Двуручник
Новичок
Posts: 22
Joined: 12 Sep 2004 02:45
Location: PA, USA

Post by Двуручник »

Sam Adams wrote:
Двуручник wrote:Если кому интересно, могу весь тестирующий код привести (если не верите моим цифрам).


1) Ваш код не только удаляет элементы, но еще и сортирует коллекцию;
2) Если уж взялись сравнивать, то сравните лучше свой вариант и тот, который я предложил (один проход и одна операцияудаления).


1 - Согласен. Можно использовать только когда неважна позиция в коллекции.

2. Мде.. Сымаю шапку, однако. Я так понимаю, вы этот алгоритм имели в виду.

int j = 0;
for (int i = 0; i < a3.Count; i++)
{
if( ((string)a3[i]).StartsWith("A")) { a3[j++] = a3[i]; }
}
if (a3.Count != j) { a3.RemoveRange(j, a3.Count - j); }


Sam Adams method (700000 records)(): Time: 0.187508 sec.
Sam Adams method (500000 records)(): Time: 0.125006 sec.
Sam Adams method (200000 records)(): Time: 0.062503 sec.
Sam Adams method (100000 records)(): Time: 0.031251 sec.
Sam Adams
Уже с Приветом
Posts: 1316
Joined: 03 Jul 2003 06:02
Location: USA

Post by Sam Adams »

Двуручник wrote:Log(n)*n - это операций чтения/замены указателей.


Кстати - да, заменяются указатели, но сравниваются ведь значения :wink:
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

Sam Adams wrote:Кстати - да, заменяются указатели, но сравниваются ведь значения :wink:

Может к нам на работу пойдете? ;)
Aquila non captat muscas
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

для того чтобы у Вас работать, нужно только знать что такое указатели и как с ними работать? :lol:
User avatar
Scrooge McDuck
Уже с Приветом
Posts: 5598
Joined: 28 Nov 2005 06:56

Post by Scrooge McDuck »

Flash-04 wrote:для того чтобы у Вас работать, нужно только знать что такое указатели и как с ними работать? :lol:

Вы бы знали какое количество народу идущих на позиции STE/SDET в тот же Mайкрософт этого не знает. Все эти их задачки на манипуляцию со строками как раз и позволяют хоть как-то достучаться до мозгов кандидата на сей счет.
на войне только дурак строит долгие планы, на войне есть одна задача - пережить нынешний день
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

вон оно что... похоже это продолжает оставаться кладезем мудрости :lol:
User avatar
Gennadiy
Уже с Приветом
Posts: 11332
Joined: 30 Mar 2000 10:01
Location: Ice Storm Town

Post by Gennadiy »

Flash-04 wrote:для того чтобы у Вас работать, нужно только знать что такое указатели и как с ними работать?

У каждого конечно разные критерии, но я считаю, что человек должен чуствовать себя свободно в програмировании. Для этого ему нужны мозги, опыт решения задач и здоровое любопытство. Все остальное (всякие там специфические технологии) он может подхватить очень быстро если надо.
Aquila non captat muscas
TuzemecIzMauy
Удалён за грубость
Posts: 101
Joined: 14 Jun 2006 08:53

Post by TuzemecIzMauy »

newbee wrote:чувак утверждает что занимался .NET c 98 года :)

мои наблюдения показывают что чуваки которые занимались .нет с 98 и ранее ОБЯЗАТЕЛЬНО имеют хорошую работу в штатах на хорошой зарплате! вот так! :umnik1:
User avatar
Flash-04
Уже с Приветом
Posts: 63377
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

Gennadiy wrote:У каждого конечно разные критерии, но я считаю, что человек должен чуствовать себя свободно в програмировании. Для этого ему нужны мозги, опыт решения задач и здоровое любопытство. Все остальное (всякие там специфические технологии) он может подхватить очень быстро если надо.

абсолютно совпадает с моей точкой зрения :fr:
User avatar
Sergey_P
Уже с Приветом
Posts: 5280
Joined: 01 Nov 2000 10:01
Location: (RU->WA->NJ->?)

Post by Sergey_P »

newbee wrote:
Двуручник wrote:Если лист большой можно и по-замысловатее, чтоб побыстрее работало...
aList.Sort();

Это уже как минимум ln(n)*n, а предлагаемые до этого алгоритмы тупого перебора дают n ;)


На самом деле все равно будет быстрее чем "тупого перебора", за исключкнием Sam Adams который в общем далеко не "тупого перебора".
Вот объясниите мне, почему нужен обязательно замысловатее?
В реальной жизни мв играемся с факторами K1* производительности(память/CPU)+K2*гибкость+K3*читабельность(время на понимание что код делает=> время нужное чтобы надти проблему или его модифицировать). В большей части случаев K3>>K1, но на интервью ожидают увидеть

Code: Select all

  int j = 0;
   for (int i = 0; i < list.Length; i++)
   {
      if ((string)list[i]).StartsWith(prefix))
      {
          list[j++] = list[i];
      }
   }
   if (list.Length != j)
   {
      list.Remove(j, list.Length - j);
   }


Сколько времени нужно чтобы понять, что этот алгоритм делает? Мне, на первый взгляд, кажется что он забивает строками StartsWith(prefix) начало массива, а потом удаляет из середины кусок еще незабитых строк.

Двуручник особенно если снабдит комментами

Code: Select all

aList.Sort();

int start = aList.Count;
for(int i=0; i<aList.Count; i++) {
if(aList[i].ToString().StartWith("A")) { start = i; break; }//первый элемент "A.."
}

int end = -1;
for(int i=aList.Count; i>=0; i--) {
if(aList[i].ToString().StartWith("A")) { end = i; break; }//последний элемент "A.."

}

aList.RemoveRange(start,end-start);


гораздо понятней, хотя тоже не идиал.. не говоря о том, что порядок элементов в исходном массиве мог иметь значение.
Сравните с

Code: Select all

      String bla = "A";
ArrayList noBlaInList = new ArrayList();
      for( int i=0; i< blaInList.size(); i++ ){
// add only noBla elements
if(!((String) listWithBla.get(i)).startsWith(bla))
 noBlaInList.add(listWithBla.get(i));
        }

Code: Select all

//ecли нужна гибкость – не ограничиваем тип входной коллекции ArrayList
// Iterator нам кое-что будет стоить, но непринципиально

      String bla = "A";
Iterator it = listWithBla.iterator();
      ArrayList noBlaInList = new ArrayList();
/*creates ArrayList without starts With bla elements */
      while(it.hasNext()){
         String s = (String)it.next();
         if(!s.startsWith(bla))noBlaInList.add(s);
      }

Code: Select all

//ecли нужно очистить исходный list убираем "!" и “no” 
 String bla = "A";
Iterator it = list.iterator();
      ArrayList blaInList = new ArrayList();
      while(it.hasNext()){
         String s = (String)it.next();
         if(s.startsWith(bla))blaInList.add(s);
      }
list.removeAll(blaInList);
или

Code: Select all

list.retainAll(noBlaInList);

IMO за исключкнием
List<string> a = ...
a.RemoveAll(delegate(string s) { return s.StartsWith("A"); });
самое читаемое решение.
Я не работал с FW2 (да и вообще с .NET только раз довелось поработать), но интуитивно код понятен. Вот интересно его по произволитеотности сравнить с моим, особенно по памяти.

Может мне кто объяснить почему на интервью отдают предпочтение не простым и практичным решениям, а позамысловатее.. причем обе стороны.
Помнится кто-то MS задачку подкинул .. что-то типа посчитать количество бензоколонок в US.. как потом выяснилось нужно порассуждать о потреблении бензина, etc. в результате ответ будет +/- порядки.. зачем? Бензоколоноки – бизнес который обязательно регистрировать => можно найдти совершенно точную (ну может не совсем свежую) информацию. Т.е. ожидается не решение проблемы, а упражнения "смотри какой я умный"

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