Тестилки в Интернет

Иностранные кадровые агенства

Monster.com
CareerBuilder.com
Ну если ВЫ! очень круты.

Информация и тесты

Зачем нужно штатное/внештатное тестирование сотрудников

   Как правило, в компаниях занимающихся разработкой программного обеспечения, тестирование проведится только на этапе приема на работу, реже при назначении на новую должность или присвоении новой категории. Правильно ли это? -Этого не достаточно.
   Хорошей практикой является проведение штатных/внештатных тестирований сотрудников. Не секрет, что на длительных проектах персонал через год-полтора останавливается в своем развитии. Вроде бы сотруднику уже все необходимое известно, навыки сформированы, т.е. можно расслабится.
   Самостоятельное изучение новых технологий - это очень полезная вещь, но бессистемность этого процесса приводит к распылению усилий сотрудников и не приводить к ожидаемых результатов (профессиональному росту, ключевым позициям на проекте, карьерному росту и т.д.).
   Компания должна руководить просессом обучения. Тренинги - полезная вещь, но и дорогая. Далеко не все маленькие компании могут позволить обучение сотрудников за свой счет. А если компания может, то она не может покрыть тренингами все пробелы в знаниях своих сотрудников. В чем же тогда выход? -Стимуляция самостоятельного изучения через проведение тестирования, контроль результатов, направление вектора изучения в нужное русло.

Простые и тем неменее каверзные вопросы для собеседования

  1. Что такое проксисервер (proxy server), шлюз (gateway), тунель (tunnel)? Каковы их функции?
  2. Чем отличается тонкий клиент (например, драйвер) от толстого?
  3. Чем отличается аунтификация от авторизации?
  4. Что такое делимитаризированная зона (DMZ)? Какова ее архитектура?
  5. Чем отличаются патерны программирования от архитектурных?
Цель этих вопросов понять кругозор потенциального сотрудника.

Вопросы на знания теории по темам

Эти вопросы предназначены для подготовленных специалистов.
Сдесь приведены реальные вопросы, которые задаются на интервью.
Не путайте их с вопросами приведенными в написанных мной книгах
.В книгах вопросы проще и и относятся к другому типу (обучающим).

     HTML
  1. Чем отличаются теги TH и TD?
  2. Чем отличается поведение тегов DIV и SPAN?
  3. При помощи каких тегов можно создавать фоновое проигрывание звуковых файлов?
  4. Для какого тега атрибут dir является обязательным?
  5. Для чего предназначен атрибут axis и у каких тегов он есть?
  6. Какие основные отличия правил HTML и XHTML?

     CSS
  1. Для чего предназначено свойство float?
  2. Для чего предназначено свойство behavior в IE?
  3. Какие CSS фильтры Вы знаете?
  4. При помощи какого свойства можно взаимообразно поменять поведение тегов DIV и SPAN?

     JavaScript
  1. Что произойдет при вызове функции, если внутри ее поместить вызов метода alert c параметром this? Обоснуйте ответ. Как управлять результатом?

     SQL
  1. Какие типы связей между таблицами вы знаете?
  2. Какая инструкция условия в SQL-запросе выполняется раньше WHERE или HAVING? Обоснуйте ответ.
  3. Что такое кластерный индекс?
  4. Какие уровни изоляции транзакций вы знаете и в чем их отличие?
  5. Что такое целосность бызы данных?
  6. Что такое нормализация и какие нормальные формы вы знаете?
  7. Каким нормальным формам удолетворяет любая реляционная база данных?
  8. Что такое картеж?
  9. Что такое тригер и для чего они предназначены?
  10. Что такое курсор (cursor) и как его создать?
  11. для ORACLE:
    • Какие системные пользователи автоматически создаются в любой создаваемой базе данных?
    • Что такое сиквиенсе (sequence)?
    • Как создать авто-инкремент поле (счетчик) в таблице (обычно идентификатор строки таблицы)?
    • Что такое план запроса? Как он строится?
    • Что такое хинт (hint)?
    • Что такое катридж?
    • Что такое партишен?
    • Для чего предназначена функция NVL?
    • Для чего предназначена функция DECODE?
    • Какие особенности полей типа BLOB, CLOB и LONG?
  12. для MS SQL-SERVER:
    • В каких типах файлов хранится база данных?
    • Какая база данных выбирается поумолчанию? При помощи какой команды можно перейти на другую базу данных (сменить текущую базу данных)?
  13. практические вопросы (общие для различных баз данных):
    • Как создать таблицу, представление (view), тригер, внутреннюю процедуру?
    • Какие типы полей вы знаете?
    • Как создать автоинкремент поле (идентификатор строки, увеличивающийся на единицу для любой вновь добавляемой строки) в таблице?
    • Как узнать число записанное в инкремент поле?
    • Как создать первычный ключ в таблице?
    • Как создать вторичный ключ в таблице?

     Java
  1. Классы, модификаторы доступа:
    • Какие основные правила объектно-ориентированного программирования вы знаете?
    • Приведите сигнатуру метода main для консольного старта приложения?
    • Каково местоположение вызова конструктора класса предка (он должен находиться в начале, в конце или в произвольном месте тела конструктора)?
    • Какие модификаторы доступа вы знаете?
    • Какие уровни доступа вы знаете, перечислите их в порядке от более "строгого" к более "свободному"?
    • Раскажите о уровне доступа в пределах пакета?
    • Раскажите о назначении модификатора static? Можно ли этот модификатор использовать с классами, свойствами и методами класса?
    • В каких случаях можно использовать модификаторы доступа static для класса?
    • Раскажите о назначении модификатора final? Можно ли этот модификатор использовать для класса, для свойства, для метода, для static метода? К чему приведет использование этого модификатора?
    • Какой метод используется для сравнения двух типов?
    • При помощи какого метода класса можно получить хеш код (hash code) объекта? Для чего он используется?
    • Для чего предназначен класс Class?
  2. Типы (java.lang.*):
    • Какие простые типы в языка Java вы знаете?
    • Что такое класс-обертка?
    • Для чего предназначен класс Class?
    • Для чего предназначен класс ClassLoader?
    • Для чего предназначен класс Comparator? Опишите механизм его использования.
    • От какого класса наследются все классы-обертки для числовых типов?
    • Какой интерфейс реализуют все классы-обертки для типов описывающих последовательность символов?
    • Какой метод (или методы) определяет интерфейс Comparable?
    • Какой метод (или методы) определяет интерфейс Cloneable?
    • Какие методы имеет класс Object? Какие из них предназначены для синхронизации?
    • Какой интерфейс или интерфейсы реализуют классы StringBuffer, Integer и Long?
    • Реализует ли класс HashTable интерфейс Cloneable?
    • Как сравнить две даты на равенство, то одна из них раньше другой? Как получить промежуток меджу двумя датами?
  3. Колекции:
    • Какие колекции вы знаете и в чем их отличие?
    • Какие интерфейсы колекций вы знаете?
    • Какие абстрактные классы колекций вы знаете?
    • В каком случае может возникать IllegalArgumentException исключение при работе с колекциями?
    • В каком случае может возникать ConcurrentModificationException исключение при работе с колекциями?
  4. Синхронизация:
    • Какие методы у объектов в языке Java предназначены для синхронизации?
    • Как синхронизировать использование метода или переменной? Какие синтаксические конструкции языка Java используются для синхронизации?
  5. Многопоточность:
    • От какого класса и/или интерфейса должен быть наследован класс, чтобы при помощи его можно было создать новый поток?
    • Для чего предназначен класс Process?
    • Для чего предназначен класс Runtime?
    • Могут ли быть переопределены методы wait(), notify(), notifyAll() для вновь создаваемого класса? Ответ обосновать.
    • В чем отличие результата вызова метода notify() от notifyAll()?
    • Какую сигнатуру имеет метод run класса Thread?
    • В чем разница создания и запуска потока созданного на основе класса Thread и интерфейса Runnable?
    • каким образом можно получить ссылку на текущий исполняемый поток?
    • каким образом (при помощи какго класса) можно управлять группой потоков?
    • В каком случае может возникать исключение InterruptedException?
    • Для чего предназначен метод yield класса Thread?
    • Что такое "мертвая блокировка" (deadlock)? В каком случае может возникать подобная ситуация?
    • как можно новый создать поток?
    • как можно получить доступ к потоку, в котором исполняется текущее приложение?
    • При помощи каких методов можно запустить поток, остановить, проверить, что он исполняется?
    • Что такое приоритет потока? На что он влияет? При помощи какого метода можно его изменять
    • Что такое поток-демон? Какие условия его функционирования? Как создать такой поток?
  6. Исключения:
    • Какие типы исключений вы знаете? Какие подаются исправлению (после обработки которых возможно продолжение исполнения приложения)?
    • Каких два потомка имеет класс Throwable? Каковы их назначения?
    • Какие способы обработки исключений вы знаете?
    • Какие типы исключений требуют обязательной обработки (при создании методов в классах, в противном случае компилятор или средство разработки сгенерирует сообщение об ошибке)?
    • В каком случае генерируется ClassCastException исключение?
    • В каком случае генерируется ArrayStoreException исключение?
  7. Ввод/вывод:
    • От какого класса наследуются InputStream и OutputStream?
    • От какого класса наследуeтся FileInputStream?
    • Какой интерфейс должен быть реализован классом для того, чтобы его экземпляры могли быть сереализированы?
    • Что измениться при добавлении к сериализируемому классу новых методов?
    • Для чего предназначен интерфейс Serializable? Какие методы требует объявить данный интерфейс?
    • Для чего предназначен интерфейс Externalizable? Какие методы требует объявить данный интерфейс?
    • Для чего предназначен интерфейс Cloneable? Какие методы требует объявить данный интерфейс?
  8. Внешний вид (GUI):
    • Какие лайауты (layout) вы знаете? В чем их отличие?
  9. Сервлеты:
    • Какой жизненный цикл сервлета?
    • Какие методы класса Servlet Вы знаете?
    • В чем отличие методов doPost и doGet?
    • Где описываются сервлеты и их контекстные пути в WEB-приложении?
    • Какие теги используются для описания сервлетов и их контекстных путей в web.xml?
  10. XML:
    • Чем отличаются DOM и SAX XML парсеры?
    • Какой принцип заложен в функционирование класса Digester?
  11. Сетевые соединения:
    • Чем отличается класс ServerSocket от класса Socket?
  12. для Struts:
    • какая основная особенность обновления состояния чекбокса (checkbox) при получении данных с JSP в Struts форму?
    • Для чего предазначен файл struts-config.xml?
    • Что такое библиотека тегов? Как ее можно использовать?
    • Для чего предназначены TLD файлы?
    • Для чего предназначен WAR и EAR файлы?
    • Какой каталог есть у любого WEB-приложения? Какие файлы и подкаталоги он обычно содержит?
    • Для чего предназначен файл web.xml и какие параметры он описывает?
    • В чем отличие редирект от форварда? Опишите происходящие операции на уровне сервлета?
  13. для EJB:
    • В каком случае генерируется FinderException исключение?
    • В каком случае генерируется RemoteException исключение?
    • В EJB-дескрипторе обявлена связь много-ко-многим. При описании связи задекларированы две коллекции. Что произойдет, если в сервисе получито бин одного из объектов и вызвать метод clear.

     С++
  1. Можно ли создать статический абстрактный метод? А класс?
  2. Чем отличается структура от класса в C++ (думаю вы знаете, что в структуре можно объявлять методы как и в классе ;-)?

