Skip to content


Нескучные вопросы для IT-собседования

  • Вы ранее привлекались за хранение данных в глобальных переменных?
  • Какой результат выполнения команды git push me and then just touch me till I can get my satisfaction, satisfaction?
  • Найдите точку G бинарным поиском.
  • Назовите свою любимую позу для стендап митинга.
  • Вы когда-нибудь делали .Net за деньги?
  • Сформулируйте зависимость времени исправления критического бага от seniority присутствующего менеджера.
  • В своём резюме вы указали знание php. Вам не стыдно?
  • Есть таблицы customer_id, product_name, purchase_date и набор css правил. Нарисуйте идеальный круг используя только тэг <table>
  • Вы способны довести девушку до оргазма языком программирования?
  • Полиморфизм, конкатенация, многопоточность... продолжите логическую цепочку.
  • Почему люк скайуокер круглый?
  • Какой из циклов быстрее, for, while или правило буравчика?
  • Обоснуйте полноту Javascript по Тьюрингу с позиций фрейдистской школы программирования.
  • Перед вами кисть, холст и мольберт. Напишите компилятор.
  • Расскажите что-нибудь про Pascal.
  • Расскажите о плюсах и минусах автокомплита в сексе.
  • Как часто Вы отбирали sudo на продакшене у разработчика? Через сколько, в среднем, Вы выдаёте его снова?
  • Как часто вы говорите своему коду "ну пожалуйста.."?
  • Перестаньте краснеть и хихикать! Повторяем вопрос: "Вы когда-нибудь ранее использовали LaTeX?"
  • У кого был самый длинный код в вашей прошлой команде?
  • Вы моете руки перед правкой кода на продакшне?
  • Что вызывает у вас бóльшую улыбку: "I have read and agree to the terms and conditions" или подпись под соглашением о неразглашении?
  • В резюме указано, что ваша последняя должность — delivery manager... вы пиццу что ли разносили?
  • А вы в planning poker как предпочитаете играть — на деньги или на раздевание?
  • Насколько сильно у вас развит дар велосипедостроения?
  • Вас раньше обвиняли в попытках программировования?
  • Заступая в должность разработчика, готовы ли вы дать присягу на книге Боба Мартина "Чистый код"?
  • Ну признайтесь уже — джаваскрипт алертами дебажили?
  • Можете ли вы провести аналогию между работой на пятилетнем проекте и проктологией?
  • Что, по-вашему мнению, более эффективно: скопипастить код из примеров или убедить заказчика, что ему не нужна эта фича?
  • push --force, checkout — а какие еще способы разрешения конфликтов вы знаете?
  • Если честно, то нас немного смущает тот факт, что вы искали работу программиста через биржу труда...
  • Согласны ли вы что каждый девелопер должен посадить зрение, построить велосипед и вырастить репозиторий?
  • В своем резюме вы указали, что хотели бы поработать на интересном проекте... Вы этот проект с собой принесли?
  • Правда ли, что смесь php, css, js, html и sql в одном файле имеет слабительный эффект?
  • А есть примеры ваших работ не на перфокартах?
  • Найдите оптимальное решение данной задачи не более чем за 3 запроса в гугл.
  • Согласны ли вы, что у админа должна быть борода, даже если админ — женщина?
  • Скажите, вы когда-нибудь симулировали ООП?
  • Изобразите на языке жестов понятие "полиморфизм".
  • Сколько процентов кода со stackoverflow.com содержалось в вашем последнем проекте?
  • Умеете ли вы "договариваться" с QA накануне релиза?
  • В каких единицах измеряется радиус кривизны кода?
  • Сколько раз в день вы пользуетесь фразой "Не знаю, локально все работает"?
  • Каким вы видите свой код через пять лет?
  • Разрешена ли в нашей стране пропаганда табличной верстки?
  • Как вы относитесь к однополому парному программированию?
  • Как дебажить векторный код на растровых мониторах?
  • Каковы нормативы для показателя lines per gallon для senior software engineer?
  • Спроектируйте отказоустойчивый веб-кластер, используя приставки Dandy и телефоны Nokia.
  • Какова ваша скорость полной сборки-разборки билда?
  • Раскройте геополитические предпосылки kernel panic с точки зрения теории струн.
  • Какую эмоцию вам напоминает смайл O(n) ?
  • Назовите стоимость разработки среднестатистического приложения в килокалориях.
  • Так... вы тут написали "Объектно-ориентированый CSS"... А какие еще проявления шизофрении вам известны?
  • Покупаете ли вы страховку на случай падения вашего кода на продакшене?
  • Какие патерны проектирования детей вы знаете?
  • Какие методологии вы используете при знакомстве с девушками, scrum или agile? Чем они лучше ad hoc в одиночестве?
  • Xbox, PlayStation или Terminal — какую консоль предпочитаете?
  • Вас когда-нибудь запирали в серверной? За что?
  • Какие приемущества force push перед стандартной работой с репозиторием? сколько времени данная методика экономит лично вам?
  • Скажите честно, вы врёте в LinkedIn?
  • По каким внешним признакам разработчика можно определить длину спринта?
  • Вы толерантны к копипастам?
  • "Семь раз update один раз commit" или "семь раз commit один раз revert" - какой методологии вы придерживаетесь?
  • Цикл, условие, переменная — а какие еще термины из С++ вы знаете, чтобы отказать парню?
  • Цой, Ленин, PHP — что между ними общего?
  • Как объяснить джуниору что пинговать сервера в его возрасте – это нормально?
  • Назовите самое экстремальное место в котором вы занимались багфиксингом.
  • Напишите простейшую операционную систему. Уложитесь в 140 символов.
  • Как часто вы играете со шрифтами?
  • В резюме сказано, что вы проработали 10 лет в отделе тестирования майкрософт. Мы проверили - такого отдела не существует!
  • Как вы относитесь к легализации курения мануалов?
  • велошлем купить

    Posted in Fun.


    Создание swap-файла в файле :)

    Уж простите за тавтологию, но иногда создавать новый дисковый раздел под раздел подкачки (swap) не представляется возможным. В таких случаях можно создать его в виде файла в файловой системе. Для примера рассмотрим создание дополнительного swap-файла размером 8ГБ:

    Дополнительный swap-файл в linux

    Создание дополнительного файла подкачки

    # dd if=/dev/zero of=/swapfile bs=1M count=8192
    8192+0 records in
    8192+0 records out
    8589934592 bytes (8,6 GB) copied, 13,2861 s, 647 MB/s
     
    # ls -l /swapfile 
    -rw-r--r--. 1 root root 8589934592 Май 12 11:13 /swapfile
     
    # mkswap /swapfile 
    mkswap: /swapfile: warning: dont erase bootbits sectors
            on whole disk. Use -f to force.
    Setting up swapspace version 1, size = 8388604 KiB
    no label, UUID=278eca1b-2af8-4e42-be11-5025ba0f3d8d

    Обратите внимание на размер свободного swap-а после первой и второй команд free:

    # free; swapon /swapfile ; free
                 total       used       free     shared    buffers     cached
    Mem:      32867736   30405392    2462344          0     153196    8790844
    -/+ buffers/cache:   21461352   11406384
    Swap:      8388600       7596    8381004
                 total       used       free     shared    buffers     cached
    Mem:      32867736   30411360    2456376          0     153196    8790844
    -/+ buffers/cache:   21467320   11400416
    Swap:     16777200       7596   16769604
     
    # echo '/swapfile none swap sw 0 0' >> /etc/fstab

    Posted in *nix.

    Tagged with , .


    MySQL 5.6 и sql_mode

    После переезда с версии MySQL 5.5.13 на 5.6.10 стали вылезать странные грабли.

    Симптом №1:

    Caused by: java.sql.SQLException: Incorrect string value: '\xE6\xAF\x94FOX...' for column 'parameter_value' at row 4
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)

    Симптом №2:

    Data truncation: Data too long for column 'channel' at row 1
    org.hibernate.exception.DataException: could not execute native bulk manipulation query

    Так как "раньше всё работало" и в код приложения никто изменений не вносил, закралось подозрение, что новый mysql работает в каком-то более строгом режиме. Гугление вывело на глобальную переменную sql_mode.

    mysql> show global variables like 'sql_mode';
    +--------------------------+--------------------------------------------+
    | Variable_name            | Value                                      |
    +--------------------------+--------------------------------------------+
    | sql_mode                 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
    +--------------------------+--------------------------------------------+

    Читаем официальное руководство и видим:

    STRICT_TRANS_TABLES
    If a value could not be inserted as given into a transactional table, abort the statement. For a nontransactional table, abort the statement if the value occurs in a single-row statement or the first row of a multiple-row statement.

    На основе этой инфы приходит в голову мысль, что надо этот режим STRICT_TRANS_TABLES попробовать отключить:

    mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
     
    mysql> show global variables like 'sql_mode';
    +---------------+------------------------+
    | Variable_name | Value                  |
    +---------------+------------------------+
    | sql_mode      | NO_ENGINE_SUBSTITUTION |
    +---------------+------------------------+

    И таки да, после этого запросы, ранее выполнявшиеся с ошибками, стали отрабатывать нормально, как и было на версии 5.5.13. Чтобы сохранить изменения навсегда, в /etc/my.cnf я добавил в секции [mysqld]

    sql-mode="NO_ENGINE_SUBSTITUTION"

    Однако далее меня ждала еще одна засада – после рестарта mysql-сервера я опять увидел знакомую картину, несмотря на внесенные в /etc/my.cnf изменения:

    mysql> show global variables like 'sql_mode';
    +--------------------------+--------------------------------------------+
    | Variable_name            | Value                                      |
    +--------------------------+--------------------------------------------+
    | sql_mode                 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
    +--------------------------+--------------------------------------------+

    Это было непостижимо и удивительно. Я уже и еще раз проверил hostname у сервера, дабы убедиться, что всё ранее сделанное происходило именно на том сервере, где и должно было происходить. Почесав пару минут репу, решил проверить наличие других конфигов mysql-сервера в системе. И таки нашёл один такой в /usr/my.cnf:

    $ cat /usr/my.cnf | grep -vE "^#" | sed -r "/^$/ d"
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    Вот он, вражеский конфиг, который переопределял моё значение sql_mode! Что самое прикольное, больше ничего в этом конфиге не было. Как будто его специально всунули, чтобы добавить мне головняка. После удаления файла /usr/my.cnf и рестарта mysql-сервера я уже раз и навсегда получил возможность наслаждаться значением sql_mode без STRICT_TRANS_TABLES.

    Posted in Howto.

    Tagged with .


    О нестандартном мышлении

    О применении барометров в народном хозяйстве

    Хозяйке на заметку: как можно использовать барометр

    Однажды к Эрнеcту Резерфорду, президенту Королевской академии, обратился коллега за помощью. Он собирался поставить самую низкую оценку по физике одному из своих студентов, в то время как тот утверждал, что заслуживает высшего балла. Оба — преподаватель и студент — согласились положиться на суждение третьего лица, незаинтересованного арбитра. Выбор пал на Резерфорда. Экзаменационный вопрос гласил: «Объясните, каким образом можно измерить высоту здания с помощью барометра?».

    Ответ студента был таким: «Нужно подняться с барометром на крышу здания, спустить барометр вниз на длинной верёвке, а затем втянуть его обратно и измерить длину верёвки, которая и покажет точную высоту здания».

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

    Заинтересовавшись, Резерфорд попросил молодого человека приступить к ответу, не дожидаясь истечения отведённого срока. Новый ответ на вопрос гласил: «Поднимитесь с барометром на крышу и бросьте его вниз, замеряя время падения. Затем, используя формулу, вычислите высоту здания».

    Тут Резерфорд спросил своего коллегу преподавателя, доволен ли он этим ответом. Тот, наконец, сдался, признав ответ удовлетворительным. Однако студент упоминал, что знает несколько ответов, и его попросили открыть их.

    — Есть несколько способов измерить высоту здания с помощью барометра, — начал студент. — Например, можно выйти на улицу в солнечный день и измерить высоту барометра и его тени, а также измерить длину тени здания. Затем, решив несложную пропорцию, определить высоту самого здания.
    — Неплохо, — сказал Резерфорд. — Есть и другие способы?
    — Да. Есть очень простой способ, который, уверен, вам понравится. Вы берёте барометр в руки и поднимаетесь по лестнице, прикладывая барометр к стене и делая отметки. Сосчитав количество этих отметок и умножив его на размер барометра, вы получите высоту здания. Вполне очевидный метод.
    — Если вы хотите более сложный способ, — продолжал он, — то привяжите к барометру шнурок и, раскачивая его, как маятник, определите величину гравитации у основания здания и на его крыше. Из разницы между этими величинами, в принципе, можно вычислить высоту здания. В этом же случае, привязав к барометру шнурок, вы можете подняться с вашим маятником на крышу и, раскачивая его, вычислить высоту здания по периоду прецессии.
    — Наконец, — заключил он, — среди множества прочих способов решения данной проблемы лучшим, пожалуй, является такой: возьмите барометр с собой, найдите управляющего и скажите ему: «Господин управляющий, у меня есть замечательный барометр. Он ваш, если вы скажете мне высоту этого здания».

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

    Студента звали Нильс Бор (1885–1962), датский физик, лауреат Нобелевской премии 1922 г.

    Posted in Fun.