Apa yang harus diketahui pengembang backend. Dari garis depan ke backend

Kekosongan:
backend Web Developer.

Salah satu spesialisasi yang diminta di bidang pengembangan web adalah pembuatan backend, yaitu, server bagian dari aplikasi web. Untuk keberhasilan pekerjaan profesional, diperlukan bagasi dan keterampilan tertentu. Perwakilan perusahaan memberi tahu spesialis apa yang ingin mereka lihat di tim mereka

  1. Pengetahuan dan keterampilan apa yang harus dimiliki pengembang Web Backend?
  2. Apa toolkit dari pengembang web backend?
  3. Apa persyaratan perusahaan untuk pembentukan karyawan potensial?
  4. Apa persyaratan untuk pengalaman kerja?
  5. Apakah ada persyaratan khusus yang disebabkan oleh kekhususan perusahaan?

Arthur Bozhenov, programmer senior Departemen Automasi Internal Teknologi positif

Timur Himullin, Insinyur Alami untuk Pengujian Otomasi Departemen Teknologi Pengembangan Teknologi Positif

1. Arthur Bozhenov: Pengembang web backend harus memiliki keterampilan dan pengetahuan berikut:

  • pemrograman multi-thread;
  • prinsip-prinsip asam (atomitas, konsistensi, isolasi, keandalan) dan aplikasi mereka dalam praktik;
  • prinsip umum arsitektur dan protokol jaringan;
  • siklus hidup permintaan / respons HTTP, jalur bagian;
  • perlindungan koneksi jaringan (https). Otorisasi. Menetapkan hak akses ke sumber daya;
  • Istirahat, Odata, Webapi, Sabun;
  • layanan web;
  • hosting Aplikasi Web (IIS, NGINX, Lighttpd, Node.js, Apache);
  • skalabilitas solusi, balancing / routing Requests;
  • penebangan;
  • caching data;
  • penyimpanan data (pilihan metode penyimpanan yang memadai tergantung pada tugas);
  • bekerja dengan sejumlah besar data.

2. Arthur Bozhenov: Pengembang Web Backend Toolkit Dasar:

  • iDE Nyaman (Visual Studio, Netbeans, dll.);
  • layanan atau utilitas untuk membuat / melihat / memodifikasi ekspresi regex, JSON, XML, teks dalam pengkodean yang tidak tepat;
  • Google dan stackoverflow;
  • Mongodb / redis / memcached;
  • Elasticsearch / kibana;
  • RabbitMQ / Zeromq / MSMQ dan MQ lainnya.

Timur Himullin: Sedangkan untuk IDE, ini adalah kasus rasa, setidaknya Notepad (Sabloim, NPP), tetapi saya akan terlihat lebih baik ke arah produk JetBrain, dan yang lain yang terintegrasi dengan baik satu sama lain.

3. Arthur Bozhenov: Lebih tinggi (opsional) teknis (wajib). Pengalaman kerja praktis lebih penting.

Timur Himullin: Adapun pendidikan, itu adalah teknis atau matematika yang lebih baik.

4. Arthur Bozhenov: 3-5 tahun pengembangan non-frontend.

Timur Himullin: Untuk pengembang backend, saya tidak bisa mengklarifikasi.

5. Arthur Bozhenov: Pikiran analitik.

Timur Himullin: Keterampilan nyata untuk bekerja di tim dan kemampuan untuk bernegosiasi. Pengembang yang tidak tahu cara memodelkan dan mulai bekerja segera tanpa berpikir oleh keseluruhan arsitektur dan interaksi dari semua modul aplikasi, saya tidak akan membawanya ke mana pun. Pada outsourcing membiarkan duduk!

Evgeny Kuzin, kepala departemen proyek jaringan,LLC "web dokter"

1. Pertama-tama, pengembang web backend harus memiliki bagasi umum untuk semua pengembang - pemikiran teknik, kemampuan untuk memasuki esensi tugas, menguraikannya ke komponen dan memilih dengan benar alat untuk menyelesaikannya.

Arsitektur aplikasi web berbeda secara signifikan dari arsitektur biasa perangkat lunak yang diterapkan Pertama-tama, puluhan pada saat yang sama, dan kadang-kadang ratusan pengguna dapat bekerja dengan aplikasi web. Isolasi pelanggan dari satu sama lain, keamanan sistem, perhitungan peningkatan produktivitas dengan meningkatkan sistem dan solusi arsitektur dan teknis terkait sepenuhnya jatuh pada bahu pengembang web.

Kedua, penting bagi pengembang web untuk merespons sensitif terhadap pengembangan Internet, menganalisis teknologi dan alat yang digunakan.

Pengembang web tidak boleh takut untuk menguasai teknologi baru, harus mudah ditingkatkan (dibandingkan dengan rekan kerja - programmer aplikasi) dan dapat bertindak cepat.

2. Saya tidak menelepon program tertentu, karena untuk setiap aspek opsi yang setara dimungkinkan.

Tentu saja, browser, dengan semua ekstensi yang diperlukan untuk analisis, verifikasi dan manipulasi dengan elemen dan skrip di halaman web. Kemudian utilitas yang memungkinkan mengirim berbagai permintaan HTTP khusus (karena pengembangan web 95% adalah protokol HTTP) dan menganalisis pertukaran lalu lintas dan pertukaran data dan pertukaran data secara rinci antara klien dan server. Juga kebutuhan pengembang web backend editor TeksDiinginkan dengan dukungan dari bahasa pemrograman yang digunakan, alat debugging, profil dan kontrol versi.

Secara terpisah, perlu disebutkan alat untuk menulis atau menghasilkan dokumentasi teknis. Dokumentasi baik, dokumentasi yang baik juga tidak buruk.

Dan, tentu saja, alat utama adalah kepala dan tangan lurus.

3. Benar-benar perlu untuk mengetahui bahasa Rusia, dapat dengan jelas dan jelas menyatakan pemikiran Anda dalam berkomunikasi dengan kolega, baik secara tertulis maupun lisan. Selebihnya, kami tidak memerlukan pelamar tentang cara wajib pendidikan teknis yang lebih tinggi atau ketersediaan sertifikat apa pun - menyelesaikan kualitas pekerjaan dan pengetahuan praktis.

4. Ini prinsip yang sama dengan pendidikan. Pengalaman, pengalaman - pro tanpa syarat, tetapi kami menganggap masing-masing kandidat secara individual.

5. Jika kita berbicara tentang mengembangkan tepat untuk Internet, maka pengembangan web itu sendiri sudah menyajikan pembuatan aplikasi yang bekerja di lingkungan publik bagi pengguna, niat sejati yang tidak diketahui. Memprogram tindakan apa pun, Anda perlu bertanya pada diri sendiri: Bagaimana jika pengguna (penyerang) mengotomatiskan pelaksanaan tindakan ini? Bagaimana jika data input aplikasi akan diedit secara sewenang-wenang? Bahwa jika tautan ke layanan ini masuk akses terbukaApakah akan ditransmisikan melalui IM ke pengguna lain? Dll.

Berdasarkan spesifik kegiatan kita, kita sering melanjutkan jalan menuju penyerang, dan data yang dengannya kita bekerja sangat menarik pada kalangan tertentu, sehingga beberapa aplikasi web kita memerlukan perlindungan menyeluruh.

Nikolai Netherry, Kepala Pengembangan Baru, Badoo

1. Pengembang Web Backend di Badoo, seperti insinyur yang baik, harus dapat memahami tugas dan dapat menyelesaikannya secara efektif dalam kerangka teknologi dan alat yang tersedia. Kami menggunakan PHP + MySQL, jadi pengembang web kami harus terlebih dahulu memiliki PHP dan SQL gratis. Harus bertanggung jawab dan berusaha untuk melakukan pekerjaannya dengan baik - untuk mengamati tenggat waktu, memahami nilai produk / teknis tugas, merespons dengan kualitas akhir.

2. Set dasar adalah PHP, MySQL, NGINX, GIT, JIRA, IDE, browser favorit dan garis komando. Selain itu, kami memiliki sejumlah besar alat, sistem, perpustakaan yang digunakan di mana-mana untuk menyelesaikan tugas tertentu. Beberapa alat ini tersedia dalam open source, misalnya, PINBA adalah agen pemantauan PHP real-time, alat pemformatan kode kami adalah phpcf, pemblokiran PHP untuk perpustakaan Leptica.

3. Jika seseorang memenuhi keterampilan dan persyaratan pengetahuan kami, maka kami siap untuk menawarkan pekerjaan apa pun tentang pendidikannya.

4. Situasi ini mirip dengan situasi pendidikan: tidak ada persyaratan ketat dan formal.

5. Proyek kami memiliki audiens besar dan cukup dimuat-backend. Di puncak mereka menangani hingga 50 ribu permintaan per detik. Dalam hal ini, kami memberikan perhatian khusus pada topik produktivitas. Perlu untuk memahami prinsip-prinsip dasar caching, replikasi, pekerjaan optimal dengan data, mengoptimalkan konsumsi dan distribusi sumber daya. Dapat melihat dan melokalkan masalah produktivitas di tingkat apa pun.

Denis Streetov, Kepala Departemen Pengembangan Teknologi dan Pemeliharaan Perusahaan "NTC IT ROSA"

1. Calon untuk posisi seperti itu di NTC IT Rosa akan dibutuhkan oleh keterampilan berikut:

  • pengetahuan yang baik tentang Ruby on Rails 4.x;
  • keakraban dengan perkembangan yang didorong oleh perilaku;
  • keakraban dengan prinsip-prinsip pengembangan kolektif - versi kontrol versi, pelacak tugas, dan sebagainya;
  • pengalaman dengan basis data (baik relasional dan nosql);
  • pengalaman dengan ramping / haml;
  • pengetahuan dan pengalaman dengan Javascript / CoffeeCript;
  • pengetahuan CSS / SCS.

2. Dalam NTC IT Rosa untuk pengembangan web saat ini menggunakan kerangka bootstrap, serta kerangka javascript angularjs. PostgreSQL dan Redis digunakan untuk menyimpan data. Pengembangan Ruby on Rails dilakukan sesuai dengan pendekatan pembangunan yang digerakkan oleh perilaku menggunakan RSPEC Toolkit.

3. Kehadiran pendidikan teknis yang lebih tinggi akan menjadi nilai tambah, tetapi pada awalnya kami tidak akan melihat diploma, tetapi pada keterampilan dan pengalaman kandidat potensial.