К началу страницы

Управление процессами

     MSF
  1. Какие виды стандартных производственных моделей вы знаете? Чем они характеризуются?
  2. В чем заключаются понятия спекулятивного риска (speculative risk) и чистого риска (pure risk)? В чем их отличие?
  3. назовите этапы процесса управления рисками в MSF?
  4. Какие основные группы источников рисков выделяет MSF при классификации?

     Scrum
  1. Какие роли существующие в Scrum? Какие обязанности у каждй из ролей?
  2. Какой обычно размер команды?
  3. Почему Scrum-Команда является самоорганизующейся?
  4. Какие типы артефактов сущесвуют в Scrum?
  5. Что такое Backlog? Каие задачи в него входят?
  6. Что такое спринт (Sprint)?
  7. Когда происходит создание дизайна и тестирования кода?
  8. Какая обычно длительность спринта?
  9. Какой жизненный цикл у спринта (Sprint)?
  10. Доустимы ли изменения backlog в течении спринта? Какие именно?
  11. В каких случаях может происхдиь остановка спринта (Sprint)? Что происходит после его остановки?
  12. Какие типы митингов существуют в Scrum?
  13. Какие митинги проводятся при планировании спринта?
  14. Какие правила проведения митингов в Scrum?

К началу страницы

Прикладные задачи (Java, J2EE)

  • Для каких значений и типов данных для переменной a выполняется условие a=-a?
  • Какой будет результат, если поделить два числа (double) равных нулю?
  • Чему будет равен результат 1/4, 1./4, 1/4. и 1./4.?
  • Допустимо ли объявление массивов int[] arr1[]; и int arr2[]={};?
  • Допустимо ли объявление статических свойств или методов в интерфейсе или абстрактном классе? Почему?
  • Как преобразовать коллекцию объектов переданную как Collection к List?
  • Можно ли сравнить значения двух бинов при помощи Struts тегов на JSP?
  • В EJB-дескрипторе объявлены две связи один-ко-многим (связаны две сущности A и B через промежуточную таблицу). При описании связей для каждой из них задекларированы коллекция и ссылка на "главный" объект. Опишите пожалуйста процесс удаления связи между объектом сущности A (у вас есть бин этого объекта) и всеми связанными с ним объектами сущности B.
