LINUX.ORG.RU
ФорумTalks

Придумываю задачки для собеседования. Помогите.

 ,


0

3

Сабж. Можно подсказать либо новые задачки, либо предложить интересные решения единственной, которую пока родил

Девушка-программистка Аня решила договориться со своими мч Олегом и Димой о графике уборки квартиры. Чтобы описать это наиболее эксплицитно, она на магнитики повесила на холодильник следующий манифест:

  boolean done = false;

  while (!done) {
      if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) == 21) {
      System.gc();
      done = true;
    }
  }

ВОПРОС: что Аня сделала неправильно? Назовите ошибки и предложите, как можно сделать то же самое, но лучше.

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

★★★★☆

Ответ на: комментарий от Deleted

поведай, что было в голове у человека, который хочет ComparableObject, но вместо этого берет любой Object и падает с ошибкой?

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

никогда не использовал TreeSet, никто вокруг его не использует, и надеюсь, в будущем тоже не будет этого делать
что было в голове у человека, который хочет ComparableObject, но вместо этого берет любой Object и падает с ошибкой?

речь связная

Deleted
()
Ответ на: комментарий от dikiy

это безработный алкаш, фрилансёр.

его на собеседования наверно не зовут в принципе

n_play
()
Ответ на: комментарий от stevejobs

Как починить? олсо, там еще осталось, если рассматривать многопоточный случай

Похоже на задание для Condition Variable, поскольку в цикле проверяется некоторое условие.

public class HouseCleaning implements Runnable {
    private final Lock lock = new ReentrantLock();
    private final Condition isTimeToClean = lock.newCondition();
    private volatile boolean timeToClean = false;
    private final static int CLEANING_HOUR = 21;
    private final static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");

    @Override
    public void run() {
        new Thread(new Husband("Oleg")).start();
        new Thread(new Husband("Dima")).start();

        Calendar calendar = Calendar.getInstance();
        long millisNow = calendar.getTimeInMillis();
        int nowHour = calendar.get(Calendar.HOUR_OF_DAY);
        if (nowHour > CLEANING_HOUR) calendar.add(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR, CLEANING_HOUR);
        calendar.set(Calendar.MINUTE, 0);
        long initialDelay = calendar.getTimeInMillis() - millisNow;

        new ScheduledThreadPoolExecutor(1).scheduleAtFixedRate(()->{
            System.out.println("It's " + dateFormat.format(new Date()) + ", somebody has to clean house");
            lock.lock();
            timeToClean = true;
            isTimeToClean.signal();
            lock.unlock();
        }, initialDelay, 1, TimeUnit.DAYS);
    }

    class Husband implements Runnable{
        public final String name;
        public Husband(String name){
            this.name = name;
        }

        @Override
        public void run() {
            while (true){
                lock.lock();
                try {
                    while (!timeToClean) isTimeToClean.await();
                    System.out.println(name + " cleans house");
                    System.gc();
                    timeToClean = false;
                } catch (Throwable t) {
                    lock.unlock();
                }
            }
        }
    }

    public static void main(String... args){
        new Thread(new HouseCleaning()).start();
    }
}

userd
()

Давай им задания максимально приближенные к реальным задачам, а не всяких там Ань с Димами. Или вы там The Sims 5 разрабатываете?

blackst0ne ★★★★★
()
Ответ на: комментарий от Jefail

Могу еще накинуть про пулл констант

Давай. Интересно, что там такое можно спросить про constant pool, кроме как он выглядит и как пользуется JVM.

emcode
()
Ответ на: комментарий от emcode

Например, вот так

public final class ConstantPool {

    String s1 = "hello";
    final String s2 = "hel";
    String s3 = "lo";
    String s4 = "hello";
    String s5 = new String("hello");

    public void equalsCheck() {
        System.out.println(s1 == s4);
        System.out.println(s1 == s2 + s3);
        System.out.println(s1 == s2 + "lo");
        System.out.println(s1 == s5);
        s5 = s5.intern();
        System.out.println(s1 == s5);
    }
}

Jefail ★★★★
()

А что ты этой задачей хочешь в человеке посмотреть?

Norgat ★★★★★
()
Ответ на: комментарий от Jefail

Что не так с этим методом?

Кто-то сам напоролся на вылет, а потом добавил вопрос для собеседования показывая какой он тут умный. А куча обезьян начинают обезьянничать и вот у нас новый вопрос-легенда для собеседований...

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)

Спроси будет ли работать этот код как точка входа (предварительно подчеркнув, что это интерфейс):

package foo.bar;

public interface Bar {

    static void main(String[] args) {
        System.out.println("Hello, World");
    }
}

Ответ не обязателен, но можно понять насколько человек любит программировать (на джаве в частности), подмечая его любопытство/удивление.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 3)

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

Leupold_cat ★★★★★
()

Спроси про лямбды, замыкания и прочее. Не ответят: гони в шею.

batya
()
Ответ на: комментарий от Jefail

Интересно, спасибо. Пришлось в JLS слазить, я почему-то был уверен что compile time константы обязаны быть финальными.

emcode
()
Ответ на: комментарий от Psych218

Почему у неё два мч?

потому, что Аня любит в два смычка!

Kompilainenn ★★★★★
()
Ответ на: комментарий от MimisGotAPlan

Нет деточка, ты видимо слегка не в курсе ситуации на рынке.

kirk_johnson ★☆
()

О, очередная любительница в два смычка

TooPar
()

Да, если такая «задача» попадется на таком «собеседовании», то кандидат может смело уйти с этого позорища.

Позорища для работодателя, естественно.

Учитесь троллить грамотно -

https://www.ozon.ru/context/detail/id/19157510/

(http://www.rulit.me/tag/business-books/dostatochno-li-vy-umny-chtoby-rabotat-...)

Bioreactor ★★★★★
()
Ответ на: комментарий от vertexua

Ну видно же, что он опять в изменённом состоянии сознания

leave ★★★★★
()
Ответ на: комментарий от stevejobs

интернт

intern() ?

Где хранится пул строк?

Если не ответил - «ненужен», иначе спрашиваем - что хранит область Perm Gen по спеке.

Спрашиваем далее - сколько времени хранятся «интернированные» строки.

А далее, если соискатель отвечает правильно - когда получим прирост производительности от intern(), а когда нет.

Ну вот набросал вопросики (несложные) навскидку.

(Впрочем, «засыпать» можно любого.)

ЗЫ. А сам автор топика про Аню использует Quartz? Вот тут можно по поводу реально _практически_ выполненных работ поспрашивать.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 2)
Ответ на: комментарий от foror

Это _будет_ работать.

Если, конечно, не

javac -source 1.x Bar.java

, где x меньше 8.

Вопрос корректнее задать так - а интересуется ли соискатель новыми веяниями и версиями целевого в программировании языка.

Bioreactor ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Девушка-программистка Аня

Без спермотоксикоза у вас там никого нет?

А может она такая же как Инженер по нагрузочному тестированию JVM в редхате

Siado ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.