今日はインターン開発者のポジションに関する委託条件について見ていきたいと思います。かつて私は次のように書きました:この件について私の考えを共有したいと思います。初心者が仕事を見つけるときに将来何が待っているかについてのアイデアを得るのに役立ちます。
求人は次のとおりです: PostgreSQL 開発者の研修生 、30,000 ルーブルから。個人所得税控除前 LLC Business Technologies St. Petersburg, Kolomyazhsky Prospekt, 33k2 Business Technologies 必要な実務経験:不要
Ideone への作業コードへのリンク:ここ タスクは正常に完了しました。その後、私は面接に招待されました。そこで、面接の代わりに、別の同様のタスクが私に投げつけられ、2 時間放置され、私にペンとペンを渡されました。 A4の紙2枚。彼らは葉っぱを見ずに受け取り、折り返し電話すると言いました。このような娯楽から得た私の喜びは、検閲された言葉では説明できません。しかし、少なくとも、これは多くの人が旅の初めに直面しなければならない厳しい現実です。
面白くて建設的なインタビューを心から願っています。雇用主は賢明に選びましょう。ご多幸をお祈りします!) 追伸: 2018 年 4 月の雇用企業に関する私のレビュー (サンクトペテルブルク) はここでご覧いただけます
- フルタイム、フルタイム
- 開発者の指導の下、複雑さの低いタスクを実装する
- 資格の継続的な増加
- 構造化プログラミングの原理とリレーショナル データベースの理論を理解する。
- 責任感、自主性、主体性
- コミュニケーションスキル、能力、チームで働く意欲
- 高い学習能力
- 知識
- SQL;
- Pl\sql;
- Pl\pgSql;
- C++、Java、パスカル。
- 安定したダイナミックな発展を遂げる企業で働く
- 快適な労働条件
- 形式主義と官僚主義の欠如
- 専門的およびキャリアの成長のための幅広い機会
- 給与は面接結果により決定
- 労働法に基づく登録、労働法に基づく有給休暇。
- レターのヘッダーに職種コードを明記してください: Project04
- 左マージンからのインデントは、ネストのレベルを示します。
- ループ while、for、repeat、および条件構造は Pascal と同じ意味を持ちます。
- 「--」はコメントを表します
- 記号「:=」は代入を表します
- 特に明記されていない限り、変数はプロシージャに対してローカルです。
- 配列インデックスは角括弧内に記述され、構成 A[i] は配列 A の i 要素を意味します。
-
複数のフィールドで構成されるオブジェクト、または複数の属性を持つオブジェクトを使用することができます。フィールド値は FieldName[ObjectName] として記述されます。
たとえば、配列 A の長さは Length[A] と記述されます。角括弧が何を意味するかは、コンテキスト (配列を表す変数、またはオブジェクトを構成するデータへのポインター) によって決まります。任意のフィールド f に y:=x を代入すると、等式 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;
}
}
GO TO FULL VERSION