Сьогодні я хотів би розібрати ТЗ на позицію стажера-розробника. Колись давно я його писав: хочу поділитися своїми міркуваннями щодо цього.Новичкам буде корисно мати уявлення про те, що на них чекає в майбутньому при працевлаштуванні.
Вакансія виглядає так: Стажер-розробник PostgreSQL від 30 000 руб. до відрахування ПДФО ТОВ Бізнес Технології Санкт-Петербург, Колом'язький проспект, 33к2 Бізнес Технології Необхідний досвід роботи: не потрібно
Посилання з робочим кодом на Ideone: ЗДІЙ Завдання було успішно здане, після чого запитабо на інтерв'ю, де, замість співбесіди, в мене кинули чергову порцію подібних завдань і пішли на дві години, видавши ручку і 2 листочки А4. Забрали листочки, не подивившись у них, і сказали, що передзвонять. Моє задоволення від подібного проведення часу не описати цензурними словами. Але, як мінімум, це сувора реальність, з якою багатьом доведеться зіткнутися на початку свого шляху.
Щиро бажаю Вам цікавих та конструктивних співбесід. З розумом вибирайте роботодавця. Всім добра!) П.С.: мій огляд компаній-роботодавців за квітень 2018 року (Санкт-Петербург) можна подивитися ТУТ
- Повна зайнятість, повний день
- Реалізація завдань не високого рівня складності під керівництвом розробника
- Постійне зростання кваліфікації
- Розуміння засад структурного програмування, теорії реляційних баз даних.
- Відповідальність, самостійність, ініціативність
- Комунікабельність, уміння та бажання працювати в команді
- Висока навченість
- Знання
- Sql;
- Pl\sql;
- PlgpqSql;
- C + +, java, pascal.
- Робота в стабільній компанії, що динамічно розвивається
- Комфортні умови праці
- Відсутність формалізму та бюрократії
- Великі можливості для професійного та кар'єрного зростання
- Заробітна плата за підсумками співбесіди
- Оформлення за ТК, оплачувана відпустка відповідно до трудового законодавства.
- Прохання в заголовку листа вказувати код вакансії: Project04
- Відступ від лівого поля вказує рівень вкладеності.
- Цикли while, for, repeat та умовні конструкції мають той самий сенс, що й у pascal-і.
- Символ "--" означає коментар
- Символ “:=” означає привласнення
- Змінні локальні в рамках процедури, якщо не зазначено інакше
- Індекс масиву пишеться у квадратних дужках, конструкція A[i] означає i елемент у масиві A
-
Можливе використання об'єктів, що складаються з декількох полів або мають кілька атрибутів, значення поля записується як Ім'яПоля[Ім'яОб'єкта].
Наприклад, довжина масиву A записується як Length[A]; що означають квадратні дужки - з'ясовується за контекстом (змінна, що позначає масив, або об'єкт є вказівником на його дані). Після присвоєння y:=x для будь-якого поля f виконуватиметься рівність f[y]=f[x]; визначення того, що є атрибутом - функція, змінна або ще щось, - робиться по контексту.
- Вказівник може мати спеціальне значення NIL, яке не вказує на будь-який об'єкт.
- Параметри передаються за значенням: викликана процедура отримує власну копію параметрів, зміни параметрів усередині процедури зовні не видно. Під час передачі об'єктів копіюється вказівник на дані, що відповідають цьому об'єкту.
public class Main {
public static void main(String[] args) {
int[] massif = {13, 3, 8, 1, 15, 2, 3, 7, 4};
System.out.print("Массив до сортировки: ");
for (int i = 0; i < massif.length; i++)
System.out.print(massif[i] + " ");
System.out.println("");
massif = sort(massif);
System.out.print("Массив после сортировки: ");
for (int i = 0; i < massif.length; i++)
System.out.print(massif[i] + " ");
}
public static int[] sort(int x[]) {
if (x.length == 1) //Рекурсия идет до тех пор, пока массив делится
return x;
else {
int half = (int) Math.floor(x.length / 2); //Разбиваем массив на 2 части
int halfFirst[] = new int[half]; //1 часть, пустой массив
int halfSecond[] = new int[x.length - half]; //2 часть, пустой массив
for (int i = 0; i < x.length; i++) { //Заполняем новосозданные массивы значениями
if (i < half)
halfFirst[i] = x[i];
else
halfSecond[i - half] = x[i];
}
halfFirst = sort(halfFirst); //Рекурсия
halfSecond = sort(halfSecond); //Рекурсия
x = sortNext(halfFirst, halfSecond); //Отправляем заполненные значениями массивы в следующий метод
return x;
}
}
public static int[] sortNext(int x[], int y[]) {
int c[] = new int [x.length + y.length]; //Создаем результирующий массив из суммы длин массивов из аргументов метода
int a = 0, b = 0;
for (int i = 0; i < x.length + y.length; i++) { //Сравниваем массивы, меняем местами элементы, заполняем новосозданный массив
if (a == x.length) {
c[i] = y[b];
b++;
}
else if (b == y.length) {
c[i] = x[a];
a++;
}
else if (x[a] > y[b]) {
c[i] = y[b];
b++;
}
else {
c[i] = x[a];
a++;
}
}
return c;
}
}
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