JavaRush /Blog Java /Random-VI /Phân tích nhiệm vụ kiểm tra điển hình cho vị trí nhà phát...
Uniges
Mức độ
Санкт-Петербург

Phân tích nhiệm vụ kiểm tra điển hình cho vị trí nhà phát triển

Xuất bản trong nhóm
Hôm nay tôi muốn xem xét các điều khoản tham chiếu cho vị trí nhà phát triển thực tập sinh. Ngày xửa ngày xưa tôi đã viết nó: Tôi muốn chia sẻ suy nghĩ của mình về vấn đề này. Sẽ rất hữu ích cho những người mới bắt đầu có ý tưởng về những gì đang chờ đợi họ trong tương lai khi tìm việc làm.
Phân tích một task test điển hình cho vị trí lập trình viên - 1
Vị trí tuyển dụng như sau: Thực tập sinh nhà phát triển PostgreSQL với mức lương 30.000 RUB. trước khi khấu trừ thuế thu nhập cá nhân LLC Business Technologies St. Petersburg, Kolomyazhsky Prospekt, 33k2 Business Technologies Yêu cầu kinh nghiệm làm việc: không bắt buộc
  • Toàn thời gian, toàn thời gian
Trách nhiệm:
  • Thực hiện các nhiệm vụ có độ phức tạp thấp dưới sự hướng dẫn của nhà phát triển
  • Sự phát triển liên tục của trình độ
Yêu cầu:
  • Hiểu biết về các nguyên tắc lập trình có cấu trúc và lý thuyết về cơ sở dữ liệu quan hệ.
  • Trách nhiệm, độc lập, chủ động
  • Kỹ năng giao tiếp, khả năng và mong muốn làm việc theo nhóm
  • Khả năng học tập cao
mong muốn:
  • Kiến thức
  • SQL;
  • Làm ơn\sql;
  • Xin vui lòng\pgSql;
  • C++, java, pascal.
Điều kiện:
  • Làm việc tại công ty ổn định, năng động phát triển
  • Điều kiện làm việc thoải mái
  • Thiếu chủ nghĩa hình thức và quan liêu
  • Cơ hội mở rộng để phát triển nghề nghiệp và nghề nghiệp
  • Lương theo kết quả phỏng vấn
  • Đăng ký theo Bộ luật Lao động, nghỉ phép có hưởng lương theo pháp luật lao động.
  • Vui lòng ghi rõ mã công việc ở tiêu đề thư: Project04
Mô tả nhiệm vụ kiểm tra: Bài kiểm tra nhằm mục đích tự kiểm soát để người nộp đơn tự xác định xem liệu có đáng để dành thời gian cho một cuộc phỏng vấn hay không. Mã giả Mã giả này được sử dụng để mô tả các thuật toán.
  1. Thụt lề từ lề trái cho biết mức độ lồng nhau.
  2. Các vòng lặp while, for, lặp lại và các cấu trúc điều kiện có cùng ý nghĩa như trong Pascal.
  3. Ký hiệu “--” biểu thị nhận xét
  4. Ký hiệu “:=” biểu thị sự phân công
  5. Các biến là cục bộ của thủ tục trừ khi có quy định khác
  6. Chỉ số mảng được viết trong ngoặc vuông, cấu trúc A[i] có nghĩa là phần tử thứ i trong mảng A
  7. Có thể sử dụng các đối tượng bao gồm một số trường hoặc có một số thuộc tính; các giá trị trường được viết dưới dạng FieldName[ObjectName].

    Ví dụ: độ dài của mảng A được viết là length[A]; ý nghĩa của dấu ngoặc vuông được xác định bởi ngữ cảnh (một biến biểu thị một mảng hoặc một đối tượng là một con trỏ tới dữ liệu cấu thành của nó). Sau khi gán y:=x cho bất kỳ trường f nào, đẳng thức f[y]=f[x] sẽ được thỏa mãn; Việc xác định xem một thuộc tính là hàm, biến hay bất kỳ thứ gì khác đều được thực hiện theo ngữ cảnh.

  8. Một con trỏ có thể có giá trị đặc biệt NIL, giá trị này không trỏ đến bất kỳ đối tượng nào.
  9. Các tham số được truyền theo giá trị: thủ tục được gọi nhận bản sao tham số của chính nó; những thay đổi đối với các tham số bên trong thủ tục không thể nhìn thấy được từ bên ngoài. Khi truyền đối tượng, một con trỏ tới dữ liệu tương ứng với đối tượng đó sẽ được sao chép.
Vấn đề Một hàm sắp xếp một mảng các phần tử A: Sort(A,p,r) 1 if p < r 2 then q := round_half_down((p+r)/2) 3 Sort(A,p,q) 4 Sắp xếp (A,q +1,r) 5 Hợp nhất(A,p,q,r) Ví dụ về mảng: A = (5,2,4,6,1,3,2,6) Ví dụ chạy: Sort(A,1 ,length[A ]) Bắt buộc: Phát triển thuật toán cho hàm Hợp nhất(A,p,q,r) bằng bất kỳ ngôn ngữ nào thuận tiện cho bạn, có hoặc không sử dụng bộ nhớ bổ sung, tùy theo cách nào nhanh hơn hoặc thuận tiện hơn để bạn thực hiện . Nếu bạn thành công, chúng tôi sẽ vui mừng chào đón bạn để thử nghiệm thêm. Câu trả lời của tôi: Thuật toán được mô tả trong ví dụ Mã giả là thuật toán sắp xếp Hợp nhất. Nhiệm vụ chính của hàm của chúng ta là sắp xếp một mảng các số không có thứ tự: ví dụ: theo thứ tự tăng dần. Bài toán được chia thành các nhiệm vụ phụ: chuỗi số trong mảng được chia thành các mảng nhỏ hơn cho đến khi mảng trở thành một giá trị đơn, các phần tử của mảng được so sánh, chúng được thay thế (nhỏ hơn bằng lớn hơn, theo chỉ mục) và được hợp nhất.
Phân tích một task test điển hình cho vị trí lập trình viên - 2
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;
    }
}
Phân tích một task test điển hình cho vị trí lập trình viên - 3
Liên kết với mã làm việc với Ideone: TẠI ĐÂY Nhiệm vụ đã được hoàn thành xuất sắc, sau đó tôi được mời đến một cuộc phỏng vấn, thay vì một cuộc phỏng vấn, họ ném một loạt nhiệm vụ tương tự khác cho tôi và rời đi trong hai giờ, đưa cho tôi một cây bút và 2 tờ giấy A4. Họ cầm lá mà không thèm nhìn và nói sẽ gọi lại. Niềm vui của tôi từ trò tiêu khiển như vậy không thể diễn tả bằng những từ ngữ bị kiểm duyệt. Tuy nhiên, ở mức tối thiểu, đây là thực tế khắc nghiệt mà nhiều người sẽ phải đối mặt khi bắt đầu cuộc hành trình của mình.
Phân tích một task test điển hình cho vị trí lập trình viên - 4
Tôi chân thành chúc bạn có những cuộc phỏng vấn thú vị và mang tính xây dựng. Hãy chọn người sử dụng lao động của bạn một cách khôn ngoan. Chúc mọi điều tốt đẹp nhất!) P.S.: bạn có thể tìm thấy bài đánh giá của tôi về các công ty tuyển dụng trong tháng 4 năm 2018 (St. Petersburg) TẠI ĐÂY
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION