Придумать задачу для интервью по JAVA.

User avatar
valchkou
Уже с Приветом
Posts: 4185
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Придумать задачу для интервью по JAVA.

Post by valchkou »

Дается возможность поучаствовать в улучшении процесса найма.
Нужно до пятницы предложить задачку.
Задачка будет даваться на интервью. Кандидату будет дан 1 час и комп с эклипсом в уединенном помещении.
Ожидаемый уровень - сениор.
Требуется понять уровень из набора следуюших скилзов
- core java, понятие базовых концепций
- умение писать понятный и желательно тестируемый код
- unittest (желательно)
- дизайн паттернс в тему (возможно, если задача потребует)
- и вообще умение понять задачу

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

если есть идеи предлагайте, а я пока тоже думаю.
reality
Уже с Приветом
Posts: 256
Joined: 14 Jul 2011 09:07
Location: SaintP -> NYC

Re: Придумать задачу для интервью по JAVA.

Post by reality »

Вот задача на час. Довольно простая но на мой взгял показательная :-) Готовый юнит тест можно не давать, или дать базовый и попросить дописать до 100% покрытия к примеру

Code: Select all

import java.util.List;

/**
 * A template file with basic JUnit tests has been provided.
 * Note that your program will be evaluated by a more comprehensive test suite.
 *
 * Please consider the runtime and space complexity of your algorithms and comment on those trade offs.
 *
 * Good luck!
 */

public class ArrayFun {

    /***
     *  @param chars an array of characters
     *  @return the same array with the character order reversed
     */
    public static char[] reverse(char[] chars){
        //TODO - implement me!
        return null;
    }

    /***
     *  A palindrome is a word, phrase, number, or other sequence of units that may be
     *  read the same way in either direction.
     *
     *  Caveat 1 : punctuation and spaces do not count as contributing characters
     *    (hint) use the static method Character.isLetter(char c)
     *
     *  Caveat 2 : upper case letters should still match with lower case
     *    (hint) use the static method Character.toLowerCase(char c)
     *
     *  Examples of valid palindromes :
     *
     *  "Never odd or even"
     *  "No trace; not one carton"
     *  "A Toyota! Race fast... safe car: a Toyota"
     *  "Sums are not set as a test on Erasmus"
     *
     *  @return true if chars form a valid palindrome, otherwise false
     */
    public static boolean isPalindrome(char[] chars){
        //TODO - implement me!
        return false;
    }

    /***
     * Find the most used char in the following char[]
     * If a few chars share the top count, return them all.
     *
     * Caveat 1: exclude the space (' ') character from your count.
     * Caveat 2: treat all uppercase characters as their lowercase counterpart
     *
     * @return the characters which appear most frequently
     */
    public static List<Character> mostUsedCharacter(char [] chars){
        //TODO - implement me!
        return null;
    }

    /***
     * Find the number of unique palindromes in the char array
     *
     * Example: for the array {'a', 'b', 'b', 'a', 'c', 'c', 'a', 'b' 'b', 'a', 'd', 'd', 'a'}
     *  the palindromes are
     *      abbaccabba
     *      bbaccabb
     *      baccab
     *      acca
     *      cc
     *      abba
     *      bb
     *      adda
     *      dd
     *
     * @return the number of unique palindromes in the character array
     */
    public static int numberOfPalindromes(char[] chars){
        //TODO - implement me!
        return 0;
    }

}

Code: Select all

import org.junit.Assert;
import org.junit.Test;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class ArrayFunTest {

    @Test
    public void testReverse() throws Exception {
        final char[] chars = "Novus".toCharArray();
        final char [] reversed = "suvoN".toCharArray();
        Assert.assertArrayEquals(reversed, ArrayFun.reverse(chars));
    }

    @Test
    public void testIsPalindrome() throws Exception {
        final char[] palindrome = "A Toyota! Race fast... safe car: a Toyota".toCharArray();
        final char[] notPalindrome = {'N','o','v','u','s'};
        Assert.assertTrue(ArrayFun.isPalindrome(palindrome));
        Assert.assertFalse(ArrayFun.isPalindrome(notPalindrome));
    }

    @Test
    public void testMostUsedCharacter() throws Exception{
        final char[] chars = "A Toyota! Race fast... safe car: a Toyota".toCharArray();
        final List<Character> output = ArrayFun.mostUsedCharacter(chars);
        Assert.assertEquals(output.size(), 1);
        Assert.assertEquals(output.get(0), new Character('a'));

        final char[] chars2 = "Abcba".toCharArray();
        final List<Character> output2 = ArrayFun.mostUsedCharacter(chars2);
        final Set<Character> resultSet = new HashSet<Character>(output2);
        Assert.assertEquals(output2.size(), 2);
        Assert.assertTrue(resultSet.contains('a'));
        Assert.assertTrue(resultSet.contains('b'));
        Assert.assertFalse(resultSet.contains('c'));
    }

    @Test
    public void testNumberOfPalindromes() throws Exception {
        char[] chars = "abbaccabbadda".toCharArray();
        int numPalindromes = ArrayFun.numberOfPalindromes(chars);
        Assert.assertEquals(numPalindromes, 9);
    }
}
User avatar
Dweller
Уже с Приветом
Posts: 12257
Joined: 20 Dec 2000 10:01
Location: Bellevue, WA

