Hoje gostaria de dar uma olhada nos termos de referência para o cargo de desenvolvedor estagiário. Era uma vez eu escrevi: quero compartilhar meus pensamentos sobre este assunto. Será útil para os iniciantes terem uma ideia do que os espera no futuro ao encontrar um emprego.
A vaga é a seguinte: Desenvolvedor Trainee PostgreSQL a partir de RUB 30.000. antes da dedução do imposto de renda pessoal LLC Business Technologies St. Petersburg, Kolomyazhsky Prospekt, 33k2 Business Technologies Experiência profissional necessária: não obrigatório
Link com código de trabalho para Ideone: AQUI A tarefa foi concluída com sucesso, após a qual fui convidado para uma entrevista, onde, em vez de uma entrevista, eles me jogaram outro lote de tarefas semelhantes e saíram por duas horas, me dando uma caneta e 2 folhas de papel A4. Eles pegaram as folhas sem olhar para elas e disseram que ligariam de volta. Meu prazer com tal passatempo não pode ser descrito em palavras censuradas. Mas, no mínimo, esta é a dura realidade que muitos terão de enfrentar no início da sua jornada.
Sinceramente, desejo-lhe entrevistas interessantes e construtivas. Escolha seu empregador com sabedoria. Tudo de bom!) P.S.: minha análise das empresas empregadoras para abril de 2018 (São Petersburgo) pode ser vista AQUI
- Tempo integral, tempo integral
- Implementação de tarefas de baixa complexidade sob orientação de um desenvolvedor
- Crescimento constante das qualificações
- Compreensão dos princípios da programação estruturada e da teoria das bases de dados relacionais.
- Responsabilidade, independência, iniciativa
- Habilidades de comunicação, capacidade e desejo de trabalhar em equipe
- Alta capacidade de aprendizagem
- Conhecimento
- SQL;
- Pl\sql;
- Pl\pgSql;
- C++, java, pascal.
- Trabalhe em uma empresa estável e em desenvolvimento dinâmico
- Condições de trabalho confortáveis
- Falta de formalismo e burocracia
- Amplas oportunidades de crescimento profissional e de carreira
- Salário com base nos resultados da entrevista
- Registo de acordo com o Código do Trabalho, férias remuneradas de acordo com a legislação laboral.
- Por favor indique o código do trabalho no cabeçalho da carta: Project04
- O recuo da margem esquerda indica o nível de aninhamento.
- Loops while, for, repetições e construções condicionais têm o mesmo significado que em Pascal.
- O símbolo “--” indica um comentário
- O símbolo “:=” denota atribuição
- As variáveis são locais para o procedimento, salvo indicação em contrário
- O índice da matriz é escrito entre colchetes, a construção A[i] significa o elemento i na matriz A
-
É possível utilizar objetos compostos por vários campos ou com vários atributos; os valores dos campos são escritos como FieldName[ObjectName].
Por exemplo, o comprimento da matriz A é escrito como Comprimento[A]; o que os colchetes significam é determinado pelo contexto (uma variável que denota uma matriz ou um objeto é um ponteiro para seus dados constituintes). Depois de atribuir y:=x para qualquer campo f a igualdade f[y]=f[x] será satisfeita; Determinar se um atributo é uma função, uma variável ou qualquer outra coisa é feito pelo contexto.
- Um ponteiro pode ter o valor especial NIL, que não aponta para nenhum objeto.
- Os parâmetros são passados por valor: o procedimento chamado recebe sua própria cópia dos parâmetros; as alterações nos parâmetros dentro do procedimento não são visíveis do lado de fora. Ao passar objetos, um ponteiro para os dados correspondentes a esse objeto é copiado.
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