Wawancara SWE
Prosesnya biasanya dimulai dengan perekrut menyusun daftar calon potensial. Kandidat kemudian menjalani penyaringan atau penyaringan awal di mana ditentukan apakah dia cocok untuk pekerjaan itu. Setelah jelas, wawancara SWE biasa dilakukan, termasuk langkah-langkah berikut:
- Pemrograman - dari 3 hingga 5 putaran;
- Desain sistem - 1 putaran;
- Prinsip Kepemimpinan - Babak 1.
Saya akan fokus pada persiapan untuk siklus pengkodean karena ini menghabiskan sebagian besar wawancara. Tapi kita akan melihat sekilas desain sistem dan keterampilan kepemimpinan di bagian berikut.
A. Pemrograman
Insinyur perangkat lunak sering menemukan diri mereka dalam situasi sulit, misalnya, bekerja dengan ambiguitas, persyaratan yang tidak jelas, memecah tugas kompleks menjadi subtugas, menangani kasus edge, menyelesaikan pekerjaan dengan kompromi dengan kompromi, dan sebagainya. Wawancara pemrograman adalah salah satu cara untuk mendapatkan ide keterampilan ini.
Demi kesederhanaan, langkah-langkah pemrograman difokuskan pada penyelesaian masalah menggunakan struktur data dan algoritma. Pertanyaan-pertanyaan ini umumnya kompleks dan memberikan wawasan berharga tentang kemampuan analitis kandidat.
Belajar memecahkan masalah menggunakan algoritma dan struktur data. Keterampilan ini diperoleh dari waktu ke waktu, tidak ada jalan pintas untuk itu; satu-satunya rumus yang benar adalah konsistensi. Berlatih, berlatih, dan berlatih sampai Anda mengembangkan kemampuan alami Anda untuk memecahkan masalah.
Strategi persiapan
1. Perkiraan waktu persiapan
Estimasi waktu seringkali diabaikan dan dianggap tidak perlu. Saya sarankan untuk mengkalibrasi seberapa baik Anda dalam memecahkan masalah dengan algoritma dan struktur data. Saya memeriksa kekuatan dan kelemahan saya dan membuat perkiraan kasar tentang waktu persiapan. Penilaian ini membantu saya mempersiapkan pikiran saya untuk tujuan jangka panjang (dan jangka pendek) dan membuat saya termotivasi.
“Beri diri Anda cukup waktu untuk bersiap. Selalu. Lebih baik menyiapkan terlalu banyak daripada tidak cukup siap **.
Total waktu persiapan dapat bervariasi, tergantung pada pengalaman Anda. Secara umum, saya membagi level pelatihan sebagai berikut:
- Seorang pemula dapat dengan nyaman menulis kode setidaknya dalam satu bahasa pemrograman. Dia tidak memiliki pengetahuan dasar tentang DS dan algoritma. Kesulitan memecahkan masalah yang mudah atau meluangkan waktu.
- Rata-rata. Orang tersebut mengetahui struktur data dan algoritme dengan baik. Tidak masalah dengan kesulitan yang mudah. Dapat memecahkan sebagian besar masalah dengan kompleksitas rata-rata. Perkelahian Keras.
- Maju. Tidak masalah dengan kesulitan sedang. Mampu memecahkan masalah yang paling kompleks.
Sebelum wawancara, saya menempatkan diri saya pada level menengah.
Estimasi waktu persiapan
2. Platform tempat Anda belajar membuat program
Saya terutama berlatih pemrograman dengan LeetCode , InterviewBit , dan GFG . Sebelum wawancara, saya memecahkan sekitar 320 masalah LeetCode, 80 pertanyaan InterviewBit dan 30 pertanyaan GFG.
Bagaimana pembagian
tugas Tugas tingkat kesulitan sedang sangat penting: sebagian besar pertanyaan wawancara memiliki tingkat kesulitan sedang. Memecahkan masalah dengan tingkat kesulitan sedang akan membuat Anda lebih cepat dan meningkatkan keterampilan pemecahan masalah Anda.
Sejak awal, penting untuk memulai dengan pertanyaan sederhana hingga menengah. Mulailah dengan tugas-tugas yang menantang segera setelah Anda merasa cukup percaya diri. Tetap termotivasi jika Anda tidak bisa menyelesaikan masalah yang sulit. Mungkin perlu waktu lebih lama dari yang Anda tawar untuk menyelesaikan dan meningkatkan solusi mereka. Setiap kali saya merasa kewalahan, untuk meningkatkan motivasi saya, saya kembali ke tugas-tugas yang mudah.
Pertahankan pola pikir berkembang. Setiap masalah yang tidak dapat Anda selesaikan adalah kesempatan untuk mempelajari sesuatu yang baru.
- LeetCode: , . LeetCode — . . , LeetCode Premium; .
- InterviewBit: . . , ( ). InterviewBit .
- GFG: Saya menggunakan platform ini untuk menemukan masalah dan artikel tentang dasar-dasar algoritme dan struktur data. Penjelasan topik dan implementasinya sangat bagus. GFG juga memiliki serangkaian tugas yang berkaitan dengan perusahaan dan topik tertentu.
Saya tidak sepenuhnya bergantung pada satu sumber daya. Semua orang memberi saya ide baru. Saya membuat buku harian, terus-menerus mengembangkan pengetahuan saya.
- Spesialisasi Algoritma di Coursera : Lagu Coursera ini luar biasa! Ada total 4 kursus, yang mencakup semua topik dasar dan beberapa lanjutan dari struktur data dan algoritme. Bagus untuk pemula.
- Youtube: . . ( , , THNLGf019nRo) — ! BackToBack SWE.
- CTCI EPI: . . , . .
- CLRS: , . , .
Terakhir, artikel tentang BaseCS oleh Vaidehi Joshi . Dia menulis penjelasan intuitif dan sederhana tentang beberapa topik algoritme dan struktur data.
3. Mulai pengatur waktu
Karena durasi wawancara menyusut, sangat penting untuk mengetahui cara Anda memecahkan masalah. Biasanya, wawancara pemrograman berlangsung selama 45-50 menit, dan kandidat diharapkan menyelesaikan dua masalah menengah, satu sulit, atau satu mudah dan satu masalah sulit.
Bahkan jika Anda bisa menyelesaikan pertanyaan awal, tetapi menghabiskan lebih banyak waktu, itu berarti Anda tidak punya cukup waktu untuk menyelesaikan pertanyaan kedua.
Saya mengatur pengatur waktu untuk menghitung mundur waktu yang diperlukan untuk menyelesaikan masalah:
- Tugas rata-rata: 20 menit.
- Tugas yang sulit: 40-45 menit.
Pemula dapat mengabaikan waktu: bagi mereka, menemukan solusi yang tepat jelas lebih penting.
4. Wawancara simulasi
Sebelum wawancara yang sebenarnya, saya melalui banyak simulasi. Wawancara tiruan bisa sangat membantu. Kegagalan di awal lingkungan pengujian memberi Anda informasi yang berguna. Ini akan membantu Anda menemukan celah dalam proses berpikir Anda. Cobalah untuk memperbaiki setiap kesalahan dan menjadi lebih baik dengan setiap wawancara yang salah.
"Jika Anda lulus simulasi beberapa kali, anggap itu sebagai pertanda baik."
Gratis:
- Imitasi di LeetCode .
- [Skema peer-to-peer gratis] Pramp .
- [Gratis peer-to-peer] InterviewBit .
Wawancara tiruan berbayar bermanfaat. Misalnya, umpan balik pasca-wawancara memberikan banyak detail tentang apa yang diharapkan perekrut.
- [Berbayar] ExpertMitra .
- [Berbayar] Mocki .
- [Berbayar] Wawancara teknis percobaan .
5. Siapkan rencana promosi
Sejauh ini, kita sudah banyak membicarakan tentang berbagai elemen persiapan. Sekarang mari kita coba menggabungkan semuanya dan membuat rencana promosi! Lihat tangkapan layar kalender saya sebulan sebelum wawancara.
Jadwal Persiapan
Saya telah membagi semua persiapan menjadi tugas-tugas. Tetapkan tujuan untuk setiap hari dalam beberapa minggu (dan bahkan bulan) sebelum wawancara. Ini membantu saya untuk menghindari kekacauan dan tidak tersesat dalam perjalanan menuju tujuan.
- Pada hari kerja, saya bisa mengalokasikan beberapa jam, karena saya sedang mengerjakan pekerjaan kantor. Saya telah merencanakan solusi masalah untuk kali ini.
- Saya membaca teori pada akhir pekan, ketika saya bisa mencurahkan banyak waktu untuk itu.
- Mendekati wawancara, saya merencanakan peniruan. Dalam beberapa minggu terakhir, saya telah mengurangi jumlah sesi pemrograman dan fokus pada membaca CTCI dan EPI.
Alokasi Waktu Mingguan
Saya tahu banyak dari kita memiliki tanggung jawab keluarga dan pekerjaan penuh waktu. Tidak semuanya dan tidak selalu berjalan sesuai rencana. Tapi idenya adalah untuk membentuk kebiasaan. Lacak kemajuan Anda dan apa yang belum selesai. Sesuaikan jadwal sampai Anda menemukan yang cocok.
B. Desain sistem
Babak ini menguji keterampilan desain teknis. Ini dapat dibagi menjadi desain tingkat rendah (LLD) dan desain tingkat tinggi (HLD). Pengetahuan di bidang ini tumbuh dengan pengalaman di industri.
Cobalah untuk mendapatkan pengetahuan tentang konsep seperti sistem terdistribusi, load balancing, protokol jaringan, hashing yang konsisten, teorema CAP, replikasi, sharding, dll.
- Saluran Youtube - Gaurav Sen dan Narendra L .
- [Berbayar] Grokking Wawancara Desain Sistem (salah satu sumber daya desain sistem terbaik. Sangat disarankan).
- [Berbayar] Melakukan wawancara tentang desain berorientasi objek .
- [Berbayar] Dasar-dasar desain sistem AlgoExpert .
C. Prinsip kepemimpinan. Tingkah laku
Tidak seperti putaran sebelumnya, bagian ini tidak bersifat teknis. Perusahaan berharap dapat mempelajari lebih lanjut tentang kandidat dengan kata-katanya. Perusahaan mungkin tertarik pada:
- Kepribadian kandidat.
- Proyek dan pengalaman kerja sebelumnya.
- Apa yang telah Anda lakukan dalam situasi sulit.
- Bagaimana Anda menanggapi ulasan yang baik dan buruk.
Hal utama adalah tetap transparan dan jadilah diri sendiri.
Saya akan menyoroti bagian yang disebutkan dalam CTCI tentang model SAR (situasi, tindakan, hasil). Idenya adalah untuk mengidentifikasi diskusi penting yang penting dengan mendistribusikan cerita dari pekerjaan sebelumnya. Berikut adalah peta keterampilan komunitas (alias soft skill) sehingga Anda dapat mempelajarinya lebih lanjut.
SAR
- LeetCode Codeforces. , , .
- «Shuffle» LeetCode. . .
- IDE, Google Docs, CollabEdit, .
- . , .
- , . , , . , .
P1. Topik struktur data dan algoritme apa yang harus Anda fokuskan? Sumber daya apa yang Anda tautkan?
Sumber belajar yang disebutkan sebelumnya akan sangat membantu. Saya tidak menambahkan sumber daya terpisah untuk setiap topik, ini akan membuat postingan terlalu besar.
Topik tanpa urutan tertentu:
Daftar Tertaut, Manipulasi Bit, Tumpukan dan Antrian, Pencarian Biner, Heaps, Algoritma Greedy, Pemrograman Dinamis, Vektor / ArrayList, Notasi O Besar, Waktu dan Ruang, Urutkan, Pointer, TCP / IP Windows, Sistem terputus-putus set, operasi string, grafik dan pohon, menjaga stabilitas sistem, pencarian luas-pertama dan kedalaman-pertama, rekursi, pelacakan mundur, hashing, pohon sintaks, pohon pemangkasan dan pohon biner yang diindeks.
P2. Bahasa pemrograman apa yang sudah kamu pelajari?
Pelajari satu bahasa luar dalam; menurut saya, ini sudah cukup. Saya lebih suka Java.
P3. Bagaimana Anda tahu tugas mana yang tepat untuk dipraktikkan untuk menyelesaikan semua masalah?
Hampir tidak mungkin untuk menyelesaikan semua masalah. Namun, terdapat maksimal 12-15 topik dari bidang struktur data dan algoritme. Cobalah untuk menguasai setiap topik lebih baik dengan menyelesaikan masalah tematik. Dengan latihan, Anda akan dapat menentukan struktur data dan algoritma yang diinginkan. Fokus pada kualitas daripada kuantitas.
P4. Apakah saya memiliki kesempatan jika saya tidak memprogram dalam kompetisi?
Ya, tentu saja. Pemrograman untuk kompetisi dalam konteks ini bersifat opsional.
- Pemrograman kompetisi adalah olahraga, dan jangkauan tugasnya lebih luas daripada pemrograman produksi. Platform seperti CodeChef dan Codeforces lebih cenderung ke arah jenis pemrograman ini.
- Tentu saja, ada area di mana pemrograman kompetitif tumpang tindih dengan pemrograman produksi dan dapat berguna: misalnya, membantu menarik perhatian perekrut ke profil Anda, keterampilan memecahkan masalah, dll.
Namun, babak pengkodean mewakili tahap yang sangat berbeda dan memiliki prioritas berbeda.
P5. Bagaimana cara mendapatkan undangan untuk wawancara? Bagaimana Anda melamar?
Perekrut menghubungi saya langsung melalui LinkedIn. Saya tidak tahu bagaimana para kandidat dipilih. Tetapi saya punya beberapa saran.
- Saat Anda menjadi siswa, fokuslah pada studi Anda. Berpartisipasi dalam kontes, hackathon, mengerjakan proyek yang menarik dan inovatif. Cobalah untuk berkontribusi pada proyek open source. Ada banyak cara untuk menonjolkan profil Anda.
Yang terpenting, nikmati perjalanan Anda. Rajinlah dalam pekerjaan Anda. Sabar, hormat dan selalu berusaha untuk menjadi lebih baik hari ini dari kemarin, dan jangan lupakan kode promo spesial HABR yang akan menambah 10% discount pada banner. Sisanya akan menyusul.
Profesi dan kursus lainnya