Re: Придумать задачу для интервью по JAVA.

Post by Dweller »

я бы не давал темплейты, пусть сами придумывают или берут из Eclipse
User avatar
Krys-Krys
Уже с Приветом
Posts: 12119
Joined: 15 Feb 2010 10:32
Location: Pacifica, CA

Re: Придумать задачу для интервью по JAVA.

Post by Krys-Krys »

Ну вот, правда это не на час и близко. Это не я правда придумала такое давать, и не скажу что очень даже хорошая задача.

You have two lists.
List A has m unique elements in random order.
List B has n non-unique elements in random order.
For each element of list A, there are one or more corresponding elements from list B.
Write a program that prints on the screen each element from list A. Under each element from list A, print out the corresponding elements from list B.

Вчера например выяснилось что товарищ и лист-то обойти нормально не может, а про хэш мэп намека не уловил тоже, и как хэш мэп работает и индекс в таблицах у БД тоже рассказать не осилил, при этом утверждал что Lead Java Developer.
User avatar
Komissar
Уже с Приветом
Posts: 64661
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Придумать задачу для интервью по JAVA.

Post by Komissar »

а в чем хранится correspondence between element A and elements B?
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Придумать задачу для интервью по JAVA.

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

Komissar wrote:а в чем хранится correspondence between element A and elements B?
Резонный вопрос. Взаимосвязь элементов A и B не указана.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Придумать задачу для интервью по JAVA.

Post by Kolbasoff »

valchkou wrote:Кандидату будет дан 1 час и комп с эклипсом в уединенном помещении.
А прекрасная тестировщица?
User avatar
Krys-Krys
Уже с Приветом
Posts: 12119
Joined: 15 Feb 2010 10:32
Location: Pacifica, CA

Re: Придумать задачу для интервью по JAVA.

Post by Krys-Krys »

Komissar wrote:а в чем хранится correspondence between element A and elements B?
Так в чем сохраните. :-) Есть 2 листа на входе с числами, а дальше делайте с ними что хотите включая создание новых структу. Один из вариантов решения например засунуть все в HashMap где ключи это числа из 1го списка и пройдясь по 2му списку разок можно в значение для ключа класть кол-во сколько встретили.
Т е на входе что-то типа
A - [1, 6, 7, 8]
B- [1, 6, 8, 8, 7, 1, 8, 7, 6]
Как-то так.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Придумать задачу для интервью по JAVA.

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

Kolbasoff wrote:
valchkou wrote:Кандидату будет дан 1 час и комп с эклипсом в уединенном помещении.
А прекрасная тестировщица?
Или вообще девушка, чтобы усложнить ему задачу. Вообщем вот такое интервью девелопера (хакера и т.п.):

(детям не смотреть)
phpBB [video]

http://www.youtube.com/watch?v=rUY8HysBzsE
User avatar
Komissar
Уже с Приветом
Posts: 64661
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Придумать задачу для интервью по JAVA.

Post by Komissar »

раз под "соответствием" подразумевается численное равенство "элементов" из двух листов, то задача сформулирована плоховато.

Хотя согласен, что неплохое начало для беседы по выявлению фродов.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Придумать задачу для интервью по JAVA.

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

Komissar wrote:раз под "соответствием" подразумевается численное равенство "элементов" из двух листов, то задача сформулирована плоховато.

Хотя согласен, что неплохое начало для беседы по выявлению фродов.
Ну да, как раз должно занять пару минут, чтобы уточнить формулировку (т.е. сформулировано действительно плохо) и еще 5 минут, чтобы написать (многие просто медленно на доске пишут).
User avatar
Krys-Krys
Уже с Приветом
Posts: 12119
Joined: 15 Feb 2010 10:32
Location: Pacifica, CA

Re: Придумать задачу для интервью по JAVA.

Post by Krys-Krys »