4. Pengalaman diinginkan dari tahun ke tahun dalam proyek-proyek, di mana yang disebutkan dalam paragraf pertama teknologi (setidaknya Ruby on Rails) digunakan.

5. Pengembang Web Backend di NTC IT ROSA bekerja terutama atas pengembangan ABF dan sistem perakitan yang digunakan untuk membuat produk utama kami - distribusi line OS dan produk di bawah OS ini. Oleh karena itu, itu akan menjadi keuntungan besar jika kandidat untuk lowongan ini terbiasa dengan Linux dan dengan paket perakitan untuk sistem ini. Ini tidak akan menjadi kenalan lebih lanjut dengan teknologi lain yang digunakan dalam ABF - virtualisasi (khususnya, LXC), sistem manajemen konfigurasi (misalnya, tidak dapat) dan sistem penyimpanan kode (terutama git).

Sergey Kazantsev, Pengembang Senior, "Kaspersky Lab"

1. Karena pengembang bertanggung jawab atas kode yang dilakukan pada server web.

Dengan demikian, pengembang backend harus memahami tidak hanya bahasa pemrograman, tetapi juga arsitektur server, database dan protokol interaksi jaringan.

2. Pengembang harus mengetahui setidaknya satu bahasa pemrograman tingkat tinggi, kerangka kerja untuk pengembangan web dan server web yang efisien.

Bundel populer dapat:

  • C # + ASP.NET + IIS;
  • Java + Spring MVC + Apache Tomcat;
  • Ruby on Rails + nginx;
  • Python + Django + Apache;
  • PHP + Apache;
  • ... atau kombinasinya.

Banyak layanan web perusahaan dibangun berdasarkan teknologi Microsoft Technologies dan platform .NET, tetapi Ruby on Rails, Perl, PHP juga diterapkan.

Di gudang pengembang backend yang baik selalu ada alat:

  • pemantauan Lalu Lintas: Fiddler, Wireshark;
  • performa Profil, Memori dan Permintaan Database;
  • log Cari Cepat: grep.

3. Keterampilan wajib untuk bekerja dengan database, antrian pesan dan proyek besar untuk penggunaan cache terdistribusi.

4. Pengalaman yang diperlukan dapat bergantung pada posisi yang diklaim pemohon:

  • 1 tahun - pengembang web junior;
  • 2-5 tahun - pengembang web;
  • 5-7 + - Pengembang Senior / Lead.

5. Persyaratan spesifik dari Kaspersky Lab dapat dikaitkan dengan pengetahuan kriptografi, ancaman potensial terhadap aplikasi web dan cara untuk mencegahnya.

Ilya Kutukov, programmer senior, spesialis dalam rekayasa web dalam paralel