К началу страницы

Типовые заблуждения (Java)

  1. Что такое инкапсуляция?
       -Многие считают, что это объединение данных и обрабатывающих их методов?!! Это неправильный ответ. Это старое определение.
    Правильный ответ: -Сокрытие реализации класса при помощи модификаторов доступа.
  2. В классе A два синхронизированных метода a1 и a2. Имеется два потока один из которых вызывает метод a1. Будет ли выполняться одновременно метод a1 и метод a2, если к последнему обратиться другой поток.
       -Обычно большинство отвечает ДА. Это неправильный ответ. Ответ вытекает из особенности синхронизации методов - Java синхронизирует методы класса по его экземпляру.
    Правильный ответ: НЕТ.
  3. В классе A объявлено private свойство value1. В классе объявлен статический метод a1, в качестве параметра которому мередается переменная типя A (класс, в котором объявлен этот метод).
    Можно ли обратиться обратиться из этого статического метода к свойству value1 переменной переданной в качестве параметра?
       -Обычно большинство отвечает НЕТ. Это неправильный ответ. Вполне логично , но метод a1 является частью реализации класса A, а следовательно имеет доступ к любым свойствам этого класса. В том числе и к свойствам переменных текущего класса, переданных в качестве параметров статического метода.
    Правильный ответ: ДА.

К началу страницы

Конструкции языка Java (Best practice)

  1. Финализировать значения переменных.
    public class Example 
    {
       static public String parameter = "value";
    
       public boolean check(final String value)
       {
          if( parameter.equals( value ) )
              retrun true;
          return false; 
       }
    }
    

  2. Разборка типов исключений.
    try
    {
        ...
    }
    catch (IndexOutOfBoundsException e)
    {
        ...  
    }
    catch (IOException e)
    {
        ...  
    }
    catch (Exception e)
    {
        ...  
    }
    

  3. Не забывйте закрывать файлы и соединения к базам данных после их использования.
    FileOutputStream fos = new FileOutputStream( "out.txt" );
    try
    {
        fos = new FileOutputStream( "out.txt" );
        fos.write("...".getBytes());
    }
    finally
    {
        fos.close();
    }
    

  4. Цикл на основе оператора for с предварительным однократным определением размера последовательности (количества итераций).
    final List list = ...
    for (int i = 0, int size = list.size; i < size; i++)
    {
        ...
    }
    
    Обратите внимание, что в первой секции оператора for инициализируются две переменные i и size. Во второй секции происходит сравнение текущего значения переменной i с переменной size, вместо того чтобы постоянно обращаться к методу size() переменной list (экземпляр класса List).

  5. Цикл на основе оператора for с использованием итератора.
    final List list = getSomeList();
    for (final Iterator iterator = list.iterator(); 
                        iterator.hasNext();
        )
    {
        final SomeObject object = (SomeObject)iterator.next();
        ...
    }
    

  6. Сравнение со значением параметра.
    public class Example 
    {
       static public String parameter = "value";
    
       public boolean check(final String value)
       {
          if( parameter.equals( value ) )
              retrun true;
          return false; 
       }
    }
    

  7. Проверка на пустую строку.
    final String name = getName();
    if (!StringUtils.isEmpty(name)
    {
        ...
    }
    

  8. Статический инициализатор.
    public class Example 
    {
       static 
       {
          System.out.println("Hello, World!!!");
       }
    }
    

  9. Создание экземпляра без прямого вызова конструктора (патерн Singleton).
    public class Example 
    {
        private Example instance = null;
    
        protected Example()
        {
        }   
     
        public static Example getInstance()
        {
            if(instance == null)
            {
                instance = new Example();
            }
            return instance;
        }
    }
    

  10. Проверка необходимости логирования
    if (LOGGER.isDebugEnabled())
    {
        LOGGER.debug("Delete uset with (id =" + user.getId() + ")");
    }
    

К началу страницы

 

 
Hosted by uCoz