Komissar wrote:раз под "соответствием" подразумевается численное равенство "элементов" из двух листов, то задача сформулирована плоховато.

Хотя согласен, что неплохое начало для беседы по выявлению фродов.
Я просто из емейла скопировала. Как-то сложно понять что надо из условия но смысл такой что надо просто посчитать сколько каждый элемент из А встречается в В в принципе.
Дать кандидату минут 15-20 самостоятельно подумать и пусть пишет что надумал на доске. :pain1:
User avatar
Dweller
Уже с Приветом
Posts: 12257
Joined: 20 Dec 2000 10:01
Location: Bellevue, WA

Re: Придумать задачу для интервью по JAVA.

Post by Dweller »

вот вариант для senior level
выдана схема кроссворда и словарь из 50-100 тыщ слов
задача заполнить пустые клетки словами, но это часа на 2-4 скорее а не на 1
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Придумать задачу для интервью по JAVA.

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

Krys-Krys wrote:Дать кандидату минут 15-20 самостоятельно подумать и пусть пишет что надумал на доске. :pain1:
15-20 минут думать над этой задачкой? :o
User avatar
Komissar
Уже с Приветом
Posts: 64661
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Придумать задачу для интервью по JAVA.

Post by Komissar »

ну если он глазами сверлит ее декольте, вместо того, чтобы задачу слушать... :oops:
User avatar
Krys-Krys
Уже с Приветом
Posts: 12119
Joined: 15 Feb 2010 10:32
Location: Pacifica, CA

Re: Придумать задачу для интервью по JAVA.

Post by Krys-Krys »

Интеррапт wrote:
Krys-Krys wrote:Дать кандидату минут 15-20 самостоятельно подумать и пусть пишет что надумал на доске. :pain1:
15-20 минут думать над этой задачкой? :o
Ну пусть подумает. Это для очень средненького девелопера таска. :pain1:
Вчера чел писал решения, как проходится по списку. Везде шел через loop с индексом и итераторы. Я у него спросила про generics, он сказал да-да, generics знаю и пользую. Тогда я сказала что у нас есть List<String> names который мы получаем из какого-то метода к примеру. Попросила его распечатать что в списке на экран. Он пошелся лупом с индексом, типа
for(int i=0; i<names.size(); i++). Тогда я сказала ему сделать тоже самое с generics, он стал делать это через итератор! Я поняла что про
for(Sting s: names){
System.out.println(s);
} синтакт он просто не знает. Ну как так? :pain1:
User avatar
Komissar
Уже с Приветом
Posts: 64661
Joined: 12 Jul 2002 16:38
Location: г.Москва, ул. Б. Лубянка, д.2

Re: Придумать задачу для интервью по JAVA.

Post by Komissar »

да ничего страшного. БОльшая часть моей жизни в Яве прошла до введения туда дженериков.
"И никто от этого не умер" (тм)

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

А про проверку строк (если у вас List<String>) на эквивалентность Вы его тоже попытали? Ибо там есть нюансы...
User avatar
Krys-Krys
Уже с Приветом
Posts: 12119
Joined: 15 Feb 2010 10:32
Location: Pacifica, CA

Re: Придумать задачу для интервью по JAVA.

Post by Krys-Krys »

Komissar wrote:да ничего страшного. БОльшая часть моей жизни в Яве прошла до введения туда дженериков.
"И никто от этого не умер" (тм)

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

А про проверку строк (если у вас List<String>) на эквивалентность Вы его тоже попытали? Ибо там есть нюансы...
Ну generics уже с 5й джавы есть это уже 10 лет на рынке!
Да что тут спрашивать то, еще спросили про индексы в БД, про то на чем основам принцип работы, про HashMap, в общем он ничего не ответил нормально. Вообще никак.
Потом я еще про maven у него пару вопросов спросила, там он тоже не ответил. Спросила просто так -
у нас есть проект который мы надевелопили год назад и все защибись работает. Все зависимости в виде jars у нас описаны в <dependencies> секции, мы отдает проект контрактору который не у нас в офисе сидит а удаленнищику, а у него проект через mvn clean install не билдится и ошибка в том что какая-то dependency не найдена в public repository. Почему так что у нас работает у всех в компании а у него нет? Как нам решить проблему? По хорошему и "по быстрому"? Есть как минимум 2 решения что я вижу - в общем он ни на 1 из этих вопросов тоже не ответил.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Придумать задачу для интервью по JAVA.

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

