За последние 24 часа нас посетили 48886 программистов и 1804 робота. Сейчас ищут 2524 программиста ...

Кто программист по php помогите разобратся с ответами натест

Тема в разделе "Прочие вопросы по PHP", создана пользователем igor9555, 26 май 2015.

  1. igor9555

    igor9555 Новичок

    С нами с:
    26 май 2015
    Сообщения:
    26
    Симпатии:
    0
    1.Существует две таблицы:

    t1 {id, name}

    t2 {id, t1_id, data}

    Напишите SQL запрос, выводящий все записи таблицы t2, у которых t2.t1_id не имеет совпадений с t1.id.

    2.Как в PHP обработать числовую переменную, переданную пользователем, убрав из неё все лишние символы (например буквы, спецсимволы), а также заменив разделитель на точку?

    3.Предложите структуру БД (включая индексы и типы полей) для хранения следующей информации о книгах: название, автор (возможно авторы), издательство, стоимость, наличие.

    4.Как заставить ajax приложение обновлять свое состояние при переходах кнопками браузера по истории, при использовании хештегов в качестве адреса?

    5.Ваша задача разработать простую web-форму, данные из которой сохраняются в базе данных (создание или редактирование). Сколько времени составят трудозатраты (в часах)?

    6.Какие методы тестирования web-приложений вы знаете, используете в работе?

    7.Какие способы повышения скорости работы web-приложения вы можете предложить?

    8.Написать функцию, которая в качестве параметра принимает строку и возвращает символы строки, записанные в обратной последовательности. На PHP или JS без использования специальных функций.

    9.Предположим, у нас есть таблица в которой есть поля name и id. Нужно вывести имя с наибольшим id, не используя при этом команду MAX. Как это можно сделать?

    10.Существует таблица с статистической информацией количества населения в некоторых городах в разные годы: cities {id, city, population, year}. Вывести без использования внутренних запросов для каждого города максимальное количество населения и год в который такое количество было зафиксировано.


    Заранее благодарю!
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Кто программист по php помогите разобратся с ответами на

    забавно на форуме пхп-программистов искать помощи от пхп-программистов... шо, сессия жопу жарит? тест-то простенький.
     
  3. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    1.
    2.
    Автор вводит понятие "числовая переменная". Что оно означает вопрос открытый.
    Можно использовать функцию приведения
    floatval():
    Код (Text):
    1.  
    2. $float_value_of_var = floatval($var);
    Она уберет не числовые не крайне левые символы. Дальнейшие действия и проверка на не числовые символы в строке и их удаление неоправданы поскольку вводимые пользователем данные неприкосновенны. Если значение ===0 (при $var= ''Ляляфа100.55"), то просто выводим соответствующую ошибку.

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

    Id INT(11) NOT NULL AUTO_INCREMENT
    Title VARCHAR (255)
    Aothors VARCHAR (255)
    Publishing VARCHAR (255)
    Price DECIMAL(7,2)
    Store BOOLEAN

    4.
    window.location.hash получение хеша, отслеживание переходов по истории браузера согласное html5 history.api. Не вижу никаких сложностей в генерации ajax запроса по этим данным.

    5.
    От 1 человеко-часа до одного человеко-дня в зависимости от ТЗ. Поясню.
    В понимании автора простая форма может быть формой с тремя полями без валидации. В моём понимании "простая форма" это форма с не более чем пятикратной вложенностью ветвления новых полей в зависимости от заполнения предыдущих со всеми типами полей HTML, с рендерингом некоторых полей в виде jqury-виджетов, с клиентской и серверной валидацией значений полей и каптчи и без реализации ajax-подгрузки полей формы (в этом простота, форма целиком отдается клиенту при первом запросе страницы).

    Добавлено спустя 30 минут 17 секунд:
    Re: Кто программист по php помогите разобратся с ответами натест
    6.
    Я не использую в работе методы тестирования web-приложений потому что это задача тестеров и отдела тестирования и поддержки. Как разработчик я тестирую и отлаживаю код веб приложения что к поставленному вопросу не относится.
    Тем не менее мне известные некоторые виды и тестирования по содержанию методов и инструменты тестеров.
    Init-тесты инициализации и авторизации
    CRUD-тесты
    позитивные тесты
    end-to-end сценарии
    нагрузочные тесты
    и проч.

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

    7.

    Группы методов всего 2:
    Оптимизация кода
    Модернизация оборудования

    К первой все методы и способы относящиеся непосредственно к приложению.
    Вот некоторые из них:

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

    Ко второй относится всё что связано с железом, каналом, трафиком

    8.
    строка в php хранится в виде массива. переберите массив и выведете его в обратном порядке, если нельзя использовать никакие встроенные функции.

    9.
    Где у вас есть таблица? Мелом на асфальте соседский ребёнок написал?
    Задача поставлена неверно потому что мы не знаем ни формат таблицы ни окружение в котором она хранится, ни СУБД (а есть-ли она) которая управляет данными таблицы.
    В контексте разных СУБД и разных SQL-диалектов существует масса способов извлечь данные без использовния команды MAX. Например для Mysql, MariaDB и проч., можно воспользоваться операторами ORDER BY и LIMIT 1, Для SqlServer существует опция Top 1.
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Кто программист по php помогите разобратся с ответами на

    1.
    Код (Text):
    1. SELECT t2.* FROM t2
    2. LEFT JOIN t1 ON t1.id=t2.t1_id
    3. WHERE t1.id IS NULL
     
  5. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    10.
    Что понимается под понятием "внутреннего запроса для каждого города" известно автору анкеты, как и место где нужно поставить запятую в задании, но, предположив что стоит задача для каждого города вывести год и максимальное населения без использования под запросов, можно использовать простую группировку по городу:
    Код (Text):
    1. SELECT city, MAX(population) max_population, year FROM cities GROUP BY city
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    2.
    Код (PHP):
    1. echo preg_replace(['/[^\d.,]/','/,/'],['','.'], 'asd34,23gdf_3' ); // 34.233   
     
  7. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    С большой долей вероятности, мой вариант сработает быстрее на субд Mysql старше 5.0 чем join. Хоть субд и не была указана в задаче.

    Добавлено спустя 2 минуты 37 секунд:
    Re: Кто программист по php помогите разобратся с ответами натест
    Код (Text):
    1. //asd3,34,23gdf_3
    Хотя опять же, строго говоря, в задании нет указания на то что на выходе должно получится число, поэтому получение очищенной строки это тоже верное решение.
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    8.
    Код (PHP):
    1. function str_reverse($s) {
    2.   $l = strlen($s);
    3.   $m = floor($l/2);
    4.   for($i=0; $i<$m; ++$i) {
    5.     $s[$i]     = $s[$i] ^ $s[$l-$i-1];
    6.     $s[$l-$i-1]= $s[$l-$i-1] ^ $s[$i];
    7.     $s[$i]     = $s[$i] ^ $s[$l-$i-1];
    8.   }
    9.   return $s;
    10. }
    11. echo str_reverse('igor1234'); // 4321rogi  
    Добавлено спустя 3 минуты 52 секунды:
    Re: Кто программист по php помогите разобратся с ответами натест
    пруф?
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Re: Кто программист по php помогите разобратся с ответами на

    Человек даже тся/ться не умеет, а вы его лень поощряете...
     
  10. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    Когда в подзапросе с IN небольшая выборка, то вариант с под запросом тут оказывается чаще быстрее.
     
  11. igor9555

    igor9555 Новичок

    С нами с:
    26 май 2015
    Сообщения:
    26
    Симпатии:
    0
    Re: Кто программист по php помогите разобратся с ответами на

    Бл я мужики благодарю вас за помощь так всё расписали подробно честно говоря не ожидал!
     
  12. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Кто программист по php помогите разобратся с ответами на

    где написано про небольшую выборку? не уводи тему.
    возвращайся из своего сказочного мира и давай пруф. сказал А говори и Б
    сдулся чтоли? )
     
  13. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    Повежливее немного.
    (чуть позже здесь выложу примеры с разными выборками. Пока занят. В запостенных тут ранее примерах ошибка в запросе влияющая на размер выборки была)
     
  14. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    собственно, примеры:
    Код (Text):
    1.  
    2. 15:47:49    SELECT users.* FROM users LEFT JOIN usersinfo ON usersinfo.id = users.id AND (usersinfo.id between 314323 AND 314390) WHERE usersinfo.id is NULL LIMIT 0, 1000  1000 row(s) returned    0,006 sec / 0,035 sec
    и
    Код (Text):
    1.  
    2. 15:49:04    SELECT users.* FROM users WHERE users.id NOT IN (SELECT usersinfo.id FROM usersinfo WHERE usersinfo.id between 314323 AND 314390) LIMIT 0, 1000 1000 row(s) returned    0,005 sec / 0,036 sec
    Ну и:
    Код (Text):
    1. '1', 'SIMPLE', 'users', 'ALL', NULL, NULL, NULL, NULL, '1619555', ''
    2. '1', 'SIMPLE', 'usersinfo', 'eq_ref', 'PRIMARY', 'PRIMARY', '4', 'bam.users.id', '1', 'Using where; Using index; Not exists'
    Код (Text):
    1.  
    2. '1', 'PRIMARY', 'users', 'ALL', NULL, NULL, NULL, NULL, '1619555', 'Using where'
    3. '2', 'DEPENDENT SUBQUERY', 'usersinfo', 'unique_subquery', 'PRIMARY', 'PRIMARY', '4', 'func', '1', 'Using index; Using where'
    Соответственно.
     
  15. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Кто программист по php помогите разобратся с ответами на

    в пределах погрешности измерений.
    зависит от многих факторов. БД(mysql,oracle,pgsql,mssql...), их версий, настройки, используемого движка(myIsam,inndb,memory...), кеширования, наличия/отсутсвия индексов... и еще кучи всего.
    внутренний оптимизатор вообще может привести внутри себя оба запроса к одному, ведь по сути выбирается тоже самое в обоих случаях.
    так что, это ничего не доказывает.

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

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    Для конкретного приведенного мной примера чушь полную вы написали. О чем в частности свидетельствует приведенные результаты EXPLAIN для обоих запросов, вы их видите? Запросы не кешировались и тем более, как вы выразились, оптимизатор тут не "привести внутри себя оба запроса к одному"

    Во-первых, речь шла конкретно о мускуле и конкретно о 5+ версиях (не помню на каком конкретно, но не суть). В документации этого нет (или не встречал). Вы думаете все поведение этой СУБД в доках описано? Почитайте ленты багтрека, много интересного найдете (указанное выше где-то в их дебрях и видел и не раз подтверждал на практике).

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

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

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Кто программист по php помогите разобратся с ответами на

    в задании ТСа нет ни слова про какуюто конкретную БД. вопросы теоретические. причем здесь вообще мускул? кроме него что нет других БД?
    докопаться до моего варианта, инициатива ваша. Видно очень хотелось показаться умным и начитанным. не удалось)

    Добавлено спустя 7 минут 5 секунд:
    Re: Кто программист по php помогите разобратся с ответами натест
    я тоже много чего могу. но причем здесь это. мы говорим про конкретный вопрос ТС, в общем смысле. без привязки к конкретной БД. Оценивается знание основ SQL, в частности соединение двух таблиц. не нужно пытаться увести вопрос в комфортные для вас условия.

    Добавлено спустя 6 минут 58 секунд:
    Re: Кто программист по php помогите разобратся с ответами натест
    а я работаю не только с мускулом. скажу больше, я работаю с ним все меньше и меньше, в пользу других БД. тоесть у меня кругозор пошире получается. на мускуле свет клином не сошелся, есть и другие БД. у всех свои особенности. поэтому в данном случае, вообще глупо утверждать о выигрыше одного запроса над другим, тем более когда даже в мускуле добиться убедительного перевеса не удается.
    к томуже повторюсь. факторов очень много. хранилище какое был у таблиц(innodb,myisam,memory..)? объем таблиц? почему именно так? потому что так выгоднее? кароч. тут даже обсуждать нечего. детсад и письмерство.

    Добавлено спустя 14 минут 12 секунд:
    Re: Кто программист по php помогите разобратся с ответами натест
    все СУЩЕСТВЕННЫЕ особенности описаны. подзапросы и соединения это не какието диковинный малоописанный и мало-оттестированный функционал. если бы была СУЩЕСТВЕННАЯ разница, о ней бы точно было гдето упомянуто. так что отсутствие оного - плюс в мою копилку.
     
  18. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Re: Кто программист по php помогите разобратся с ответами на

    Вы не поверили что мой вариант может отработать быстрее, запросили пруф, я вам показал конкретный пример где мой вариант отрабатывает быстрее вашего. Что вы ещё хотите? Оба запроса, как видите, задействуют индексы, обе таблицы в innodb. С изменяющимися параметрами в конкретном окружении запрос отрабатывает всё равно быстрее, пусть на небольшие значения (небольшие они для конкретного простого примера тса). Есть случаи интереснее.
    Почему это именно так в конкретном случае мне прекрасно понятно. Если нужны более сложные примеры в которых подзапросы значительно быстрее и легче на мускуле, чем решение с Joinами - предоставим с пояснениями.
    Не хотите продолжать дискуссию - не продолжайте, тоже пойму.