какие вопросы по алгоритмам
-
- Уже с Приветом
- Posts: 10602
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
какие вопросы по алгоритмам
Собственно интерсует следующее. Какие обычно вопросы по алгоритмам задают на интервью? Отбросим в сторону вопросы по конкретным языкам программирования или платформам. Просто давно не был на интервью и хочется освежить (или выучить) память.
Спасибо
Спасибо
-
- Уже с Приветом
- Posts: 114
- Joined: 28 Sep 2007 07:18
- Location: MOW.RU-CA.US-MOW.RU-TLV.IL-WA.US
Re: какие вопросы по алгоритмам
Из того что помню:
- найти все подмножества множества (powerset)
- найти все комбинации и пермутации множества
- сравнить два BST
- поиск элемента в массиве, матрице
- поиск уникальных символов в строке
- первести число в римских цифрах в число из арабских цифр
- повернуть матрицу на 90 градусов без использования дополнительных структур данных
- определение простого числа
- поиск n-го числа фибоначи
Вообще все вопросы можно разделить на определенные группы - поиск, сортировка, использование различных структур данных и т.д. Если поднатаскаться по каждому типу вопросов, то на интервью нового уже мало встретится. У Гугла, Майкрософта, Амазона и др. в основном одни и те же вопросы задаются, у них фантазия ограничивается после определенного числа вопросов.
- найти все подмножества множества (powerset)
- найти все комбинации и пермутации множества
- сравнить два BST
- поиск элемента в массиве, матрице
- поиск уникальных символов в строке
- первести число в римских цифрах в число из арабских цифр
- повернуть матрицу на 90 градусов без использования дополнительных структур данных
- определение простого числа
- поиск n-го числа фибоначи
Вообще все вопросы можно разделить на определенные группы - поиск, сортировка, использование различных структур данных и т.д. Если поднатаскаться по каждому типу вопросов, то на интервью нового уже мало встретится. У Гугла, Майкрософта, Амазона и др. в основном одни и те же вопросы задаются, у них фантазия ограничивается после определенного числа вопросов.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: какие вопросы по алгоритмам
Я обычно захожу на glassdoors и смотрю что спрашивают в конкретную контору, помогает освежить память, и потом на интервью часто получал вопросы с которыми уже разобрался.shadow7256 wrote:Собственно интерсует следующее. Какие обычно вопросы по алгоритмам задают на интервью? Отбросим в сторону вопросы по конкретным языкам программирования или платформам. Просто давно не был на интервью и хочется освежить (или выучить) память.
Спасибо
In vino Veritas!
-
- Уже с Приветом
- Posts: 10602
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: какие вопросы по алгоритмам
посмотрел пару фирм и потом он попросил оставить свое review чтобоы смотреть дальше. Регистриться надо?crypto5 wrote:Я обычно захожу на glassdoors
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: какие вопросы по алгоритмам
Не помню, но это ведь не очень принципиально?shadow7256 wrote:посмотрел пару фирм и потом он попросил оставить свое review чтобоы смотреть дальше. Регистриться надо?crypto5 wrote:Я обычно захожу на glassdoors
In vino Veritas!
-
- Уже с Приветом
- Posts: 114
- Joined: 28 Sep 2007 07:18
- Location: MOW.RU-CA.US-MOW.RU-TLV.IL-WA.US
Re: какие вопросы по алгоритмам
+1 glassdoors, там самые свежие вопросы можно посмотреть.
Вот из этой книги часто вопросы попадались: http://www.careercup.com/book.
Вот из этой книги часто вопросы попадались: http://www.careercup.com/book.
-
- Уже с Приветом
- Posts: 568
- Joined: 06 Dec 2009 20:50
- Location: Kiev, UA -> Cupertino, CA
Re: какие вопросы по алгоритмам
А Гугл обязательно вопросы по алгоритмам задаёт? Просто я думаю туда послать резюме через пару месяцев (надо GC) - а у меня знаний по алгоритмам - ноль (образование экономическое) и я надеялся предложить им море опыта по разработке IDE на основе Eclipse + опыт очень сеньёрной работы по теме в конкуренте. Без алгоритмов не стоит и пытаться?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: какие вопросы по алгоритмам
Думаю что пытаться стоит но алгоритмы стоит подучитьzzhou wrote:А Гугл обязательно вопросы по алгоритмам задаёт? Просто я думаю туда послать резюме через пару месяцев (надо GC) - а у меня знаний по алгоритмам - ноль (образование экономическое) и я надеялся предложить им море опыта по разработке IDE на основе Eclipse + опыт очень сеньёрной работы по теме в конкуренте. Без алгоритмов не стоит и пытаться?
In vino Veritas!
-
- Уже с Приветом
- Posts: 108
- Joined: 22 Jan 2010 02:47
Re: какие вопросы по алгоритмам
Не то чтобы я встречал эти вопросы на интервью, но я бы спросил:
Есть текстовый файл в 100Гиг. У вас сутки чтобы отсортировать строки в алфавитном порядке.
Надо часто перемножать довольно большие матрицы (скажем 4000х4000). Напишите быстрый алгоритм перемножения. Написали? Сравните производительность в гигафлопах с заявленной производительностью проца. Если отличается более чем в 10 раз, объясните и перепишите. Если все равно отличается более чем в 2 раза, объясните почему и что надо делать. А если проц многоядерный? А если матрицы очень большие, можно ли еще ускорить?
На интервью однажды из 4 собеседований 3 раза спросили написать double-linked list
Есть текстовый файл в 100Гиг. У вас сутки чтобы отсортировать строки в алфавитном порядке.
Надо часто перемножать довольно большие матрицы (скажем 4000х4000). Напишите быстрый алгоритм перемножения. Написали? Сравните производительность в гигафлопах с заявленной производительностью проца. Если отличается более чем в 10 раз, объясните и перепишите. Если все равно отличается более чем в 2 раза, объясните почему и что надо делать. А если проц многоядерный? А если матрицы очень большие, можно ли еще ускорить?
На интервью однажды из 4 собеседований 3 раза спросили написать double-linked list
-
- Уже с Приветом
- Posts: 5898
- Joined: 19 Feb 2004 09:13
- Location: SFBA, CA
Re: какие вопросы по алгоритмам
Ворочать матрицы ни разу не просили, реверсировать строку, развернуть односвязный список или посчитать биты в байте просят гораздо чаще. Обычно большинство задач не выходят за пределы знания основных структур данных и базовых алгоритмов сортировки и поиска. Я перед началом поиска работы перечитываю первые несколько глав Кормена - всегда очень помогает. По поводу Google почитайте Get that job at Google - там где-то с середины описано что надо учить и почему.
-
- Уже с Приветом
- Posts: 34212
- Joined: 03 Dec 2000 10:01
- Location: Vladivostok->San Francisco->Los Angeles->San Francisco
Re: какие вопросы по алгоритмам
mudi wrote:Ворочать матрицы ни разу не просили, реверсировать строку, развернуть односвязный список или посчитать биты в байте просят гораздо чаще. Обычно большинство задач не выходят за пределы знания основных структур данных и базовых алгоритмов сортировки и поиска. Я перед началом поиска работы перечитываю первые несколько глав Кормена - всегда очень помогает. По поводу Google почитайте Get that job at Google - там где-то с середины описано что надо учить и почему.
mudi,
(ох и угораздило Вас выбрать никнейм, сначало написал по русски потом зачеркнул и переписал в оригинальной транскрипции )
Я Вам еще не выразил отдельную благодарность за помощь в поиске работы и ссылки которые Вы всегда любезно предоставляете в конце концов я купил книгу и нашел задачку из этой книжки которую мне индюк и подкинул про недостающий шар в общем описал как мог кому не лень можно почитать из так сказать свежака.
Вообще на мой взгляд все задачки практически известные так, что можно выучить без вопросов просто не ленится.
"A patriot must always be ready to defend his country against his government." Edward Abbey
-
- Уже с Приветом
- Posts: 5898
- Joined: 19 Feb 2004 09:13
- Location: SFBA, CA
Re: какие вопросы по алгоритмам
Пожалуйста. Рад, что ссылки пригодились. Кстати, вот еще одна ссылка, не помню давал я ее уже или нет - здесь собрано множество задач, которые дают на интервью в Microsoft и не только. Я тоже иногда даю на интевью задачки оттуда, и мне они попадались когда интевьюировался сам.Sergunka wrote:mudi,
(ох и угораздило Вас выбрать никнейм, сначало написал по русски потом зачеркнул и переписал в оригинальной транскрипции )
Я Вам еще не выразил отдельную благодарность за помощь в поиске работы и ссылки которые Вы всегда любезно предоставляете в конце концов я купил книгу и нашел задачку из этой книжки которую мне индюк и подкинул про недостающий шар в общем описал как мог кому не лень можно почитать из так сказать свежака.
Ну вобщем да. Полезно научиться распознавать класс задачи, запомнить несколько неочевидных решений или формул и понимать какие задачи к ним сводятся и какие сводятся к знанию базовых алгоритмов. Для примера из самого простого - нужно помнить, что x&(x-1) удаляет младший значимый бит. Интервьюшные задачи посчитать биты в слове или написать функцию, которая определяет является ли число степенью двойки решаются с ее помощью.Sergunka wrote: Вообще на мой взгляд все задачки практически известные так, что можно выучить без вопросов просто не ленится.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: какие вопросы по алгоритмам
Это ведь вроде неправильно, пример: x = 2 => x & (x - 1) = 2 & 1 = 10 & 01 = 0 - то есть удалило все биты..Для примера из самого простого - нужно помнить, что x&(x-1) удаляет младший значимый бит.
Интервьюшные задачи посчитать биты в слове или написать функцию, которая определяет является ли число степенью двойки решаются с ее помощью.
Мне кажется это очень не эфективно.
In vino Veritas!
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: какие вопросы по алгоритмам
Сорри, заглючил, это действительно работает.crypto5 wrote:Это ведь вроде неправильно, пример: x = 2 => x & (x - 1) = 2 & 1 = 10 & 01 = 0 - то есть удалило все биты..Для примера из самого простого - нужно помнить, что x&(x-1) удаляет младший значимый бит.
In vino Veritas!
-
- Уже с Приветом
- Posts: 5898
- Joined: 19 Feb 2004 09:13
- Location: SFBA, CA
Re: какие вопросы по алгоритмам
Это не единственный способ и не самый быстрый но самый простой пожалуй (не считая тупого цикла со сдвигом единички). Можно заранее посчитать все варианты и потом просто в массиве ответ по индексу доставать, если нужна скорость, ну и еще наверное с десяток способов есть.crypto5 wrote:Интервьюшные задачи посчитать биты в слове или написать функцию, которая определяет является ли число степенью двойки решаются с ее помощью.
Мне кажется это очень не эфективно.
-
- Уже с Приветом
- Posts: 1166
- Joined: 13 Jul 2010 18:13
- Location: Bay Area
Re: какие вопросы по алгоритмам
Обычно ожидают, что читал Hacker's Delight и знаешь как искать биты маской:
Способов дейсвительно много. Зависит все от постановки задачи (размер слова, параетры оптимизации и.т.д.).
Code: Select all
x = x - ((x >> 1) & 0x55555555);
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
x = (x + (x >> 4)) & 0x0F0F0F0F;
x = x + (x >> 8);
x = x + (x >> 16);
return x & 0x0000003F;
-
- Уже с Приветом
- Posts: 114
- Joined: 28 Sep 2007 07:18
- Location: MOW.RU-CA.US-MOW.RU-TLV.IL-WA.US
Re: какие вопросы по алгоритмам
Mне подсчет битов путем Brian Kernighan тоже лучше всего заполнился,
здесь есть несколько других путей, от сдвига на единицу до lookup table:
http://graphics.stanford.edu/~seander/b ... tKernighan
здесь есть несколько других путей, от сдвига на единицу до lookup table:
http://graphics.stanford.edu/~seander/b ... tKernighan
-
- Уже с Приветом
- Posts: 15477
- Joined: 27 Sep 2007 22:53
Re: какие вопросы по алгоритмам
Вот сегодня задал задачку про x>y индусу у которого в резюме прописано знание Java.Sergunka wrote: http://sergey-vyatkin.livejournal.com/1433.html
Вообще на мой взгляд все задачки практически известные так, что можно выучить без вопросов просто не ленится.
Он даже и этого не смог одолеть.
Но что поразило как при всем при этом он умудрялся нести бодрую околесицу, совершенно не сбиваясь с ритма.
-
- Уже с Приветом
- Posts: 1188
- Joined: 10 Jul 2010 03:46
Re: какие вопросы по алгоритмам
Надеюсь вы не ожидали довольно странного ответа (который находится по отквоченной ссылке), что нужно добавить throws NullPointerException в декларацию метода для unchecked исключения?Мальчик-Одуванчик wrote:Вот сегодня задал задачку про x>y индусу у которого в резюме прописано знание Java.Sergunka wrote: http://sergey-vyatkin.livejournal.com/1433.html
Вообще на мой взгляд все задачки практически известные так, что можно выучить без вопросов просто не ленится.
Он даже и этого не смог одолеть.
Но что поразило как при всем при этом он умудрялся нести бодрую околесицу, совершенно не сбиваясь с ритма.
-
- Уже с Приветом
- Posts: 15477
- Joined: 27 Sep 2007 22:53
Re: какие вопросы по алгоритмам
Меня бы вполне устроило если бы оппонент понимал разницу между int и Integer.
-
- Уже с Приветом
- Posts: 65206
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: какие вопросы по алгоритмам
экий Вы строгий к братьям меньшим
-
- Уже с Приветом
- Posts: 563
- Joined: 29 Apr 2010 00:57
Re: какие вопросы по алгоритмам
Вы имеете ввиду Int ?Мальчик-Одуванчик wrote:Меня бы вполне устроило если бы оппонент понимал разницу между int и Integer.
-
- Уже с Приветом
- Posts: 15477
- Joined: 27 Sep 2007 22:53
Re: какие вопросы по алгоритмам
между простым типом int и обьектом Integer.JMorgan wrote:Вы имеете ввиду Int ?Мальчик-Одуванчик wrote:Меня бы вполне устроило если бы оппонент понимал разницу между int и Integer.
-
- Уже с Приветом
- Posts: 563
- Joined: 29 Apr 2010 00:57
Re: какие вопросы по алгоритмам
тогда ОК вам..
и нах-нах таких индусов...
трудно представить более простого вопроса
- хотя идея этих обёрточных классов
с разными именами
с соответствующими базовыми типами
- немного корявая
и нах-нах таких индусов...
трудно представить более простого вопроса
- хотя идея этих обёрточных классов
с разными именами
с соответствующими базовыми типами
- немного корявая
-
- Уже с Приветом
- Posts: 990
- Joined: 27 Mar 2002 10:01
- Location: Palo Alto, CA
Re: какие вопросы по алгоритмам
Одноклассники ищут разработчиков на Java:
1. Сколько массивов размера 10000000 или более будет выделено в памяти при выполнении данного куска кода?
Выберите вариант ответа:
Отметьте все верные варианты ответа:
Отметьте все верные варианты ответа:
Отметьте все верные варианты ответа:
5. Какова оценка сложности приведенного ниже алгоритма в O-нотации, если N := set1.size(), K := set2.size()?
Выберите вариант ответа:
1. Сколько массивов размера 10000000 или более будет выделено в памяти при выполнении данного куска кода?
Code: Select all
Integer[] intArr = new Integer[10000000];
List<Integer> list = Arrays.asList(intArr);
List<Integer> list2 = new ArrayList<Integer>(list);
List<Integer> list3 = Collections.unmodifiableList(list);
List<Integer> list4 = Collections.synchronizedList(list);
Integer[] array = list2.toArray(new Integer[0]);
- 1
- 2
- 3
- 4
Code: Select all
class Increment1 {
volatile int i = 0;
void increment() {
i++;
}
void decrement() {
i--;
}
}
class Increment2 {
int i = 0;
synchronized void increment() {
i++;
}
void decrement() {
synchronized (this) {
i--;
}
}
}
class Increment3 {
int i = 0;
void increment() {
synchronized ((Object) i) {
i++;
}
}
void decrement() {
synchronized ((Object) i) {
i--;
}
}
}
- Increment1
- Increment2
- Increment3
Code: Select all
class Book {
private final String title;
private final String firstAuthor;
private final String secondAuthor;
...
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return title.equalsIgnoreCase(book.title) &&
((firstAuthor.equals(book.firstAuthor)
&& secondAuthor.equals(book.secondAuthor))
|| (secondAuthor.equals(book.firstAuthor)
&& firstAuthor.equals(book.secondAuthor)));
}
public int hashCode1() {
return 31 * (
31 * title.toUpperCase().hashCode()
+ firstAuthor.hashCode()
) + secondAuthor.hashCode();
}
public int hashCode2() {
return 31 * title.hashCode()
+ firstAuthor.hashCode() + secondAuthor.hashCode();
}
public int hashCode3() {
return 31 * title.toLowerCase().hashCode()
+ firstAuthor.hashCode() + secondAuthor.hashCode();
}
}
- hashCode1
- hashCode2
- hashCode3
Code: Select all
import java.util.concurrent.*;
class CachingFactory<K, V> implements Factory<K, V> {
private final Factory<K, V> factory;
private final ConcurrentMap<K, Future<V>> cache
= new ConcurrentHashMap<K,Future<V>>();
CachingFactory(Factory<K, V> factory) {
this.factory = factory;
}
@Override
public V newInstance(final K key) {
Future<V> future = cache.get(key);
if (future == null) {
FutureTask<V> futureTask = new FutureTask<V>(new Callable<V>() {
@Override
public V call() throws Exception {
return factory.newInstance(key);
}
});
future = cache.putIfAbsent(key, futureTask);
if (future == null) {
future = futureTask;
futureTask.run();
}
}
try {
return future.get();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
interface Factory<K, V> {
V newInstance(K key);
}
- 1. Если k1.equals(k2), то вызов newInstance(k1) всегда возвращает ссылку на тот же объект, что и вызов newInstance(k2), независимо от потока, который делает вызов.
- 2. Если !k1.equals(k2), то при параллельном вызове newInstance(k1) и newInstance(k2) из двух потоков, создание соответствующих объектов V может происходить параллельно.
- 3. Если k1.equals(k2), то при параллельном вызове newInstance(k1) и newInstance(k2) из двух потоков, в любом случае, будет создано не более одного объекта FutureTask<V>.
- 4. Если k1.equals(k2), то при параллельном вызове newInstance(k1) и newInstance(k2) из двух потоков, в любом случае, будет создано не более одного объекта V.
5. Какова оценка сложности приведенного ниже алгоритма в O-нотации, если N := set1.size(), K := set2.size()?
Code: Select all
boolean haveCommonElements(TreeSet<?> set1, TreeSet<?> set2) {
if (set1.size() > set2.size()) {
return haveCommonElements(set2, set1);
}
for (Object e : set1) {
if (set2.contains(e)) return true;
}
return false;
}
- O(N * K)
- O(N * log(K))
- O(min(N,K) * log(max(N,K)))
- O(max(N,K) * log(min(N,K)))