1. Kami dalam paralel sekarang secara terbuka dua lowongan untuk spesialis seperti itu - pengembang backend web terkemuka (http://hh.ru/vacancy/12586616?Query\u003dParallels) dan pengembang dan arsitek Web Bachend (Python) (http: //hh.ru/vacancy/12599030?Query\u003dparlels), sehingga kita tahu persis apa yang kita inginkan dari spesialis tersebut. Dapat dipahami bahwa seseorang yang datang kepada AS memiliki bahasa dan teknologi pemrograman yang diperlukan untuk bekerja dengan cukup. Selain memeriksa keterampilan pengkodean dan keseluruhan pengaruh, kami memberikan tes pada arsitek - teks yang ditulis secara bebas dan dengan sengaja tidak lengkap pada pengembangan sistem. Lebih lanjut, meminta kandidat untuk mengklarifikasi bahwa tidak jelas baginya, pertanyaan tambahan apa yang dia miliki dan bagaimana dia melihat komponen utama sistem, skema data, bagaimana semuanya akan berubah dengan meningkatkan beban, jumlah data, dan di mana bisa diabaikan.

2. Toolkit utama - IDE (saya akan mengklarifikasi bahwa kami berada di tim lebih suka pycharm), lingkungan pengembang, yaitu, satu set program yang membuatnya sebanyak mungkin pada pengisian server tempur, tetapi pada saat yang sama Waktu dengan kemampuan untuk dengan cepat memahami apa yang terjadi, VCS, skrip kepala. Dari teknologi, dan pendekatan yang menarik, relatif baru, saya juga ingin menyebutkan pendekatan "reaktif" (Akka, Rx. *, Badai Apache, dll.), Yang mengharuskan pengembang berpikir pada tingkat pesan, peristiwa dan modifikasi mereka. Serta arsitektur mikro yang melengkapi bahasa Deskripsi Antarmuka mereka (Hemat, Avro, Protobufs, Skema JSON), yang memungkinkan untuk membuat kontrak untuk data mana yang sedang dipertukarkan.

3. Pendidikan bagi kita tidak memainkan peran fundamental.

5. Kami memiliki pengembang backend bekerja pada fungsi tersebut sebagai paralel myaccount, portal akses, portal desktop, dalam solusi seperti akses paralel (solusi akses jarak jauh) dan Parallels Desktop untuk Mac (luncurkan pada Machs dari sistem operasi yang berbeda dan aplikasi mereka tanpa reboot), dengan berbagai solusi infrastruktur. Oleh karena itu, kami memiliki spesifisitas seperti nol-downtime, dan yah, jika seseorang tidak hanya memahami perubahan apa yang harus dilakukan, tetapi juga bagaimana melakukannya, tidak mempengaruhi pengguna.

Konstantin Kichinsky, Pakar Teknologi Strategis, Microsoft Rusia

1. Pengetahuan dan keterampilan yang diperlukan untuk pengembang web backend:

  • Arsitektur jaringan, protokol, saluran komunikasi.
  • Teknologi tumpukan yang sesuai dengan proyek (misalnya, C #, .NET, ASP.NET atau JavaScript / TypeScript + nodejs) + Kontrol yang mendasari sistem operasi (misalnya, Windows / Azure + Powershell).
  • Otomatisasi penyebaran dan pengujian (termasuk beban).
  • Pemahaman fitur cloud. Penyedia Utama (Microsoft Azure, AWS), termasuk memberikan skalabilitas layanan.
  • SDL dan dalam masalah keamanan umum (termasuk enkripsi dan otentikasi).

2. Alat: Visual Studio, GIT + Sisanya tergantung pada proses dan tumpukan teknologi.

3. Pendidikan: Profil (TI) + pengalaman praktis, menyambut pengetahuan berkualitas di bidang tertentu (juga keselamatan atau memastikan toleransi kesalahan situs).

4. Pengalaman: Pengalaman praktis dalam proyek nyata, termasuk partisipasi dalam proyek OS.

5. Persyaratan khusus: Azure.

Gunung Alexander, Direktur teknologi Informasi Grup Mail.ru.

1. Pertama, ia harus mengetahui backend - bahasa pemrograman utamanya, basis data, prinsip-prinsip pengorganisasian aplikasi server. Selain itu, ia membutuhkan pengetahuan di Web: Perangkat protokol HTTP, kemampuan CSS, setidaknya kepemilikan unsur HTML dan JavaScript. Dan akhirnya, ia harus menjadi pengembang yang baik - untuk dapat men-debug sendiri dan kode orang lain, untuk menggunakan algoritma klasik dengan benar, pilih struktur data yang relevan.

2. Alat utama, tentu saja, bahasa pemrograman. Bahasa mendefinisikan tingkat kedua toolkit: standar untuk bahasa kerangka kerja dan kit perpustakaan ini. Kemudian go database: paling sering mysql atau postgresql - dan fasilitas penyimpanan NOSQL, seperti tarantool atau redis.

3. Tidak ada persyaratan formal untuk diploma selama perangkat untuk bekerja di Grup Mail.ru. Jauh lebih penting untuk keterampilan dan proyek nyata di mana ia berpartisipasi. Mail.ru Group memiliki dua proyek pendidikan besar: Technopark berdasarkan MSTU Bauman dan Technersphere berdasarkan IMC MSU, yang tujuannya adalah memberikan keterampilan khusus kepada siswa di bidang pengembangan web.

4. Tidak ada persyaratan formal lagi, tetapi secara umum dapat dikatakan bahwa pengembang menjadi sepenuhnya independen di suatu tempat setelah dua atau tiga tahun pengalaman "angka kedua".

5. Pengembangan backend secara tradisional jantung perusahaan kami. Pengembang backend harus benar-benar yang terbaik dalam segala hal - cerdas, kreatif, bertanggung jawab, rapi, serta pemain tim yang baik dan lebih disukai dengan lug di sekitar kepala. Dari sudut pandang teknis, spesifisitas kami adalah bahwa sebagian besar backend ditulis pada C ++, dan bukan bahasa scripting - beban tinggi memaksanya.

Alexander Nedzelsky, Kepala Studio Web Itoft

1. Jika kita berbicara tentang gambar kolektif tertentu dari pengembang bachend, maka:

  • memahami OOP, templat desain, pengetahuan tentang algoritma dasar dan struktur data;
  • memiliki salah satu bahasa pemrograman (atau beberapa);
  • pengalaman dengan DBMS, pengetahuan SQL;
  • memahami prinsip-prinsip merancang database relasional;
  • pengalaman dengan kerangka kerja populer;
  • pengalaman dengan sistem manajemen versi;
  • pengetahuan dasar tentang HTML, CSS, JavaScript;
  • kemampuan untuk mengatur lingkungan uji.

2. "Notepad" dan kepala di bahu. Dan jika serius, IDE / Editor dan area pengujian. Biasanya, alat dipilih tergantung pada preferensi / tugas / kemampuan.

3. Teknis ketat lebih tinggi.

4. Kehadiran proyek komersial yang lengkap dan bekerja.

5. Kami sedang mengembangkan aplikasi web, situs, dan layanan terutama pada PHP / MySQL. Pada saat yang sama, kami menggunakan Yii / Symfony dan 1C-Bitrix untuk solusi standar. Oleh karena itu, pengalaman dan pengetahuan yang relevan penting bagi kami.

Eduard Gursky, memimpin teknis di tim pengembangan internal, Jetbrains

1. Pengembang web backend adalah, pada kenyataannya, seseorang yang mengembangkan logika server dan menyadari konteks mana itu akan dieksekusi - dalam konteks aplikasi web. Jika aplikasi Web backend diimplementasikan di Jawa, dan dalam banyak kasus, pada kenyataannya, spesialis yang sama menerapkan semua persyaratan yang sama untuk pengetahuan dan keterampilan sebagai pengembang Java yang biasa: pengetahuan bahasa, pemahaman pekerjaan dan perangkat Komponen Perpustakaan Utama Java SDK, dll. Namun, pengalaman juga ditambah dengan berbagai kerangka web (menyederhanakan implementasi injeksi ketergantungan, MVC, dll.), Kemampuan untuk mengevaluasi dan meningkatkan kinerja aplikasi, skalabilitasnya. Perlu untuk memperhitungkan dan memahami seberapa cepat aplikasi pengguna akan menerima hasil dari kode server, serta seberapa aman dan rasional, fungsionalitas server lainnya rasional melalui browser pengguna.

Seringkali aplikasi web backend memerlukan integrasi dengan layanan pihak ketiga atau ekspor fungsinya sebagai API eksternal. Pengembang harus memahami bagaimana tugas-tugas tersebut diimplementasikan protokol dan mekanisme mana yang digunakan untuk ini.

Terlepas dari kenyataan bahwa seseorang seperti itu terutama terlibat dalam pengembangan logika server aplikasi, kebutuhan untuk men-debug atau membuat prototipe menggunakan bagian klien dari aplikasi. Dari sini, ia mengikuti kebutuhan untuk memahami pengoperasian protokol TCP / IP, protokol HTTP, prinsip-prinsip interaksi browser dengan aplikasi web, pengetahuan dasar tentang tata letak, gaya CSS, kemampuan JavaScript.

2. Biasanya IDE ini untuk pengembangan. Anda juga perlu menggunakan profiler untuk menyelesaikan tugas-tugas produktivitas, konsumsi sumber daya yang berlebihan, dll. Di tim kami, kami menggunakan ide IntelliJ.

3. Kami tidak memaksakan persyaratan formal untuk tingkat pendidikan kandidat. Pengalaman yang lebih penting, pengertian dan kecerdasan, dan, tentu saja, motivasi manusia.

4. Setiap pengalaman dalam pengembangan aplikasi web produksi, tentu saja, merupakan nilai tambah. Pengetahuan dan keterampilan yang dijelaskan di atas tidak dapat hadir di spesialis dengan tidak adanya pengalaman yang relevan. Pada wawancara, kami biasanya kami tertarik dengan rincian partisipasi dalam berbagai proyek yang ditentukan dalam resume untuk menilai pengalaman bahwa kandidat dapat dibeli dengan menerapkan tugas-tugas tersebut. Seorang spesialis yang mencoba berbagai pendekatan dan teknologi untuk menyelesaikan tugas serupa dalam mengembangkan aplikasi web yang dapat menganalisis pro dan kontra dari setiap pendekatan, adalah kandidat yang sangat menarik.

5. Pengalaman mengembangkan aplikasi menggunakan produk jetbrains disambut. Kita semua ada di perusahaan mencoba menggunakan produk kami, karena mereka nyaman dan karena kami ingin membuatnya lebih nyaman!

Baru-baru ini, kami mempraktikkan pengembangan aplikasi web dalam bahasa Kotlin. Ini memberikan sejumlah keuntungan yang signifikan, dan juga membuat proses menulis kode di atasnya lebih menyenangkan. Keinginan kandidat disambut untuk mempelajari bahasa baru dan pendekatan baru untuk implementasi aplikasi web.

Dmitry Ovchinnikov, Pengembang Web
Natalia Beetle, perekrut di Sooo "Streaming Game" di Pusat Minsk untuk Pengembangan Wargaming

1. Pengembang backend memerlukan pemahaman mendalam tentang Web: Dari pembentukan permintaan HTTP di sisi browser sebelum implementasi komunikasi intersperson menggunakan berbagai protokol. Web dalam Wargaming bukan hanya "akun pribadi" pemain, tetapi juga banyak layanan yang menyediakan otentikasi seragam, pendaftaran, partisipasi dalam program rujukan, dll.

Penting juga untuk memiliki pemikiran teknik. Dikombinasikan dengan cakrawala teknis besar, ini memungkinkan untuk menawarkan solusi yang efektif.

Dan, tentu saja, pastikan untuk menulis kode kualitas. Wajah seorang programmer adalah kodenya. Pengetahuan arsitektur utama dan pola pemrograman modern sering wajib ketika bekerja di tim besar atas proyek yang kompleks.

2. Dalam Wargaming, tumpukan teknologi yang digunakan adalah cukup standar: array utama proyek web dikembangkan pada Python, beberapa layanan ditulis dalam PHP, dan lainnya, penting untuk mempercepat dan komputasi paralel, pada Erlang. MySQL digunakan untuk penyimpanan, untuk cache - memcached. Rabbitmq dipilih sebagai ban pesan di perusahaan. Dari kerangka kerja - Django dan bengkok. Jika kita berbicara tentang bagian depan, maka ini adalah bundel backbone / underscore / jquery yang umum.

Adapun alat pengembangan, dalam wargaming kita mematuhi posisi "Apa yang lebih baik untuk pengembang". Seseorang menggunakan IDE modern, seseorang merasa lebih nyaman dengan Vim atau Emacs. Tidak masalah, dengan bantuan alat yang kita lakukan pekerjaan kita, jika hasilnya adalah layanan yang nyaman dan bermanfaat yang menghasilkan jutaan pemain setiap hari di seluruh dunia setiap hari.

3. Kami tidak memiliki persyaratan formal untuk tingkat pendidikan. Pendidikan profil (teknis, matematika) akan menjadi nilai tambah, karena menunjukkan adanya persiapan teoritis fundamental dari kandidat, tetapi tidak mungkin menjadi faktor penentu ketika masuk bekerja. Kami memahami bahwa pengetahuan di bidang matematika, OOP, algoritma klasik dan struktur data dapat diperoleh secara independen. Preferensi diberikan kepada kandidat dengan pengalaman. Juga, kemampuan seorang kandidat untuk memecahkan tugas-tugas teknik dan membuat solusi rekayasa, dan tidak hanya menulis kode.

4. Persyaratan untuk pengalaman kerja tergantung pada lowongan. Jika kita mengundang seorang spesialis muda, pertama-tama kita akan melihat "proyek rumahan" dan perkembangan universitasnya. Kita harus yakin bahwa seseorang datang kepada kita bukan secara kebetulan, itu adalah pilihan sadar yang dapat dikonfirmasi oleh contoh-contoh nyata setidaknya kecil, tetapi menyelesaikan proyek. Ketika datang ke spesialis yang berpengalaman - persyaratannya lebih spesifik. Kami penting untuk mengalami di berbagai bidang: database, linux, server web (Apache, nginim), pengetahuan dan pemahaman sistem caching (memcached), sistem olahpesan (RabbitMQ), dan pengalaman dengan kerangka kerja (Django, Twisted). Pengalaman dalam mengoptimalkan proyek-proyek beban tinggi akan sangat berguna dan akan memungkinkan Anda untuk dengan cepat bergabung dengan proses pengembangan dan bekerja dengan efisiensi maksimum untuk diri sendiri dan tim. Untuk para ahli dan pakar terkemuka, selain di atas, cakrawala teknis yang luas dan pengalaman dengan berbagai tumpukan teknologi penting.

5. Dukungan untuk infrastruktur web untuk sejumlah besar pemain dari alam semesta Wargaming.net menyiratkan kemampuan untuk bekerja dengan beban tinggi dan berbaring dalam arsitektur aplikasi untuk beroperasi jumlah besar Permintaan.

Selain kesiapan untuk pemuatan, penting untuk mengingat keselamatan. Oleh karena itu, pengembang web dalam Wargaming berkewajiban untuk mengetahui tentang mekanisme melawan ancaman besar dan memastikan keandalan kodenya.

Disiapkan Igor Strompel.

Pusat penelitian portal superjob.ru terutama untuk "Administrator Sistem" mempelajari penawaran majikan. Dengan posisi pengembang backend-web, persyaratan khusus belum didefinisikan, mereka terutama mirip dengan fakta bahwa mereka disajikan kepada programmer.

Java programmer.

SAYA T
Telekomunikasi
Industri
Produksi
Bangunan
Manajemen properti
Layanan B2V. Penjualan B2B. Penjualan b2c.
SAYA. 65 000 – 80 000 54 000 – 71 000 50 000 – 67 000 60 000 – 75 000 50 000 – 65 000 50 000 – 64 000
50 000 – 64 000 42 000 – 57 000 40 000 – 53 000 45 000 – 60 000 40 000 – 52 000 40 000 – 51 000
Ii. 80 000 – 90 000 71 000 – 87 000 67 000 – 85 000 75 000 – 90 000 65 000 – 83 000 64 000 – 87 000
64 000 – 72 000 57 000 – 70 000 53 000 – 68 000 60 000 – 70 000 52 000 – 66 000 51 000 – 70 000
AKU AKU AKU 90 000 – 150 000 87 000 – 125 000 85 000 – 115 000 90 000 – 130 000 83 000 – 120 000 87 000 – 125 000
72 000 – 120 000 70 000 – 100 000 68 000 – 92 000 70 000 – 100 000 66 000 – 96 000 70 000 – 100 000
Iv. 150 000 – 200 000 125 000 – 150 000 115 000 – 150 000 130 000 – 180 000 120 000 – 170 000 125 000 – 160 000
120 000 – 160 000 100 000 – 120 000 92 000 – 120 000 100 000 – 145 000 96 000 – 140 000 100 000 – 130 000
Lih. CF 125 000 110 000 100 000 115 000 115 000 110 000
100 000 88 000 80 000 92 000 90 000 90 000

Garis Upah Aneh - MSK Tengah, Bahkan - di St. Petersburg

Kisaran gaji Persyaratan dan keinginan untuk keterampilan profesional
Rentang I.
  • Pendidikan Tinggi Tidak Lengkap (Teknis / TI)
  • Pengetahuan yang sangat baik HTML, CSS, Java, XML
  • Pengetahuan tentang prinsip-prinsip pemrograman berorientasi objek
  • Pengetahuan tentang Yayasan Teoritis Pengembangan Basis Data
  • Pengetahuan bahasa Inggris pada tingkat dokumentasi teknis membaca
  • Pengalaman pemrograman java dari enam bulan
Range II.
  • Pengalaman dengan server web dan server aplikasi
  • Pengalaman pemrograman java dari 1 tahun
Range III.
  • Pendidikan Tinggi (Teknis / TI)
  • Template desain pengetahuan Java dan J2EE
  • Pengalaman menggunakan alat khusus (hibernate, musim semi, struts, dll.)
  • Pengalaman dalam tim pengembangan
  • Pengalaman dengan sistem kontrol versi
  • Pengalaman dengan DBMS (MS SQL Server atau Oracle)
  • Pengalaman pemrograman java dari 2 tahun
Rentang IV.
  • Kehadiran sertifikat kualifikasi
  • Pengalaman desain sistem Informasi dan persiapan dokumentasi proyek
  • Pengalaman dengan Solusi Integrasi (IBM WebSphere, Oracle Fusion Middleware)
  • Pengalaman dalam pengembangan aplikasi multi-level
  • Pengalaman pemrograman java dari 3 tahun
Mungkin keinginan:
  • pengetahuan bahasa Inggris di tingkat sehari-hari atau bebas
  • kelompok Pengembang Manual Keterampilan

Valery Chernetova disiapkan, pemimpin analis superjob


Dalam kontak dengan

  • Transfer

Daftar ini muncul sebagai memo pribadi tentang topik yang saya diskusikan dengan kolega dan teman-teman dan di mana saya ingin memahami yang lebih dalam ...

Saya bukan kekasih besar untuk mengajukan pertanyaan teknis tentang wawancara: bagi saya lebih baik duduk dengan seorang kandidat (atau kandidat) pada keyboard atas beberapa kode nyata, masalah nyata - dan sepanjang hari untuk terlibat Pasangkan pemrograman, diinginkan secara bergantian dengan anggota tim lainnya. Tetapi saya percaya bahwa beberapa pertanyaan teknis dapat menjadi titik awal yang baik untuk awal percakapan yang menarik dan menyenangkan dan akan memungkinkan satu sama lain lebih dalam.

Sejumlah masalah yang terkait dengan bagian server dikumpulkan di repositori ini, yang dapat digunakan saat memeriksa kandidat potensial. Dalam kasus tidak disarankan untuk bertanya segala sesuatu Pertanyaan untuk satu kandidat: akan memakan waktu beberapa jam dan tidak masuk akal sama sekali, karena mereka mencakup berbagai topik. Tidak ada yang bisa tahu segalanya. Pilih bagian yang paling relevan dan pertanyaan paling menarik untuk memperluas percakapan.

Sebuah peringatan

Sebagian besar pertanyaan terbuka, beberapa tidak baik atau salah Menjawab. Sebaliknya, mereka harus menjadi titik awal dari percakapan, yang dalam sebuah ide harus lebih menunjukkan kemampuan manusia daripada jawaban sederhana. Secara pribadi, saya biasanya lebih suka pertanyaan, jawaban yang saya sendiri tidak tahu.

Sekali lagi, saya menekankan bahwa itu tidak cukup untuk mengajukan pertanyaan. Di akhir wawancara, habiskan sesi panjang pemrograman pasangan: ini salah satunya pilihan yang lebih baikUntuk memahami gaya dan saling mendekati - dan berikan untuk memahami kandidat, apa yang diharapkan dari pekerjaan di masa depan.

Proyek ini dibuat sesuai dengan sampel "pertanyaan untuk wawancara untuk pekerjaan frontender" dari @darcyclarge.

Di mana jawabannya?

Cepat atau lambat saya akan melengkapi artikel dengan jawaban yang sesuai. Saya akan berterima kasih atas bantuan apa pun!

Pertanyaan pada templat desain:

Mengapa objek dan statika global jahat? Dapatkah Anda menunjukkan pada kode contoh?

Ceritakan tentang kontrol inversi dan bagaimana meningkatkan kode organisasi.

Undang-undang IBS (prinsip kesadaran minimal) menyatakan bahwa setiap modul program harus memiliki pengetahuan terbatas tentang modul lain dan harus berinteraksi hanya dengan "teman" langsung (kadang-kadang diformulasikan sebagai "Jangan berbicara dengan orang asing"). Bisakah Anda menulis kode yang melanggar prinsip ini? Mengapa organisasi buruknya dan bagaimana cara memperbaikinya?

Active-Record adalah templat desain yang mendorong implementasi fungsi dengan sendirinya, seperti memasukkan, memperbarui dan menghapus, dan properti yang cocok dengan kolom beberapa tabel dasar dalam database. Apakah Anda berpikir dan mengalami, pembatasan dan jebakan apa yang memiliki template ini?

Data-Mapper adalah templat desain yang mendorong penggunaan lapisan konverter (peta) data yang bergerak antara objek dan basis data, pada saat yang sama menjaga independensi mereka satu sama lain dan dari konverter itu sendiri. Berbeda dengan template ini, dalam catatan aktif, objek secara langsung mencakup operasi untuk menyelamatkan diri dalam database dan properti yang sesuai dengan tabel dasar dalam database. Apakah Anda memiliki pendapat tentang template ini? Dalam kasus apa Anda lebih suka salah satu dari mereka ke yang lain?

Mengapa ketika diberikan null sering menyebutkan "kesalahan satu miliar dolar"? Ingin membahas teknik untuk mencegah hal ini, seperti templat objek nol yang disajikan dalam Buku GOF, atau jenis opsional?

Mengapa komposisi seringkali lebih baik daripada warisan?

Apa tingkat keamanan (lapisan anti-korupsi)?

Singleton adalah templat desain yang menciptakan satu instance kelas untuk satu objek. Tulis yang benar (ulir-aman singleton) tidak begitu mudah. Mencoba?

Kemampuan untuk mengubah implementasi tanpa mempengaruhi bagian klien disebut presentasi data abstrak (abstraksi data). Tulis contoh yang melanggar properti ini, lalu perbaiki.

Tulis cuplikan kode yang melanggar prinsip Don "t ulangi sendiri (kering). Kemudian perbaiki.

Bagaimana Anda akan menangani dependensi neraka (Dependency Hell)?

Mengapa Goto - apakah itu jahat?

Prinsip keandalan adalah aturan umum organisasi kode yang merekomendasikan "Menjadi konservatif adalah bahwa Anda mengirim, dan liberal dalam apa yang Anda terima". Ini sering dirumuskan sebagai "Menjadi pembaca toleran dan penulis hati-hati". Ingin membahas makna prinsip ini?

Pemisahan diskusi - prinsip desain untuk pemisahan program komputer Untuk masing-masing bidang, yang masing-masing bertanggung jawab atas tugasnya. Ada banyak mekanisme berbeda untuk memisahkan tanggung jawab (penggunaan objek, fungsi, modul atau template, seperti MVC dan sejenisnya). Ingin membahas topik ini?

Pertanyaan tentang Organisasi Kode (Desain Kode):

Sering dikatakan bahwa salah satu tugas paling penting dari desain berorientasi objek (dan organisasi kode secara keseluruhan) adalah kopling dan kelemahan yang kuat. Apa artinya? Mengapa mereka begitu penting dan bagaimana mencapainya?

Mengapa dalam sebagian besar bahasa indeks array dimulai dari awal?

Bagaimana tes dan TDD mempengaruhi kode organisasi?

Tulis fragmen kode yang melanggar prinsip Don "t mengulangi diri Anda (kering). Jelaskan mengapa dia memiliki organisasi yang buruk, dan benar.

Apa perbedaan antara kopling dan keterhubungan?

Apa yang refactoring?

Apakah komentar dalam kode berguna? Seseorang mengatakan bahwa mereka harus dihindari jika memungkinkan, dan idealnya mereka tidak perlu sama sekali. Apa kamu setuju?

Apa perbedaan antara kode organisasi dan arsitektur?

Mengapa tes TDD ditulis sebelum kode?

C ++ mendukung banyak warisan, dan Java memungkinkan kelas untuk mengimplementasikan beberapa antarmuka. Efek apa gunanya dana ini untuk ortogonality? Apakah ada perbedaan dalam efek antara penggunaan multiple warisan dan beberapa antarmuka? Apakah ada perbedaan antara menggunakan delegasi dan warisan? [Ini adalah pertanyaan dari buku "Pragmatic Programmer" Andrew Khanta dan Defvida Thomas]

Pro dan Kontra penyimpanan logika area subjek dalam prosedur tersimpan.

Menurut Anda, mengapa organisasi berorientasi objek mendominasi bertahun-tahun di pasar?

Jika kode Anda memiliki organisasi yang buruk, bagaimana Anda memahaminya?

Pertanyaan dalam bahasa pemrograman:

Beri tahu O. tiga utama. Kerugian dari bahasa pemrograman favorit Anda.

Mengapa meningkatkan minat dalam pemrograman fungsional?

Apa itu penutupan dan apa yang berguna? Apa yang umum dengan penutupan dan kelas?

Kapan nyaman menggunakan generik?

Apa fungsi urutan tinggi? Untuk apa yang mereka butuhkan? Tulis fitur seperti itu dalam bahasa apa pun.

Tuliskan siklus, lalu konversikan ke fungsi rekursif hanya menggunakan struktur abadi (I.E. tanpa variabel). Jelaskan itu.

Apa artinya ketika bahasa menganggap fungsi sebagai objek kelas satu?

Tampilkan contoh saat fungsi anonim dapat bermanfaat.

Mengapa Anda membutuhkan namespace? Datang dengan alternatif.

Ceritakan pada kami tentang kompatibilitas Java dan C # (atau pilih dua bahasa arbitrer lainnya).

Mengapa banyak pengembang tidak menyukai Java?

Apa yang membuat lidah yang baik baik dan buruk - buruk?

Tulis dua fungsi, satu transparan yang direferasi, dan buram referensi lainnya. Mari kita bahas mereka.

Apa tumpukan dan apa itu banyak? Apa itu Stack Overflow?

Mengapa penting fungsinya adalah objek kelas satu dalam bahasa?

Dalam beberapa bahasa, terutama dengan pendekatan fungsional, teknik diizinkan, yang disebut perbandingan dengan sampel. Apakah dia mengenalmu? Bagaimana pemetaan sampel berbeda dari desain sakelar?

Mengapa dalam beberapa pengecualian bahasa pemrograman tidak diimplementasikan? Apa kelebihan dan kekurangan dari pendekatan ini?

Jika kucing adalah binatang, maka benarkah TakeCare - Ini TAKECARE. ?

Mengapa di Jawa, C # dan banyak desainer bahasa lain bukan bagian dari antarmuka?

Dalam beberapa tahun terakhir, banyak kebisingan di sekitar Node.js. Apa pendapat Anda tentang penggunaan dalam bahasa Backstand, yang awalnya dikandung untuk bekerja di browser?

Bayangkan Anda memiliki mesin waktu dan ada kesempatan untuk kembali pada titik waktu tertentu dalam sejarah Jawa (C #, Python, pergi atau sesuatu yang lain) dan berbicara dengan beberapa pencipta JDK. Apa yang akan Anda coba meyakinkan mereka? Hapus pengecualian terkontrol? Tambahkan tipe primitif yang tidak ditandatangani? Banyak warisan?

Pertanyaan pengembangan web:

Mengapa cookie asli dan cookie pihak ketiga diproses begitu berbeda?

Bagaimana Anda mengelola penomoran versi API Layanan Web?

Dari sudut pandang backend, apakah ada kerugian atau hambatan untuk diperkenalkannya aplikasi satu halaman?

Mengapa kita biasanya berjuang sedemikian rupa sehingga layanannya tanpa kewarganegaraan? Apa yang begitu baik dalam kode tanpa kewarganegaraan? Mengapa dan kapan penyimpanan kondisi (status) buruk?

Istirahat dan sabun: Dalam situasi apa Anda akan memilih salah satu dari pendekatan ini, dan dalam apa yang lain?

Dalam pengembangan web, controller model-view dan model-model-model tampilan-tampilan sebagian besar mirip baik di Besende dan di depan. Apa yang mereka bayangkan dan mengapa tepat untuk menggunakannya?

Pertanyaan basis data:

Bagaimana Anda memposting aplikasi dari satu database ke database lainnya, misalnya, dari MySQL di PostgreSQL? Jika Anda harus mengelola proyek seperti itu, masalah apa yang Anda harapkan?

Mengapa basis data menganggap Null sebagai kasus khusus? Misalnya, mengapa dalam SQL pilih * dari tabel di mana bidang \u003d null tidak memberikan perekaman dengan bidang nol?

Asam adalah akronim untuk atomitas, konsistensi, isolasi, daya tahan (atomitas, konsistensi, isolasi, stabilitas). Sebagian besar mesin basis data menjamin keempat properti ini untuk transaksi dalam database. Apa yang Anda tahu tentang hal itu? Ingin memberi tahu Anda lebih banyak?

Bagaimana Anda menangani transfer skema DB, yaitu, bagaimana Anda mengotomatiskan perubahan dalam skema DB karena aplikasi dikembangkan dari versi ke versi?

Bagaimana cara menerapkan beban malas? Kapan itu berguna? Apa itu batu bawah air?

Apa yang disebut "N + 1 Masalah" terjadi ketika kode harus memuat elemen anak dari hubungan "keturunan orang tua" dalam ORM dengan boot malas, dan oleh karena itu, kirim permintaan untuk catatan induk, dan kemudian satu permintaan untuk setiap anak perusahaan . Bagaimana cara mengatasi masalah?

Bagaimana Anda menemukan permintaan biaya paling banyak dalam aplikasi?

Menurut Anda, apakah selalu perlu untuk menormalkan database? Kapan disarankan untuk menggunakan database Denormalized?

Salah satu metode integrasi berkelanjutan disebut hutang biru-hijau. Ini terdiri dari menggunakan dua lingkungan operasi industri, sebanyak mungkin - dan dikerahkan di salah satu dari mereka selama yang lain, dan kemudian mengamankan lalu lintas beralih dari satu lingkungan ke yang kedua setelah pengujian dalam pengaturan yang nyaman. Metode ini rumit jika hutang melibatkan perubahan struktur atau konten basis data. Saya ingin membahas topik ini dengan Anda.

Pertanyaan tentang NoSQL:

Apa yang akhirnya konsistensi (akhirnya konsistensi)?

Bagaimana dengan Teorema CAP, memberikan contoh sistem CP, AP dan CA.

Bagaimana Anda menjelaskan percikan minat pada NoSQL belakangan ini?

Bagaimana Nosql memecahkan masalah skalabilitas?

Dalam hal ini, apakah Anda lebih suka DBMS berorientasi pada dokumen seperti MongoDB alih-alih DBMS relasional, seperti MySQL atau PostgreSQL?

Pertanyaan pada versi kode:

Mengapa implementasi cabang di Mercurial atau Git lebih mudah daripada di SVN?

Apa pro dan kontra dari sistem kontrol versi yang didistribusikan, seperti git, dibandingkan dengan VCS terpusat seperti SVN?

Bisakah Anda menggambarkan alur github alur kerja dan gitflow?

Apa rebase (pindah)?

Mengapa merger lebih mudah berolahraga dalam Mercurial atau Git daripada di SVN dan CVS?

Pertanyaan tentang Paralelisme:

Mengapa Anda membutuhkan paralelisme? Menjelaskan.

Mengapa begitu sulit untuk menguji kode multi-threaded / paralel?

Apa status lomba? Tulis contoh pada bahasa arbitrer.

Apa yang saling memblokir? Bisakah Anda menulis beberapa kode yang menderita timbal balik?

Apa itu Sumber Daya Kelaparan (Proses Starvation)? Jika perlu, mari kita pertimbangkan definisinya.

Apa itu algoritma sinkronisasi non-blocking tanpa harapan (algoritma wait-free)?

Pertanyaan tentang sistem terdistribusi:

Bagaimana cara menguji sistem terdistribusi?

Dalam hal ini, apakah Anda menerapkan komunikasi asinkron antara dua sistem?

Apa batu bawah air utama dari prosedur tantangan jarak jauh?

Jika Anda membuat sistem terdistribusi untuk skalabilitas dan keandalan, masalah apa yang berbeda dapat terjadi dalam lingkungan jaringan yang tertutup dan aman - dan dalam sistem publik yang didistribusikan secara geografis dan publik?

Bagaimana cara memastikan toleransi kesalahan aplikasi web? Aplikasi desktop?

Bagaimana cara mengatasi kegagalan dalam sistem terdistribusi?

Mari kita bicara tentang pendekatan yang berbeda untuk memulihkan kapasitas kerja (rekonsiliasi) setelah pelanggaran koneksi jaringan.

Apa kesalahpahaman tentang komputasi yang didistribusikan?

Ketika Anda menerapkan permintaan / balasan, dan kapan menerbitkan / berlangganan?

Misalkan sistem yang dengannya Anda bekerja tidak mendukung transaksionalitas. Bagaimana Anda menerapkannya dari awal?

Pertanyaan tentang perangkat lunak siklus hidup dan tim manual:

Apa itu Fleksibilitas (Agility)?

Bagaimana Anda akan bekerja dengan kode warisan?

Katakan, saya adalah manajer proyek Anda dan bukan ahli dalam pemrograman. Cobalah untuk menjelaskan kepada saya apa kode warisan dan mengapa Anda perlu mengurus kualitas kode.

Saya adalah Direktur Eksekutif perusahaan Anda. Jelaskan kepada saya Kanban dan meyakinkan Anda untuk berinvestasi di dalamnya.

Apa perbedaan utama antara metodologi pengembangan fleksibel dan model kaskade?

Menjadi pemimpin kelompok, bagaimana Anda memecahkan masalah terlalu banyak pertemuan?

Bagaimana Anda akan mengatasi proyek yang dilakukan dengan penundaan yang kuat?

"Orang dan interaksi lebih penting daripada proses dan alat" dan "kerjasama dengan pelanggan lebih penting daripada harmonisasi ketentuan kontrak" adalah setengah dari nilai yang dinyatakan dalam manifes gesit. Mari kita bahas mereka.

Beri tahu kami keputusan apa yang akan Anda ambil jika ada direktur teknis perusahaan Anda.

Apakah ada manfaat dari manajer program?

Buat jadwal kerja, menggunakan jadwal yang fleksibel (yaitu, tanpa waktu kerja yang diinstal) dan kebijakan bunga "Ambil saat Anda membutuhkan".

Bagaimana Anda menangani pengajaran yang sangat besar dan meyakinkan pengembang untuk tidak meninggalkan tim tanpa meningkatkan gaji? Apa gunanya perusahaan membuat mereka tetap tinggal?

Apa tiga kualitas utama yang Anda nilai di kolega kecuali pemrograman?

Apa tiga hal utama tentang pemrograman perlu mengetahui humaniora, menurut Anda?

Bayangkan bahwa perusahaan memberi Anda satu bulan dan anggaran untuk meningkatkan kualitas kehidupan sehari-hari Anda dan kolega Anda. Apa yang akan kamu lakukan?

Pertanyaan tentang logika dan algoritma:

Tulis antrian FIFO menggunakan hanya tumpukan LIFO. Kemudian buat tumpukan Lifo hanya menggunakan antrian FIFO.

Tulis fragmen kode untuk meluap buffer.

Tulis faktorial dengan rekursi akhir.

Dalam bahasa apa pun, tulis RPL, yang segera menampilkan nilai yang dimasukkan. Tingkatkan ke kalkulator RPN.

Bagaimana Anda merancang utilitas untuk defragmentasi?

Tulis program yang menghasilkan labirin acak.

Tulis contoh kode yang membuat kebocoran memori.

Menghasilkan urutan angka acak yang unik.

Tulis contoh sistem pengumpulan sampah sederhana.

Tulis broker sederhana dalam bahasa apa pun.

Tulis server web yang sangat sederhana. Buat rencana fungsi yang perlu diimplementasikan di masa depan.

Bagaimana Anda mengurutkan file 10 GB? Bagaimana Anda datang untuk membuat perubahan pada file 10 TB?

Bagaimana Anda menemukan program file duplikat?

Pertanyaan tentang arsitektur pada:

Ketika cache tidak diperlukan dan bahkan membahayakan?

Mengapa arsitektur berorientasi peristiwa meningkatkan skalabilitas?

Apa yang membuat kode dapat dibaca?

Apa perbedaan antara desain pengembangan (desain yang muncul) dan arsitektur evolusi?

Penskalaan horizontal dan vertikal: Apa yang berbeda? Kapan menerapkan satu hal, dan kapan yang lain?

Bagaimana cara bekerja dengan intersepsi kontrol dalam kegagalan (failover) dan sesi pengguna?

Apa itu cqrs (pemisahan tanggung jawab kueri perintah)? Bagaimana perbedaannya dengan prinsip lama pemisahan kueri komando?

Apa itu arsitektur tiga tingkat?

Bagaimana Anda merancang sistem perangkat lunak dengan skalabilitas?

Strategi apa untuk memecahkan masalah C10K?

Bagaimana Anda mendesain sistem P2P desentralisasi (I.E. tanpa server pusat)?

Mengapa CGI tidak diskalakan?

Bagaimana Anda melindungi sistem Anda dari mengikat pemasok (vendor lock-in)?

Apa kekurangan dari template desain "Publisher-Subscriber" saat skala?

Apa yang terjadi sejak tahun 80-an dalam pengembangan prosesor, mengapa penting untuk pemrograman?

Pada tahap siklus hidup apa yang harus mempertimbangkan kinerja dan bagaimana?

Bagaimana masalah kegagalan penolakan mungkin tidak muncul karena serangan DoS, tetapi karena desain yang buruk atau karena masalah arsitektur?

Apa hubungan antara kinerja dan skalabilitas?

Kapan bisa digunakan untuk menggunakan keterlibatan yang kuat (kopling ketat)?

Karakteristik apa yang harus diposkan oleh sistem untuk pergi ke cloud?

Apakah kesatuan desain tanah arsitek? Sederhananya: Bisakah desain yang baik muncul dari upaya kolektif semua pengembang?

Apa perbedaan antara desain, arsitektur, fungsionalitas dan kualitas estetika? Mari kita bahas.

Pertanyaan tentang arsitektur berorientasi layanan dan layanan microser:

Mengapa transaksi SOA tidak dianjurkan, dan sebaliknya mereka diundang untuk menggunakan Saga?

Apa perbedaan antara SOA dan Microservice?

Mari kita bicara tentang penomoran versi layanan web, kompatibilitas versi dan perubahan penting yang memecah kompatibilitas mundur.

Apa perbedaan antara transaksi dan operasi kompensasi di Saga, di SOA?

Kapan microservice juga mikro?

Apa pro dan kontra arsitektur microservice?

Pertanyaan Keselamatan:

Bagaimana cara menulis kode aman? Menurut Anda, apakah itu tanggung jawab pengembang atau haruskah ini menjadi spesialis terpisah di perusahaan? Dan mengapa?

Mengapa Anda mengatakan bahwa Anda tidak boleh mencoba menciptakan atau merancang aturan kriptografi Anda sendiri?

Apa itu otentikasi dua faktor? Bagaimana Anda mengimplementasikannya dalam aplikasi Web yang ada?

Jika Anda tidak menangani log dengan hati-hati, selalu ada risiko bahwa informasi rahasia akan datang ke sana, termasuk kata sandi. Bagaimana Anda mencegah masalah seperti itu?

Tulis cuplikan kode tunduk pada injeksi SQL dan perbaiki.

Bagaimana saya dapat menemukan kerentanan terhadap SQL-injection dengan metode analisis kode statis? Saya tidak menunggu Anda akan menulis algoritma jadi, karena terlalu besar, tetapi mari kita bahas pendekatan umum.

Apa yang Anda ketahui tentang skrip lintas situs? Jika Anda tidak ingat, mari kita lihat deskripsinya di Internet dan bicarakan.

Apa yang Anda ketahui tentang permintaan silang palsu? Jika Anda tidak ingat, mari kita lihat deskripsinya di Internet dan bicarakan.

Bagaimana cara kerja HTTPS?

Apa serangan "pria di tengah"? Dan mengapa HTTPS membantu melindungi terhadapnya?

Bagaimana Anda dapat mencegah pencurian sesi pengguna? Kemungkinan besar, Anda ingat pencurian apa sesi atau cookie, jika tidak, kami membaca halaman Wikipedia bersama-sama pada topik ini.

Masalah Umum:

Mengapa penting untuk fungsi pemrograman? Kapan saya harus menggunakan bahasa pemrograman fungsional?

Bagaimana perusahaan seperti Microsoft, Google, Opera dan Mozilla berpenghasilan di browser mereka?

Mengapa pembukaan soket TCP mengandung overhead besar?

Apa yang penting untuk menggunakan enkapsulasi?

Apa itu sistem waktu-nyata dan bagaimana perbedaannya dari sistem biasa?

Apa hubungan antara bahasa pemrograman waktu nyata dan alokasi memori dalam tumpukan?

Tidak berubah adalah praktik satu pengaturan nilai pada saat membuat objek, dan nilai-nilai ini kemudian tidak pernah berubah. Bagaimana cara kerja kekekalan untuk menulis kode yang lebih aman?

Pro dan kontra nilai yang dapat berubah dan tidak dapat diubah.

Apa itu GAP Objek-Relasional (Ketidakcocokan impedansi objek-relasional)?

Prinsip apa yang Anda terapkan untuk menentukan ukuran cache?

Apa perbedaan antara TCP dan HTTP?

Apa kompromi pemilihan rendering di sisi klien dan di sisi server?

Bagaimana cara mengembangkan protokol komunikasi yang andal berdasarkan tidak dapat diandalkan?

Penemu dari nol pointer Tony Hoar pernah berkata, "Saya dapat menyebutnya dengan kesalahan miliaran dolar saya," karena akan menarik "kesalahan yang tak terhitung jumlahnya, kerentanan dan kegagalan sistemik, yang mungkin menyebabkan penderitaan dan kerusakan pada empat puluh tahun terakhir selama empat puluh dolar. . " Misalkan Anda ingin menghilangkan kemungkinan menggunakan nol pointer dalam bahasa pemrograman Anda: Bagaimana Anda memutuskan tugas seperti itu? Konsekuensi apa yang bisa dimilikinya?

Pertanyaan-pertanyaan terbuka:

Mengapa orang menolak berubah?

Jelaskan konsep utas dengan nenek Anda.

Sebagai pengembang, Anda secara bersamaan menginginkan dan menerapkan inovasi, dan dapat diprediksi. Bagaimana kedua gol ini dapat ada satu sama lain dalam strategi yang sama?

Apa yang membuat kode yang baik baik?

Jelaskan bagaimana siaran streaming dilakukan dan bagaimana Anda menerapkannya.

Misalkan perusahaan Anda memberi Anda satu minggu untuk meningkatkan kehidupan untuk Anda dan kolega Anda: Bagaimana Anda menggunakan minggu ini?

Apa yang Anda temukan untuk minggu lalu?

Dalam desain apa pun ada elemen estetika. Pertanyaannya adalah, estetika ini adalah teman atau musuh Anda?

Beri nama lima buku terakhir yang Anda baca.

Bagaimana Anda menerapkan pendekatan pengiriman berkelanjutan di perusahaan besar yang sukses, di mana transisi dari model kaskade dengan pendekatan pasokan terus menerus tidak sepele karena ukuran dan kompleksitas bisnisnya?

Kapan masuk akal untuk menemukan kembali roda?

Mari kita bicara tentang penemuan roda Anew, sindrom penolakan terhadap perkembangan dan praktik orang lain menggunakan perusahaan atau tim pengembang layanan dan produknya sendiri (makan makanan Anda sendiri).

Apa yang pertama kali Anda otomasi dalam alur kerja saat ini?

Apa kesulitannya secara tertulis perangkat lunak? Apa yang membuatnya sulit untuk mendukung perangkat lunak?

Apakah Anda lebih suka mengerjakan proyek yang sama sekali baru (Greenfield) atau melanjutkan arus (Brownfield)? Mengapa?

Apa yang membuat sistem operasi ketika tidak ada perintah untuk pelaksanaan kode tertentu dan terlihat kosong? Saya ingin memulai percakapan tentang interupsi, setan, layanan latar belakang, survei, pemrosesan acara, dll.

Jelaskan unicode atau transaksi di DBM bayi berusia lima tahun.

Berikan argumen demi arsitektur monolitik.

Apa artinya menjadi "pengembang profesional"?

Pemrograman adalah seni, kerajinan atau teknik? Pendapat Anda.

Mengapa perusahaan lebih buruk memperkenalkan inovasi daripada startup?

Prestasi terakhir Anda yang Anda banggakan?

Pertanyaan dengan fragmen kode:

Apa hasil dari eksekusi fungsi ini JavaScript?

Fungsi hookupevents () (untuk (var i \u003d 0; i< 3; i++) { document.getElementById("button" + i) .addEventListener("click", function() { alert(i); }); } }
Bagaimana dengan menghapus jenis, yang akan memberikan kode Java dan mengapa?

Arraylist. Li \u003d arraylist baru (); Arraylist. Lf \u003d arraylist baru (); if (li.getclass () \u003d\u003d lf.getclass ()) // evaluasi ke true system.out.println ("sama");
Bisakah Anda mendeteksi kebocoran memori?

Stack kelas publik (elemen objek pribadi; ukuran int pribadi \u003d 0; int final statis pribadi default_initial_capasity \u003d 16; tumpukan publik () (elemen \u003d objek baru;) push void publik (objek e) (ESTURECAPACITY ();) Obyek publik Pop () (if (ukuran \u003d\u003d 0) Melemparkan Baru EmptyStackException (); Kembali Elements [- ukuran];) / ** * Essure Ruang untuk Sedikitnya One More Element, kasar * Menggandakan Kapasitas Setiap Waktu Kebutuhan Array untuk tumbuh. * / swasta void objekcacation () (jika (elemen.length \u003d\u003d ukuran) elemen \u003d array.copyof (elemen, 2 * ukuran + 1);)
Bisakah Anda menyingkirkan sakelar sakelar dan menulis lebih banyak kode berorientasi objek?

Public Class Formatter (Private Service Service; Formatter Umum (SERVICE;) public String Dothejob (STRING THEINPUT) (String Response \u003d Service.ASKForPermission (); Beralih (Response) (Case "Fail": Kembali "Kesalahan"; Case "OK" : kembalikan string.format ("% s% s", thinput, thinput); default: mengembalikan null;)))
Bisakah Anda menyingkirkan operator IF dan menulis lebih banyak kode berorientasi objek?

public class Theservice (swasta akhir FileHandler FileHandler; swasta akhir FooRepository fooRepository; Theservice publik (FileHandler FileHandler, FooRepository fooRepository) (this.fileHandler \u003d FileHandler; this.fooRepository \u003d fooRepository;) public String Execute (akhir berkas String) (final String rewrittenUrl \u003d FileHandler.getXMLFILEFROMFILENAME (file); Akhir String executionid \u003d FileHandler.geteExtionIdFromFileName (file); if ((executionid \u003d\u003d "") || (rewrittenurl \u003d\u003d "")) (Return "";) foo knownfoo \u003d foorepository.getfoobyxmlfilename rewrittenurl ); jika (diketahui \u003d\u003d null) (kembali "";) kembali diketahui brankas (file);))
Bagaimana cara membuat refactoring dari kode tersebut?

Function () (HRESULT ERROR \u003d S_OK; IF (berhasil (operation1 ()) (IF (SUCCEEDED (OPERATION2 ()) (IF (Digantikan (Operation3 ())) (IF (berhasil) ELSE (Kesalahan \u003d Operation4Failed;)) ELSE (Error \u003d operation3failed;)) lain (kesalahan \u003d operation2failed;)) lain (kesalahan \u003d operation1failed;) kembali;)

Pengembang back-end (dari bahasa Inggris. Pengembang back-end (sisi terbalik)) Ini adalah spesialis yang bergerak di bidang perangkat lunak - administrasi dari aplikasi web, konten sistem internal, teknologi server - basis data, arsitektur, logika perangkat lunak. Profesi ini cocok untuk mereka yang tertarik pada ilmu komputer (lihat pilihan profesi untuk minat pada mata pelajaran sekolah).

Pengembang BEC-End adalah pejuang depan yang tak terlihat.

Situs modern, aplikasi web, dan game telah menjadi sangat kompleks, jadi seluruh tim spesialis mengerjakannya. Untuk membuat situs penuh, indah, fungsional dan ramah pengguna, diperlukan karya yang konsisten dari front end dan pengembang back-end diperlukan. Ini adalah pekerjaan cepat untuk membuat situs web atau aplikasi web dan membuatnya lebih mudah untuk layanannya.

Berbicara kiasan, pengembangan back-end adalah penciptaan mesin mobil, sedangkan pengembangan ujung depan adalah pembuatan desain dan fungsi kontrol mesin. Pengembang bagian belakang bekerja dalam koneksi dekat dengan pengembang front-end, menerima informasi pengguna darinya dan mengembalikan hasil yang dihasilkan.

Alat Dasar Kembali End Pengembang - Bahasa Pemrograman Server: Seperti PHP, Python, Ruby, Java, Perl, Node JS (Platform Perangkat Lunak). Selain simpul JS, berguna untuk mempelajari express (pustaka untuk berinteraksi platform Node JS dengan server) dan Mongo DB (database untuk mendapatkan dan menyimpan informasi).

Sebagai dana tambahan Symfony, Codeigniter, Yii, Zend Framework, Kohana, dll digunakan untuk menyimpan data menggunakan MySQL / SQLite.

Fitur Profesi

Pengembang modern tidak hanya menulis kode untuk program. Jadi programmer yang bekerja 10-15 tahun yang lalu. Saat ini, istilah seperti itu tidak pantas, karena dalam pekerjaan sering kali dimungkinkan tanpa menulis kode, cukup menghubungkan bagian jadi ke dalam konfigurasi tunggal. Dan programmer sekarang disebut "pengembang" atau "insinyur".

Dengan perkembangannya-bola, proyek menjadi lebih kompleks dan merupakan desainer yang dapat dikumpulkan menggunakan solusi siap pakai (kerangka kerja) untuk hampir semua tugas.

Dengan demikian, fungsionalitas pro-end pengembang terlihat seperti ini:

  • desain arsitektur layanan;
  • menciptakan inti situs;
  • pengembangan platform dan fungsional utama;
  • bekerja dengan arsitektur kode;
  • pengembangan aplikasi yang mendukung antarmuka pengguna dan keamanan;
  • kontrol atas keadaan server (pertempuran, tes dan pekerja);
  • kontrol versi, basis data, integrasi berkelanjutan.

Profesi Pro dan Kontra

Profesi yang membayar tinggi dan menuntut.

Tempat kerja

Perusahaan Pengembangan Situs, Aplikasi Web, aplikasi seluler.

Kualitas penting

  • pikiran analitik
  • pemikiran logis
  • prakarsa
  • kemampuan untuk merencanakan dan mengikuti rencana
  • kemampuan bekerja sama
  • fleksibilitas pemikiran
  • tanggung jawab, ketekunan, tujuan
  • fokus pada hasil dan kualitas
  • keinginan untuk terus mempelajari yang baru dan aplikasinya dalam pekerjaannya

Pengetahuan dan keterampilan profesional

Pengetahuan tentang setidaknya satu bahasa pemrograman: Pergi, C, C ++, Perl, Python, PHP, Ruby, Java.

  • kemampuan untuk menulis kode yang cepat, indah dan benar;
  • pengetahuan tentang Freignors Web Populer (Django, Flask, Spring);
  • database desain keterampilan dan mengoptimalkan permintaan;
  • pengetahuan tentang paradigma pemrograman modern;
  • pengetahuan tentang pola desain;
  • memahami layanan web, antarmuka;
  • bahasa Inggris untuk membaca dokumentasi teknis.

Tempat belajar dari pengembang back-end

Kereta (secara pribadi, Moskow). Institusi pendidikan internasional yang mengkhususkan diri dalam pendidikan komputer. Bekerja sejak 1999. 42 cabang di 16 negara di dunia. Pusat Pelatihan Resmi terbesar Microsoft, Cisco, Autodesk. Siswa menerima sertifikat internasional dan diploma internasional. Tujuan utama adalah pekerjaan setiap lulusan.

Pendidikan yang lebih tinggi:

Untuk menjadi seorang profesional sejati di bidang pengembangan back-end, perlu memiliki pendidikan dasar pendidikan, yang dapat diperoleh di universitas-universitas berikut:

Tetapi penting untuk diingat bahwa pendidikan fundamental universitas meletakkan dasar untuk pendidikan, tetapi tidak cukup untuk pengetahuan saat ini tentang teknologi modern.. Oleh karena itu, pendidikan diri penting di bidang ini untuk mengikuti semua teknologi dan alat baru. Tetapi pada gilirannya, kurangnya pendidikan profil mempengaruhi saat itu ketika sesuatu berhenti bekerja dan orang tersebut tidak mengerti - untuk alasan apa. Spesialis dengan pendidikan mendasar, tentu saja, tidak tahu segalanya, tetapi ia memiliki keterampilan utama - di mana menemukan dan bagaimana menggunakan pengetahuan yang diperlukan.

Pengusaha modern, sebagai aturan, tidak memaksakan persyaratan formal untuk pendidikan yang lebih tinggi kandidat untuk kantor. Bagi mereka, pengalaman terpenting, kecerdasan, motivasi spesialis.

Pembayaran Warry (Berapa Banyak Pengembang End Backer)

Gaji pada 09/16/2019.

Rusia 40000-100000 ₽.

Moskow 80000-300000 ₽.

Karier dan perspektif tangga

Dari posisi pengembang back-end, setelah mengembangkan keterampilan ujung depan pengembang, jalur langsung ke pengembang stack penuh. Untuk pertumbuhan lebih lanjut, perlu untuk terus belajar dari yang baru: studi secara rinci teknologi pengembangan produk perangkat lunak, konfigurasi dan konfigurasi sistem layanan.

Transisi dalam departemen kadang-kadang terkait berbeda. Seseorang hanyalah akrab untuk melihat perubahan karier dalam satu perusahaan melalui prisma posting posting. Seseorang tidak menganggap mungkin untuk mengubah ruang lingkup aktivitas, bahkan jika berdekatan dengan yang saat ini. Ketiga, pada prinsipnya, kami yakin bahwa transisi dari departemen di departemen berarti bahwa seseorang mengambil posisi "baik ikan, atau daging, dan tidak mungkin untuk mencapai sesuatu yang signifikan.



Pada saat yang sama, beberapa majikan menyambut ini dalam segala hal dan mempertimbangkan sesuatu seperti sekering dari burnout - seseorang akan mengubah fokus perhatian, akan mengubah departemen atau departemen, tetapi tidak akan mengubah pekerjaan itu sendiri secara keseluruhan.


Nama saya Kostya, dan saya bekerja di Qiwi selama hampir 4 tahun. Hari ini saya akan memberi tahu Anda betapa berhasil beralih dari pengembangan frontend dalam backend.

Paling depan

Dalam Qiwi, sejak akhir 2014, saya mulai bekerja sebagai pengembang aplikasi iOS, dan, pada prinsipnya, beberapa tahun terlibat dalam pengembangan dompet Qiwi. Pada saat yang sama, saya tidak dapat mengatakan bahwa itu membosankan - tugasnya sangat berbeda dan dalam aplikasi yang sama: kami terlibat dalam integrasi dompet dengan layanan lain, balas dendam bug, memperketat animasi. Selain itu, ada pengalaman lanjutan untuk membuat aplikasi untuk Apple Watch. Kemudian dia memperluas sedikit fokus dan bekerja bahkan di atas aplikasi iOS untuk "hati nurani".



Dan kemudian, kemudian saya mulai bergerak perlahan ke belakang. Dalam hal metodologi yang fleksibel, bahkan nyaman - saya beralih, pada sprint pertama dapat melakukan beberapa jenis tugas bachenda, dan pada detik untuk melaksanakan integrasi API, yang saya tulis.


Tetapi dalam backend, pada saat itu ada terlalu sedikit pengembang dan backot yang terlalu lumayan, jadi pada akhirnya saya masih beralih ke backend sepenuhnya. Apa yang saya lakukan sekarang adalah tugas klasik dari backender - saya menulis kode di microservice kami, Chiny Bali, saya terlibat dalam refactoring, saya memahami Kotlin. Ada kesempatan untuk mengerjakan produk segar perusahaan - QIWI Investor.


Ngomong-ngomong, saya tidak bisa mengatakan bahwa selama dua tahun ini ternyata saya berjalan di depan, saya jelas menyadari bahwa ada juga di sana, di mana untuk berkembang. Misalnya, saya melihat apa yang terjadi di tim pengembangan seluler sekarang, dan saya mengerti bahwa saya akan tinggal di sana, saya akan terus tumbuh lebih jauh dengan para pria.


Jadi ada situasi win-win di sini - saya ingin membantu tim dan produk (keuntungan dalam pengembangan itu sangat tidak menuju backends) dan mendapatkan pengetahuan baru. Timlid memahami segalanya dan biarkan saya pergi tanpa keluhan, dan juga produk.


Selain itu, pengetahuan yang saya ingin diversifikasi untuk tidak dilampirkan pada satu platform (Android saya tidak suka sedikit, tetapi Apple masih memberikan posisi). Yah, ada keinginan kalau-kalau apa yang bisa diambil dan menjadikan diri Anda aplikasi untuk diri sendiri (dan depan, dan dukungan), jika beberapa jenis ide keren tiba-tiba muncul. Sejauh ini, itu tidak berguna.

Backend.


Tentu saja, masalah pertama yang Anda temui transisi seperti itu adalah celah dalam pertandingan. Dalam kasus saya, ini adalah beberapa kehalusan bekerja dengan basis data, tetapi itu membantu di sini baik kemampuan untuk mengidik sendiri dan tim - para pria responsif dan selalu siap membantu dan menjelaskan sesuatu secara rinci. Dalam Qiwi, pada prinsipnya, dengan belajar pada tahap apa pun, semuanya baik-baik saja, apakah Anda setidaknya junior di awal pekerjaan, setidaknya ini adalah bagaimana memutuskan dan mengubah bola beberapa tahun kemudian.


Tidak ada yang kesal bahwa pertama kali saya jelas bekerja tidak begitu efektif, karena dalam banyak hal itu perlu untuk masuk (tetapi dalam jangka panjang tim masih menang).


Tentu saja, saya memiliki sedikit pengalaman di daerah yang berbeda - game dan web seluler, tetapi itu semua, lebih tepatnya, mencoba merasakan pengalaman serius mereka sendiri, daripada menyengat.

Tayangan backend setelah frontend

Tidak ada pekerjaan dengan UI. Sama sekali. Sebelumnya, saya harus membunuh waktu untuk memperbaiki bug di UI, sekarang tidak ada. Kontra dari posisi seperti itu - pengguna akhir tidak melihat hasil dari pekerjaan saya secara khusus, seperti halnya dengan bagian depan. Saya mencoba menentukan apa yang lebih sulit - backing atau depan, dan menyadari bahwa (secara pribadi untuk saya) lebih berat untuk selalu bekerja dengan multithreading dan stack jaringan. Dan di sini tidak lagi penting - Anda untuk bagian depan atau belakang. Di depan, saya baru saja menemui tugas-tugas seperti itu untuk pertama kalinya, tanpa persiapan, dan pada backend, dengan pengalaman apa pun.


Dimungkinkan untuk mendapatkan pengalaman dan melakukan sesuatu yang keren di daerah mana pun, akan ada keinginan dan prasyarat, ada praktik di sini - untuk melakukan sesuatu (dan melakukannya dengan baik), dan itu bekerja dengan aman dan mudah didukung. Dan untuk backender tidak begitu kritis terhadap keberadaan atau tidak adanya pengalaman di depan. Jika perkembangan memperhitungkan semua hal kecil, ragu-ragu kasus sudut dan secara keseluruhan memahami bagaimana API-nya akan menggunakan, maka itu akan membuat semuanya sebagaimana mestinya.


Lebih mudah bagi saya untuk menemukan kemungkinan masalah Hanya karena saya tahu fitur implementasi aplikasi seluler kami. Tetapi ini bukan semacam superposabless - ini adalah serangkaian pengetahuan bahwa setiap becken, yang sering bekerja dengan front.

Itu pada akhirnya

Pengembangan backend telah menjadi pengalaman lain yang baik bagi saya - saya belajar menulis kode dan Revw, pikirkan arsitekturnya. Ini sebenarnya menarik.


Tetapi pada saat yang sama, mencoba hidup bahwa bagian depannya kembali, saya tidak akan mengatakan bahwa dalam kasus bahwa backend akan segera memilih di awal karir. Masih penting bagi saya untuk melihat dan memahami bagaimana produk saya memandang pengguna. Dengan backend, semuanya sangat hantu.


Kemungkinan besar, memilih bola sekarang, saya akan pergi ke Gamedev atau Web Front. Web masih tetap menjadi platform yang baik untuk peluncuran produk baru, dan pada saat yang sama tidak lagi mengerikan dan sulit dipahami. Semua tutorial ini dari kode spageti dan panggilan balik-neraka tetap jauh di belakang, untungnya.

Frontend adalah pengembangan antarmuka pengguna dan fungsionalitas yang berfungsi di sisi klien situs web atau aplikasi. Jenis pengembangan ini dapat dikaitkan dengan semua yang dilihat pengguna, membuka halaman web. Pengembang frontend bekerja sama dengan desainer, programmer, dan analis UX untuk menciptakan produk yang nyaman dan menuntut.

Untuk memahami dengan jelas apa perkembangan frontend, buka halaman situs mana pun - Anda akan melihat antarmuka di depan Anda. Dengan mengklik kanan, Anda dapat melihat kode halaman ini di browser.

Kode ini adalah contoh pengembang frontend, itu diunduh ke browser pengguna, dan Anda dapat melihatnya dengan mata kepala sendiri. Kode halaman menjelaskan semua yang Anda lihat di depan diri Anda: warna, tata letak, font, lokasi elemen grafis dan sebagainya.

Pengembangan frontend meliputi:

  • HTML (Bahasa Markup Hypertext) - Bahasa penandaan dokumen, yang digunakan struktur halaman: tajuk utama, paragraf, daftar, dan sebagainya;
  • CSS (Lembar Gaya Cascading) - Bahasa untuk deskripsi dan gaya tampilan eksternal Dokumen. Berkat kode CSS, browser Anda memahami cara menampilkan elemen. CSS menentukan warna dan parameter font, menentukan bagaimana blok situs yang berbeda akan berada, dan sebagainya. Ini juga memungkinkan Anda untuk menampilkan dokumen yang sama dalam gaya yang berbeda, misalnya, untuk mencetak (font konvensional atau braille), output ke layar atau membaca suara;
  • Javascript. - Ini adalah bahasa yang dibuat untuk menghidupkan kembali halaman web. Tugasnya adalah merespons tindakan pengguna, menangani klik pada mouse, pindahkan kursor, penekanan tombol. Dia juga mengirimkan permintaan ke server dan memuat data tanpa mem-boot ulang halaman, memungkinkan Anda untuk memasukkan pesan dan banyak lagi.

Apa itu Pengembangan Backend?

Pengembangan backend adalah satu set perangkat keras-perangkat keras, yang dengannya logika situs tersebut diimplementasikan. Hanya berbicara, inilah yang tersembunyi dari mata pengguna dan terjadi di luar browser dan komputernya.

Misalnya, ketika Anda memasukkan permintaan di halaman halaman pencarian dan klik tombol MEMASUKKANFrontend berakhir dan mulai backend. Permintaan Anda dikirim ke server. Google. atau Yandex.di mana algoritma pencarian berada. Ada di sana bahwa semua "sihir" terjadi. Segera setelah informasi yang Anda cari, kembalinya ke zona frontend muncul di monitor.

Pada umumnya, server adalah komputer yang sama, hanya lebih kuat. Ini menyimpan data dan menanggapi permintaan pengguna.

Backend adalah proses menggabungkan server dengan pengguna.

Pengembang backend dapat menerapkan alat apa pun yang tersedia di servernya. Dia memiliki hak untuk memilih salah satu bahasa pemrograman universal, misalnya, Ruby, PHP, Python, Jawa.

Juga untuk pengembangan backend yang digunakan sistem yang berbeda Manajemen basis data:

  1. Mysql;
  2. PostgreSQL;
  3. SQLite;
  4. MongoDB.

Tergantung pada jenis produk, bea pengembang backend dapat sangat berubah. Spesialis seperti itu dapat membuat dan mengintegrasikan basis data, memastikan keamanan, menciptakan teknologi. cadangan Cadangan dan pemulihan.

Bagaimana cara fronend dan backend berinteraksi?

Frontend dan backend berinteraksi dalam lingkaran: Frontend Mengirim informasi pengguna dalam backend, diproses dan kembali kembali, mengambil formulir yang jelas.

Sebagai suatu peraturan, spesialis yang berbeda terlibat dalam jenis pekerjaan ini, tetapi diinginkan untuk memahami prinsip-prinsip yang bekerja dengan kolega. Misalnya, perancang antarmuka penting setidaknya secara umum untuk mengetahui apa lagi proyek proyek yang digunakan. Ini akan membantunya cukup menghargai apa kemampuan teknis di lokasi atau aplikasi.

Ada beberapa opsi untuk interaksi frontend dan backend:

  • Permintaan HTTP dikirim langsung ke server, server sedang mencari informasi, menanamkannya ke template dan kembali sebagai halaman HTML;
  • Opsi menggunakan alat Ajax (Asynchronous Javascript dan XML). Dalam hal ini, permintaan mengirim Javascript.Diunduh ke browser, dan jawabannya muncul dalam format XML atau JSON;
  • Aplikasi satu halaman yang mengunduh data tanpa memperbarui halaman. Ini juga dilakukan dengan bantuan Ajax. atau Freymvorkov Sudut dan bara.;
  • Bara. atau perpustakaan Reaksi Bantu gunakan aplikasi dan di server dan di klien. Frontend dan backend berinteraksi melalui Ajax dan kode HTML yang diproses di server.

Seperti yang kita lihat, pembangunan modern adalah proses yang kompleks dan multi-level, yang dibagi menjadi dua bagian: klien dan server. Dalam programmer Frontend-dan Backend Arsenal ada banyak alat, pilihan yang tergantung pada tugas dan kompleksitas proyek. Kedua jenis pengembangan termasuk komponen teknis dan kreatif.

Tanggung jawab pengembang frontend- dan backend biasanya dibagi, tetapi ada kalanya programmer harus menyelesaikan masalah yang muncul baik di sisi server dan di bagian klien. Seringkali di pasar Anda dapat bertemu dengan spesialis yang dengan percaya diri merasa baik di frontend, dan dalam backend dan dapat menggabungkan dua jenis pekerjaan.

Anda dapat memulai perjalanan Anda di Frontend dan Backend-Development dari Kotak Skill 12 bulan. Sangat cocok untuk pendatang baru dan programmer dengan pengalaman kecil. Untuk tahun ini, pendengar siswa dalam praktik akan mengeksplorasi bahasa pemrograman utama dan membuat portofolio mereka sendiri, yang akan membantu menemukan pekerjaan yang menjanjikan dan dibayar dengan baik.