Oggi vorrei esaminare i termini di riferimento per la posizione di sviluppatore stagista. L'ho scritto una volta: voglio condividere il mio pensiero su questo argomento. Sarà utile ai principianti per avere un'idea di cosa li attende in futuro quando troveranno un lavoro.
Il posto vacante è il seguente: tirocinante sviluppatore PostgreSQL da RUB 30.000. al lordo dell'imposta sul reddito delle persone fisiche LLC Business Technologies San Pietroburgo, Kolomyazhsky Prospekt, 33k2 Business Technologies Esperienza lavorativa richiesta: non richiesta
Link con codice funzionante a Ideone: QUI L'attività è stata completata con successo, dopodiché sono stato invitato a un colloquio, dove, invece di un colloquio, mi hanno lanciato un'altra serie di compiti simili e sono partiti per due ore, dandomi una penna e 2 fogli di carta A4. Presero le foglie senza guardarle e dissero che avrebbero richiamato. Il mio piacere per un simile passatempo non può essere descritto con parole censurate. Ma, come minimo, questa è la dura realtà che molti dovranno affrontare all’inizio del loro viaggio.
Vi auguro di cuore interviste interessanti e costruttive. Scegli saggiamente il tuo datore di lavoro. Ti auguro il meglio!) P.S.: la mia recensione sulle aziende che assumono per aprile 2018 (San Pietroburgo) può essere visualizzata QUI
- A tempo pieno, a tempo pieno
- Implementazione di attività a bassa complessità sotto la guida di uno sviluppatore
- Crescita costante delle qualifiche
- Comprensione dei principi della programmazione strutturata, teoria dei database relazionali.
- Responsabilità, indipendenza, iniziativa
- Capacità comunicative, capacità e voglia di lavorare in team
- Elevata capacità di apprendimento
- Conoscenza
- SQL;
- Pl\sql;
- Pl\pgSql;
- C++, Java, Pascal.
- Lavorare in un'azienda stabile e in sviluppo dinamico
- Condizioni di lavoro confortevoli
- Mancanza di formalismo e burocrazia
- Ampie opportunità di crescita professionale e di carriera
- Stipendio in base ai risultati del colloquio
- Registrazione secondo il Codice del lavoro, ferie retribuite in conformità con la legislazione sul lavoro.
- Si prega di indicare nell'intestazione della lettera il codice della commessa: Project04
- Il rientro dal margine sinistro indica il livello di nidificazione.
- I cicli while, for, Repeat e i costrutti condizionali hanno lo stesso significato di Pascal.
- Il simbolo “--” indica un commento
- Il simbolo “:=" denota l'assegnazione
- Le variabili sono locali alla procedura se non diversamente specificato
- L'indice dell'array è scritto tra parentesi quadre, la costruzione A[i] indica l'elemento i nell'array A
-
È possibile utilizzare oggetti costituiti da più campi o aventi più attributi; i valori dei campi vengono scritti come NomeCampo[NomeOggetto].
Ad esempio, la lunghezza dell'array A viene scritta come Lunghezza[A]; il significato delle parentesi quadre è determinato dal contesto (una variabile che denota un array o un oggetto è un puntatore ai suoi dati costitutivi). Dopo aver assegnato y:=x per qualsiasi campo f l'uguaglianza f[y]=f[x] sarà soddisfatta; Determinare se un attributo è una funzione, una variabile o qualsiasi altra cosa viene fatto dal contesto.
- Un puntatore può avere il valore speciale NIL, che non punta ad alcun oggetto.
- I parametri vengono passati per valore: la procedura chiamata riceve una propria copia dei parametri; le modifiche ai parametri all'interno della procedura non sono visibili dall'esterno. Quando si passano oggetti, viene copiato un puntatore ai dati corrispondenti a quell'oggetto.
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;
}
}
GO TO FULL VERSION