Какие задачи по программированию на собеседовании на автоматизатора Вам задавали?

Давече

1. Python

Написать декоратор, который перед вызовом декорируемой функции выведет строку.
Декорировать любую функцию с любыми параметрами.

На листочке.

2. JavaScript

Дано

function Music(url) {
    this.url = url
}
Music.prototype.play = function() {
    //...
}
var music = [new Music("111"), new Music("222"), new Music("333")]

написать последовательный проигрышь (вызов play), с интервалом 10 секунд.

Код пишется онлайн, соответственно должен быть рабочим.

3. “Люди в комнате - остаться должен только один”

Реализовать задачку
Дано n людей в комнате. Есть судья (арбитр).
Судья начиная с первого человека чередует “остаешься” и “иди вон”.
Пройдя круг повторяет с оставшимися в том же порядке, до тех пор пока в комнате не останется один человек.

Каким по порядку был этот человек при первом цикле?

На примере объясняется так:

n = 4
+ + + + (сначала все)
+ x + x (арбитр 2му и 4му сказал идти вон)
+ x x x 
=> остался 1й

n = 3
+ + +
+ x + (только 2й ушел, 3му остаться)
x x + (т.к. перед этим 3й остался, то сейчас 1му "вон")
=> остался 3й

Код пишется онлайн, соответственно должен быть рабочим.

3 лайка

Насчет фибоначи на javascript-e, как было сказано выше. Обычная реализация рекурсией покажет что у вас есть знания что такое рекурсия, это да, но она очень неоптимальная, если знать как и что работает в жс-е. Основные возможности ускорения расчетов с примерами можно посмотреть вот тут http://jsperf.com/fibonacci-y-combinator/5 . Там все понятно и просто, но если есть жедание, могу расписать каждый пример отдельно, почему он выполняется быстрее и тд и тп.

задачки по java
https://java-quizapp.rhcloud.com/

1 лайк

Я ось думаю - всі на проектах використовують фібоначі і тому подібну дурню? 0_о снобізмом попахує… Може ви Кнута на пам"ять всього знаєте?

2 лайка

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

3 лайка

Взято из темы Тестирование Rest API c помощью python средств

Python:
Using API documentation below verify that all endpoints (methods) on server**
work as expected (accessible and return correct response codes for all cases).
Output should be:

  1. Code that verifies that data is added to server.
  2. Code that verifies correctness of returned response codes.

Small tips.
● POST request accepts name and position in body;
● Body is expected to be in JSON format;
● All requests with body should contain correct “Content-Type” header;
● Not all methods might work as expected;
● In this section you do not need to parse response, only to verify that

“some” data was uploaded to server.

**Please note that your are not the only person using this server, thus you might notice that
there will be some data which you did not create, as well as your data might be occasionally
deleted by other users.

NICE TO HAVE:

Python:
For the Python task mentioned above:

  1. Verify that all methods working as expected.
  2. All data is correctly added to server.

Small tips:
● Try to create positive and negative verifications;
● In this section you do need to parse response received from server.
This document contains confidential and proprietary information and may not be reproduced or distributed in
any manner without the express consent of Cogniance Inc. ©2014 Cogniance Inc, a Delaware, United States
corporation. All rights reserved.

Datamining:
Use existing access log (any language) to receive next information:

  1. Count # of successful requests per hour.
  2. Results should be stored in file.

Small tips:
● Log contains data only for 1 day;
● Successful request should have response code 200;
● Easiest way to achieve that - *unix command line.

OUT OF THE BOX:

Python & Redis:
For “OUT OF THE BOX” level make several enhancements to Python tasks from
the “OK LEVEL” and “NICE TO HAVE”. Create a DB using Redis in which candidate

names and positions will be stored. In order to accomplish this task:

  1. Redis should be installed on local machine.
  2. All requests to server that require passing names and positions within your
    test should take that data from Redis.
  3. All comparisons that touch verification of the names and positions you have
    in test should be done using data from Redis.

Datamining:
Use existing access log (any language) to receive next information:

  1. Count % of successful requests per hour.
  2. Results should be stored in file.

Small tips:
● Log contains data only per 1 day;
● Successful request should have response code 200;
● Easiest way to achieve that - *unix command line.

API DOCUMENTATION:

Server allowed methods:
GET, http://qainterview.cogniance.com/candidates, gives a list of all candidates.
Returns 200.
GET, http://qainterview.cogniance.com/candidates/<cand_id>, shows a
candidate with id=<cand_id>. Returns 200
POST, http://qainterview.cogniance.com/candidates, adds a new candidate.
Returns 201. Case when header Content-Type: application/json or name is
absent, 400 is returned.
DELETE, http://qainterview.cogniance.com/candidates/<cand_id>, deletes a
candidate with id=<cand_id>. Returns 200

хотелось бы выслушать мнение экспертов проходил вот собеседование на selenium и дали вот такую задачку позиция junior qa

