Собеседование ABAP. Типовые вопросы

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

1. Типы внутренних таблиц – пожалуй, самый часто встречающийся вопрос на собеседованиях. И так, кратенько. Всего есть три вида внутренних таблиц:
а) Стандартная внутренняя таблица:
– Не уникальный ключ;
– Время доступа к элементам зависит пропорционально количеству строк;
– Можем обойти в цикле. Или обратится к записи по ключу ;
б) Хешированная таблица:
– Уникальный ключ;
Доступ только по ключу;(никаких лупов и индексов);
– Время доступа не зависит от количества данных т.к. вычисляется хэш. (Что это такое гуглите сами)
в) Сортированная таблица:
-Ключ может быть уникальным и неуникальным;
– Данные хранятся с сортировкой по этому ключу;(APPEND не лучшее решение для вставки строк);
– Время доступа к данным растет логарифмически. Частенько после этого пункта идет вопрос про бинарный поиск;
– Можно обойти в цикле. Или обратится к записи по ключу.

2) Виды расширений.
Тут все относительно просто.
a) BADi старые и новые и их отличия.
б) Customer exits  – пользовательские выходы, представляющие собой вот такой вызов в коде CALL CUSTOMER-FUNCTION ‘XXX’ внутри которй есть только Z Include для реализации пользовательской логики. Для работы с данными расширениями существует транзакции SMODE и CMOD;
в) User-exit – просто не реализованный Z* инклуд в коде программы.
г) Enhancement неявные точки расширения – наверное, самые часто встречающийся тип расширения. лепим мы их где надо и где не надо. Читайте тут.
д) Еще есть явные Enhancement – лично мне встречались гораздо реже.

3 ) Чем отличается абстрактный класс от интерфейса.
Действительно, что же еще можно спросить из ООП.
a) У абстрактного класса могут быть реализованные методы. Чаще всего этого ответа хватает с головой. Конечно же отличий больше
б) Множественное наследование возможно с интерфейсом, но не абстрактным классом;
в) У интерфейса все методы public, у абстрактного класса есть варианты.
… может быть что-то упустил, но это основное.

4) Отладка фоновых задач ABAP
а) Читать вот тут;
б) В некоторых случаях возникает вопрос, как отладить IN UPDATE TASK. Смотрите здесь;

5.1) Когда упоминается IN UPDATE TASK сразу же возникает вопрос. Когда запускается выполнение IN UPDATE TASK ?
Ответ: IN UPDATE TASK срабатывает при явном COMMIT
5.2) Типы модулей обновлений
V1 – выполняются в том же LUW
V2 – выполняются в отдельном LUW
5.3) Что такое LUW:
Подробнее.
Еще подробнее.

6) Неявные commit:
а) Когда система открывает экран SAP;
б) Вызов синхронного или асинхронного RFC;
г) Диалоговый Message;
д) Вызов транзакций или вызов программы (SUBMIT)

7) Особенности FOR ALL ENTRIES:
а) Всегда надо проверять наличие записей в таблице;
б) Указываем полный ключ;
в) Может быть просадка производительности при выборе по нескольким полям;

8) Оптимизация и тест производительности:
Вот тут каждый отвечает, кто во что горазд.
Например:
– типы таблиц, описанные ранее;
– проблемы производительности при использовании select endselect;
– loop в loope по одной таблице;
– замеры производительности программы в SAT;
ST05;
Распараллеливание;
Денормализация таблиц БД
– Индексация таблиц БД.
После упоминания данного пункта, сразу прилетает вопрос: “По каким столбцам стоит делать индексацию?” Есть ли смысл делать индекс для поля Пол.
Пол – это просто самое показательное, здесь проще всего посчитать плотность записей, ведь их всего два(Хотя, конечно, скоро и до нас дойдут современные веяния). Вопрос немного раскрыт тут.
И т.д. и т.п.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *