Задачка про 8 шаров

Рубрика: Google, Задачки | 24 January 2011, 22:31 | Vadim Voituk

Нет, не подумайте, блог не умер. Он жив, жил и будет жить. Подтверждением этому являются бурные обсуждения в комментариях к некоторым заметкам.

Вот еще одна классическая задачка, которую опять же согласно слухам спрашивают в Google, и совершенно точно когда-то спрашивали в давно сгинувшей (или правильно говорить “переродившейся в Cogniance?”) Sonopia.

Итак у вас есть 8 шаров одинакового размера, при этом 7 из них весят одинаково, а один – существенно больше.

Задача: используя не более 2х взвешиваний типа “больше-меньше”, определить тяжелый шар.


Разминка для хвоста

Рубрика: Java, Задачки | 2 December 2009, 01:01 | juriy

Ух, как же давно ничего не писал в блог! Отчасти тому виной твиттер. Я обязательно напишу отдельную заметку об этом “убийце блогов”. А сейчас, хочу представить вам пару свеженьких Java задачек.
[Далее...]

Microsoft Interview и задачка о фруктах

Рубрика: Задачки, Работа | 16 November 2008, 00:24 | Vadim Voituk

На поза-прошлой неделе у меня происходил первый (телефонный) этап интервью в Microsoft Corporation.

Не смотря на то, что вакансия (которая кстати очень соответствовала моему профилю) была открыта не в саму M$, а в небольшую французкую компанию, не так давно приобретенную оным Microsoft, со мной связался именно рекрутер из американского подразделения M$.

О самой организации и подготовительном процессе особо рассказывать не буду, замечу лишь что:

  1. Имея не лучший опыт вечерних интервью – пытался договориться об утреннем времени проведения — мне отказали, без какой-либо аргументации. Просто “нет”, и баста.
  2. Резюме несколько раз “футболилось” от одного сотрудника Recruit dept. к другому, который в очередной раз просил ответить на одни и те же вопросы
  3. Для проведения телефонного интервью найсточиво предложили скачать и установить Skype (странно что не MSN), на ходу расхваливая какой это хороший и главное бесплатный сервис

В результате всего это создалось впечатление что тебя там и в грош не ставят, и я должен им ещё доплачивать за то, что они тратят на меня время.
Что довольно резко контрастировало с интервью, которые я проходил в Google и Yandex.
Там чувствуешь что компания в тебе заинтересована, и готова идти на, хоть и небольшие,  но уступки.

Теперь о самом интервью.

Проводила его девушка-рекрутер, как она сама сказала “non technical employe”.

При этом после вступительных разговоров (“Как вы себя видите в M$”, “Почему это вы вдруг заинтересовались нашей вакансией”, “Что вы знаете об MS”, etc), вопросов по резюме (“С какими языками/технологиями работали?”, “Работали ли с MSSQL?”, “Какой процент рабочего времени вы пишете код?” etc) начала задавать технические вопросы по OOП и Java.

Из того, что удается сейчас вспомнить – это “Что такое полиморфизм?”, “А правда ли, что Java разработана для создания сетевых и распределенных приложений?”:) (/me поулыбался, вспомнилась первая моя книга о Web-разработке которая именно так и начиналась)

Потом были вопросы: “Если бы вам нужно разработать WEB-сервис синхронизации времени, как бы вы это сделали” и “Расскажите о ваших критериях хорошего кода” .

После всего этого простая задачка про фрукты:

Есть 3 ящика фруктов – с апельсинами, с яблоками и с яблоками и апельсинами вперемешку.
На каждом ящике есть надпись, указывающая на содержимое ящика, но известно, что все надписи неверные.
Вопрос: Какое минимальное количество фруктов нужно достать из ящиков, чтоб точно идентифицировать их содержимое?
Аргументируйте.

После обсуждения этой задачки меня поздравили с успешным прохождением первого этапа интервью и посоветовали регулярнее проверять почту на предмет следующего этапа.

Ссылки “в тему”:

О прохождении интервью в Google  (начало, продолжение, the-end)  и Яндекс (начало, завершение)
Вопросы по PHP на собеседование в Yahoo

Задачка о шляпах от Microsoft
Как собеседовали 2х бывших сотрудников Google – я плакал

Exception… finally!

Рубрика: Java, Задачки | 26 December 2007, 11:02 | juriy

Вот еще один простой вопрос, который встречается на собеседованиях:

public class Test {

	public static void test() throws Exception {
		try {
			throw new Exception("A");
		} finally {
			throw new Exception("B");
		}
	}