Krys-Krys wrote:Тогда я сказала ему сделать тоже самое с generics, он стал делать это через итератор! Я поняла что про
for(Sting s: names){
System.out.println(s);
} синтакт он просто не знает. Ну как так? :pain1:
Ну если бы чувак нормально решил задачу, я бы забил на foreach синтаксис. Хотя бы просто по той причине, что если посмотреть каким-нибудь JAD, что же генерится для
for(String s: names),

то мы бы увидели, что компилятор генерит:

for(Iterator iterator = names.iterator(); iterator.hasNext(); и т.д. и т.п.)

т.е. таки генерит те самые итераторы. Так что можно списать на то, что чувак компилятору работу упростиль. Лишь бы задачу нормально решил. А синтаксис - хрен с ним, его любой выучить может.
User avatar
Sergunka
Уже с Приветом
Posts: 34124
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Придумать задачу для интервью по JAVA.

Post by Sergunka »

valchkou wrote:Дается возможность поучаствовать в улучшении процесса найма.
Нужно до пятницы предложить задачку.
Задачка будет даваться на интервью. Кандидату будет дан 1 час и комп с эклипсом в уединенном помещении.
Ожидаемый уровень - сениор.
Требуется понять уровень из набора следуюших скилзов
- core java, понятие базовых концепций
- умение писать понятный и желательно тестируемый код
- unittest (желательно)
- дизайн паттернс в тему (возможно, если задача потребует)
- и вообще умение понять задачу

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

если есть идеи предлагайте, а я пока тоже думаю.
Что спрашивали меня

Задача лифта т.е. интерфейс там типо

up()
down()
stop()
call(int i)
int getFloor()

Sleeping Barber - хорошая задачка я бы спросил если чел реально в мультипоточность идет.

Так же спрашивали пару раз Судоку

Не помню спрашивали или это я сам фигней маялся еще крестики нолики неплохо выглядят для задачки на час.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Придумать задачу для интервью по JAVA.

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

Sergunka wrote:еще крестики нолики неплохо выглядят для задачки на час.
Разве что пять-в-ряд (gomoku) :)
User avatar
Sergunka
Уже с Приветом
Posts: 34124
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Придумать задачу для интервью по JAVA.

Post by Sergunka »

Интеррапт wrote:
Sergunka wrote:еще крестики нолики неплохо выглядят для задачки на час.
Разве что пять-в-ряд (gomoku) :)
А чо есть какая-то разница сколько там в ряд? :D Все должно быть конфигурабл 8)
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Придумать задачу для интервью по JAVA.

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

Sergunka wrote:
Интеррапт wrote:
Sergunka wrote:еще крестики нолики неплохо выглядят для задачки на час.
Разве что пять-в-ряд (gomoku) :)
А чо есть какая-то разница сколько там в ряд? :D Все должно быть конфигурабл 8)
Еще какая большая разница. 3x3 tic tac toe пишется буквально за 10 минут (ну ес-но без отрисовки графики, просто функции player(x,y), computer(x,y)), там просто тупо можно расписать массив с решениями. А 5 в ряд на каком-нибудь 15x15 (20x20 и т.п.) поле - там уже и сканировать массив нужно, и вводить коэфициенты весов для "думающего" алгоритма для компьютера (если мы имеем в виду крестики-нолики играть против компьютера).
User avatar
Dweller
Уже с Приветом
Posts: 12257
Joined: 20 Dec 2000 10:01
Location: Bellevue, WA

Re: Придумать задачу для интервью по JAVA.

Post by Dweller »

3*3 можно захардкодить :)
User avatar
Sergunka
Уже с Приветом
Posts: 34124
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Придумать задачу для интервью по JAVA.

Post by Sergunka »

Интеррапт wrote:
Sergunka wrote:
Интеррапт wrote:
Sergunka wrote:еще крестики нолики неплохо выглядят для задачки на час.
Разве что пять-в-ряд (gomoku) :)
А чо есть какая-то разница сколько там в ряд? :D Все должно быть конфигурабл 8)
Еще какая большая разница. 3x3 tic tac toe пишется буквально за 10 минут (ну ес-но без отрисовки графики), там просто тупо можно расписать массив с решениями. А 5 в ряд на каком-нибудь 15x15 (20x20 и т.п.) поле - там уже и сканировать массив нужно, и вводить коэфициенты весов для "думающего" алгоритма для компьютера (если мы имеем в виду крестики-нолики играть против компьютера).
Ну дык в этом и прикол как чел подходит к делу. Стратегия это отдельный момент чел их может описать отдельно задав глубину поиска. Главное посмотреть какой подход к структуре данных и вцелом как проект может развиваться.
"A patriot must always be ready to defend his country against his government." Edward Abbey

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