Необходимо описать задачу с применением принципов ООП.
Условие тестовой задачи:
Дано объекты-фигуры следующих видов: квадрат, треугольник, круг, трапеция. Каждую фигуру можно нарисовать, получить ее площадь и цвет. Также фигуры имеют уникальные методы, например: вернуть радиус, длину гипотенузы, длину стороны и т. д.
Нам необходимо сгенерировать случайный набор фигур, количество объектов в наборе также заранее неизвестно.
После генерации массива нужно вывести весь список объектов, которые у нас имеются, например:
Фигура: квадрат, площадь: 25 кв. ед., цвет: синий
Фигура: треугольник, площадь: 12,5 кв.ед., цвет: желтый
////////////////////////////////////
вот решение там джарник и код хотелось бы услышать ваше мнение, так как вродебы работает прога может код конечно не мега но все же и позиция такаяже https://drive.google.com/folderview?id=0B1cu5dnmSDIgfmlVWWpxX0IzQnpLSHJ1b1R3Q2FKeE5qYkI1SkQ3dFFEQUFkTjJhRFVqamM&usp=sharing

“с применением принципов ООП” - это не то, что написано у Вас.
Должны быть: фигура (базовый абстрактный класс/интерфейс, в котором реализуются необходимые методы), квадрат, треугольник, круг, трапеция (классы наследованные от базового). Соответственно необходимо переопределение метода toString (если мои познания Джавы верны)

СПС

Почему-то мне кажется, что от вас требовалось не полное решение, а лишь создание прототипа. А вы восприняли все буквально и начали создавать визуальные компоненты, методы отрисовки и т.п. Зачем?!

Все, что от вас нужно - это понимание основ ООП. Причем, задачка с геометрическими фигурами во многих источниках приводится в качестве примера полиморфизма.

Решение (как намекнули выше): 1 интерфейс с 3 методами: draw, getArea, getColor. 4 класса, имлементирующих этот интерфейс. В каждом из классов будут свои доп. методы, на которые я бы вообще не стал обращать внимания, исходя из условия - просто создайте заглушки. Ну и дефолтные конструкторы с какими-нибудь рэндом значениями. Далее можно написать параметризованный enum, возвращающий наши фигуры. Помимо этого, сюда же можно вшить геттер, получающий на вход длину массива, и возвращающий random List<InterfaceType>. Хотя, тут можно сильно и не заморачиваться. Вариантов решения с рандомизацией - масса. Про toString() тоже уже сказали. Впрочем и все. Вызываем 1 метод с произвольным параметром длины, и в цикле проходимся по результирующему массиву, печатая результат.

Если честно, я бы даже не стал обращать внимания на формулы в решении (устроили бы и заглушки), т.к. цель тут - проверка знаний ООП, а не школьной математики.

1 лайк

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

“Thinking in Java” Bruce Eckel.
Как раз в первых 100 страницах очень хорошо объясняется данный пример/задача. Рекомендую к прочтению.

Я просто оставлю эти ссылки в этой теме:

Спасибо @ayia взял с его поста

2 лайка

Почитал и апнул тему своим мнением.
Какие-то длинные вам задачи дают. Больше одной строчки. Я что не получаю, выглядит всё проще, в одну строчку:
Написать сканнер wifi сетей и их параметров на питоне используя DBus. Результаты хранить в sqlite
Написать стиллер картинок с веб сайтов с проверками на возможные атаки DoS.

Ну и дальше в таком стиле.

Из последнего, что понравилось:

  • в режиме реального времени шарили заготовленный кусок кода на 100 строк и надо было найти как можно больше ошибок и уязвимостей;

  • расшарен базовый проект на вей драйвере (с кучей антипаттернов) - и надо было его улучшить настолько, насколько возможно за короткое время (имхо - более полезная задача на собеседовании на автоматизатора, чем перечисление алгоритмов сортировки на листике :grinning:);

  • дан мануал по REST API некоего продукта компании - надо было написать несколько тестов, используя полученную информацию;

1 лайк

Задачи по #python

https://www.ynonperek.com/2017/09/21/python-exercises/

Если не ошибаюсь там реализация с помошью наследования, лучше пусть человек сразу с интерфейсов начнет чем полюбит зло.:slight_smile:

Оживлю темку…
Из моей практики:

  • когда устраивался, будучи новичком, задавали стандартные вопросы про “ооп, листы и мапы и т.д.”, и в качестве тестового (неделю ходил прям в офис конторы): на голой java клиент и сервер для чата;
  • будучи “умельцем” с 2-х годичным опытом, спрашивали уже про конкретные применяемые “технологии” и в качестве тестового (на дом): написать работающее web-приложение (без визуальной вычурности), игру “крестики-нолики” (с учётками, историей игр, с возможностью доиграть незаконченную), на голой java.
    Т.к. (на тот момент) не сталкивался с “web-java” вообще, пришлось за двое суток навёрстывать упущенное: сервлеты, jsp и т.д.

P.S. надеюсь, тема оживёт; т.к. завтра проводить интервью, а готовить вопросы и задания самому времени не оставили. Все, выше отписавшимся, низкий поклон.

2 лайка

Это вы на тестировщика собеседовались, что надо было web-приложение написать? Это же не 3 часа. :slight_smile:

Первое трудоустройство на дева, второе на aqa