	public static void main(String[] args) {
		try {
			Test.test();
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
}

Что будет напечатано в результате выполнения?

[Далее...]

Ещё одна задачка про Java internals

Рубрика: Java, Задачки | 1 December 2007, 22:36 | Vadim Voituk

Вот набрел в сети на ещё одну заковыристую задачу на знание спецификации Java
Код:
[java]

  double dd = 10.0;
  Double r = dd;
  Double r1 = dd;
  System.out.println("(r==r1) is "+(r==r1));

  Double r2 = 10.0;
  Double r3 = 10.0;
  System.out.println("(r2==r3) is "+(r2==r3));

  int ft = 21;
  Integer i1 = ft;
  Integer i2 = ft;
  System.out.println( "(i1==i2) is " + (i1==i2) );

  Integer i3 = new Integer(21);
  Integer i4 = new Integer(21);
  System.out.println("(i3 == i4) = "+(i3 == i4));

[/java]

Вопрос: что будет выведено на экран и почему?

Puzzles: Стрелки на часах

Рубрика: Задачки | 24 November 2007, 14:36 | Vadim Voituk

Не так давно заметил что со времен окончания университета когда я ещё ходил на университетский пары, мои логические способности решать примитивные логические задачки сильно пошатнулись. Ещё раз об это мне напомнило достаточно давнее интервью в компании Sonopia, а также не столь давнее в компании Google. Посему я решился таки воплотить в жизнь уже было заброшенную идею об аггрегации небольших несложных математических/логических/аглоритмических задачек “для развития мозгов”.

Первая задачка называется “Стрелки на часах”, задавалась лично мне на интервью в Sonopia, а также одному моему знакомому на интервью в Google.

[Далее...]

Loopy Curse

Рубрика: Java, Задачки | 16 November 2007, 12:27 | juriy

Хоть задачка, приведенная ниже, и не моя, я просто не мог удержаться и не внести ее в блог, чтобы друзья тоже получили повод посушить голову.

Вопрос, как нужно проинициализировать i, чтобы цикл был бесконечным:

[java]

// initialize i so that loop is infinite
while (i == i + 1);

[/java]

Ответ опубликую в понедельник, если никто раньше не догадается :)

Вот и наступила новая неделя – задачку, конечно, решили.

Для первой задачи ответ такой:

[java]

double i = Double.POSITIVE_INFINITY;
while (i == i + 1);

[/java]

Если объяснять ответ просто: то получится что-то вроде следующего. Каков результат выражения “бесконечность + 1″, естественно, все та же “бесконечность”.

В действительности, даже бесконечности не надо: достаточно просто большого числа. К примеру 1e24. Достаточное условие того, что цикл бесконечен – Math.ulp(i) > 1

Если объяснять подробно, то можно отправить читателей на статью в Wiki.

Что касается второй задачки – я нашел два решения: с автобоксингом и без. Оба привожу ниже:

[java]

double a = Double.NaN;
double b = Double.NaN;

[/java]

[java]

double a = new Integer(1);
double b = new Integer(1);

[/java]

Ещё одна Java-задачка

Рубрика: Java, Задачки | 24 June 2007, 19:24 | Vadim Voituk

Задали мне на днях задачку на знание Java:

Какой результат у выражения:
[java]((int) (char) (byte) -1)[/java]

Ответ написан ниже белым цветом на белом фоне :) [Далее...]

Quicklet 3

Рубрика: Java, Задачки | 16 April 2007, 18:05 | juriy

Сегодняшний quicklet не будет отличаться особой сложностью: проверьте себя, насколько хорошо вы знакомы с механизмом работы switch

[java]public class Test {
public static void testSwitch(int arg) {
switch (arg) {
case 1:
System.out.print(“1 “);
default:
System.out.print(“default “);
case 2:
System.out.print(“2 “);
}
System.out.println();
}

public static void main(String[] args) {
testSwitch(1);
testSwitch(2);
testSwitch(3);
}
}[/java]
[Далее...]

Quicklet 2

Рубрика: Java, Задачки | 11 April 2007, 13:55 | juriy

Вот еще один пример для разминки, наслаждайтесь. Как всегда, просьба сначала отвечать, а уж затем вызывать javac.

[java]

public class Test {

  private static void checkMe(String a, String b) {
    if (a == b)
      System.out.print("The same ");
    else
      System.out.print("Not the same ");

    if (a.equals(b))
      System.out.println(" and equals ");
    else
      System.out.println(" and not equals ");
  }

  public static void main(String[] args) {
    String a;
    String b;

    a = new String ("Are they the same?");
    b = new String ("Are they the same?");
    checkMe(a, b);

    a = "Not a chance?";
    b = "Not a chance?";
    checkMe(a, b);

    a = new String(b);
    b = new String(a);
    checkMe(a, b);
  }
}

[/java]

Что будет напечатано после выполнения фрагмента?
[Далее...]

Страница 1 из 212