Menguasai temu bual reka bentuk sistem
A complex system has many parts working together. Image by Timelab Pro from Unsplash

Menguasai temu bual reka bentuk sistem

Artikel ini diterjemahkan secara automatik oleh terjemahan mesin daripada bahasa Inggeris dan mungkin mengandungi ketidaktepatan. Ketahui lebih lanjut
Lihat asal

Sudah lama sejak kali terakhir saya menulis, tetapi pada tahun lepas, saya telah melakukan banyak temu bual reka bentuk sistem. Saya sangat menyukai temu duga ini, walaupun mereka boleh menggunakan beberapa penambahbaikan, kerana ia boleh menyerupai kerja yang benar-benar saya lakukan dan cukup terbuka untuk membolehkan calon bermain dengan kekuatan mereka.

Berdasarkan menemu bual ramai calon, saya telah mengumpulkan beberapa petua penting untuk memastikan anda memberi penemuduga isyarat yang mereka perlukan untuk menilai kekuatan anda. Reka bentuk sistem ialah kemahiran yang memerlukan pengalaman, tetapi bagi mereka yang berpengalaman, kemahiran itu harus menjadi sesuatu yang mereka gunakan dalam kerja harian mereka. Apa yang berikut ialah senarai semak untuk memerangi saraf temu duga dan mempamerkan pengalaman anda dalam satu jam itu.

Kumpulkan keperluan berfungsi dan tidak berfungsi

Saya bercakap tentang mengumpul keperluan sebelum ini, tetapi berbuat demikian amat penting untuk temu duga reka bentuk sistem. Tidak seperti algoritma terhad, sistem yang besar mempunyai lebih banyak kawasan di mana anda boleh membuat keputusan yang berbeza berdasarkan keperluan anda. Terdapat dua jenis keperluan yang perlu anda jelaskan:

  • Keperluan fungsi: apa sebenarnya sistem itu Lakukan? Sebagai contoh, apabila mereka bentuk pemendek URL, satu soalan penting untuk ditanya ialah sama ada kita mahu menyokong carian terbalik (daripada URL panjang kepada URL pendek sedia ada), atau jika anda boleh bertolak ansur dengan URL panjang yang sama dipendekkan dalam dua cara yang berbeza. Di sinilah anda memahami cara pengguna sebenarnya akan berinteraksi dengan sistem.
  • Keperluan tidak berfungsi: bagaimana sistem berkelakuan secara teknikal. Anda pasti mahu memahami skala sistem (bilangan pengguna, permintaan serentak, jumlah data yang diproses atau disimpan). Satu lagi faktor biasa untuk dijelaskan ialah kependaman yang dijangkakan, terutamanya kependaman hujung ke hujung untuk keseluruhan sistem, yang boleh termasuk keperluan konsistensi baca selepas tulis.

Tidak mengapa untuk menyelami beberapa keperluan ini semasa reka bentuk sistem anda, semasa anda mengetahui pertukaran yang anda terpaksa buat. Walau bagaimanapun, semakin berpengalaman anda, semakin banyak keperluan ini yang boleh anda kenali terlebih dahulu dan oleh itu, tahap pengalaman anda muncul dalam bahagian temu duga ini.

Tetapi apa sahaja yang anda lakukan, jangan terjun terus ke dalam reka bentuk. Fikirkan apa yang anda reka bentuk terlebih dahulu.

Bentangkan penyelesaian hujung ke hujung

Isu terbesar yang saya lihat ialah apabila calon terlalu terperinci dalam beberapa bahagian seni bina mereka, dan pada akhir temu duga, mereka tidak mempunyai penyelesaian hujung ke hujung. Mungkin mereka terlalu menumpukan pada penyimpanan data dan melambai tangan tentang cara data diproses. Atau mereka tidak pernah bercakap tentang bagaimana data, atau bahkan data apa, sebenarnya berakhir dalam sistem mereka.

Jika tiada yang lain, pastikan anda mempunyai gambar rajah blok peringkat tinggi yang membentangkan dengan jelas semua komponen berbeza sistem yang anda cadangkan. Kebanyakan penyelesaian akan terdiri daripada bahagian biasa ini:

  • Sumber data: pelayan aplikasi, peranti pelanggan, dsb.
  • Kedai data: pangkalan data hubungan, siri masa dan nilai kunci, cache dalam memori, dsb.
  • Pengangkutan data: baris gilir mesej, API REST, dsb.
  • Pemprosesan data : di mana pemprosesan berlaku, data apa yang diperlukan dan apa yang dilakukan oleh pemprosesan.
  • Perkhidmatan tambahan jika ia masuk akal: tembok api, pengimbang beban, dsb. Dalam masalah yang saya berikan, ini biasanya diberikan dan tidak perlu disebutkan, tetapi ia mungkin menjadi pusat kepada aplikasi lain.

Perhatikan penekanan berat pada Data. Ini kerana dalam kebanyakan sistem berskala besar, sekurang-kurangnya dalam pengalaman saya, data berada di tengah-tengah sistem. Segala-galanya tentang sistem, bahagian yang berbeza dan cara ia diikat bersama, wujud untuk memastikan data boleh mengalir melalui sistem dan diproses dengan cara yang berharga untuk pengguna anda.

Gunakan istilah standard industri

Teknologi dan istilah khusus yang digunakan syarikat anda kadangkala unik, selalunya didorong oleh keperluan khusus sejarahnya. Tetapi mendasari keunikan itu ialah satu set corak biasa yang digunakan oleh syarikat anda, dan corak tersebut ialah bahasa yang anda kongsi dengan penemuduga. Rujuk corak tersebut.

Sebagai contoh, jangan ragu untuk menamakan Kafka atau Amazon SQS jika itu yang anda selesa, tetapi nyatakan bahawa anda mahukan baris gilir mesej dikonfigurasikan sebagai sistem pub/sub. Pendekatan ini mempunyai banyak kelebihan:

  • Jika penemuduga tidak mengetahui teknologi yang sama seperti anda (walaupun mereka sepatutnya tahu yang besar), anda mempunyai bahasa yang sama.
  • Anda menunjukkan bahawa anda memahami dengan tepat fungsi yang diperlukan oleh sistem yang anda cadangkan, kerana teknologi yang sama selalunya boleh digunakan untuk pelbagai sebab.
  • Dan akhirnya, ia menunjukkan bahawa tanpa mengira latar belakang anda, anda mempunyai pengetahuan am yang mencukupi untuk menterjemahkan pengalaman anda kepada peranan baharu anda, di mana anda mungkin menggunakan teknologi yang berbeza.

Menamakan teknologi tertentu bagus untuk menunjukkan anda mempunyai pengalaman dunia sebenar, tetapi masih pastikan anda merujuk corak asas.

Perkara yang sama berlaku untuk istilah khusus syarikat. Jika anda dan penemuduga mentafsirkan perkataan yang sama sebagai konsep yang berbeza, anda akan mempunyai banyak salah komunikasi. (Menariknya, semua ini boleh digunakan apabila bekerja dengan pasukan lain di syarikat besar!)

Terangkan masalah yang anda selesaikan dengan pilihan anda

Dari segi sejarah, saya menganggap ini sebagai membentangkan pertukaran, tetapi saya mendapati calon sering menghabiskan terlalu banyak masa memperincikan penyelesaian alternatif dan bukannya komited kepada cadangan tertentu. Namun, pertukaran adalah bahagian penting dalam mereka bentuk sistem besar, jadi penting anda menerangkan masalah yang diselesaikan oleh setiap pilihan anda.

Sebagai contoh, jika anda memutuskan untuk memasukkan baris gilir mesej ke dalam reka bentuk anda, anda boleh mengatakan bahawa anda bersedia untuk mengambil masa pemprosesan (pemprosesan tidak lagi atas permintaan, tetapi apabila pengguna baris gilir mendapat data tersebut) untuk memastikan setiap data diproses dengan pasti, tanpa perlu risau tentang keadaan perlumbaan antara pemprosesan data yang berkaitan. Atau jika anda menggabungkan stor nilai kunci, anda boleh mengatakan bahawa anda mahukan bacaan kependaman rendah untuk item individu dan anda tidak perlu melakukan sebarang pertanyaan lain berdasarkan keperluan fungsi yang anda kumpulkan sebelum ini.

Mengatakan ini banyak dan meneruskan menunjukkan anda membuat pilihan anda dengan sengaja dan dengan pemahaman yang jelas tentang kedua-dua masalah dan ruang penyelesaian, sambil berpegang pada naratif bersatu tentang sistem yang anda cadangkan.

Bersedia untuk mendalami bidang kepakaran anda

Ia harus diterima untuk tidak mempunyai kepakaran yang mendalam dalam semua bidang sistem (walaupun saya tahu tidak semua penemuduga begitu akomodatif), tetapi jika penemuduga memilih masalah berdasarkan latar belakang anda, harus ada bidang yang anda mempunyai pengalaman. Khususnya, anda ingin memastikan anda boleh bercakap dengan bijak tentang mana-mana bahagian sistem yang sejajar dengan kerja anda sebelum ini, terutamanya jika bahagian itu disebut dengan jelas pada resume anda.

Adakah anda mengatakan bahawa anda mengusahakan seni bina penstriman untuk memproses data? Anda sepatutnya boleh bercakap tentang baris gilir mesej, menyebut teknologi seperti Apache Spark atau Samza (atau apa sahaja teknologi yang anda gunakan sebelum ini), pertukaran antara pemprosesan aliran dan pemprosesan data dalam talian atau luar talian, dsb. Jika anda telah bekerja secara meluas dengan penyimpanan data, anda sepatutnya boleh bercakap tentang sharding, pilihan pangkalan data, berterusan berasaskan cakera vs. cache dalam memori, dsb.

Ini adalah satu lagi bidang di mana pengetahuan anda dijangka lebih luas semakin berpengalaman anda. Jika anda cukup senior, anda sepatutnya boleh bercakap tentang pelbagai bidang yang saya nyatakan di atas sekurang-kurangnya pada tahap yang tinggi. Itu adalah konsep yang agak standard dalam kejuruteraan perisian yang muncul dalam banyak sistem berskala besar.

Bercakap tentang menghasilkan sistem

Akhirnya–dan ini adalah bahagian yang tersandung oleh orang yang tidak berpengalaman–bercakap tentang mendapatkan sistem ke pengeluaran. Mudah-mudahan penemuduga anda dengan jelas meminta perkara ini semasa membentangkan masalah, tetapi jika tidak, pastikan anda menjelaskan sama ada bahagian ini adalah sesuatu yang perlu anda bincangkan.

Di sinilah anda bercakap tentang pemantauan dan pembalakan, pengendalian ralat (walaupun sebahagian daripada itu mungkin telah timbul lebih awal), pelancaran secara beransur-ansur untuk menangani kebimbangan seperti tempoh pemanasan cache, kemerosotan anggun sekiranya berlaku lonjakan trafik yang tidak dijangka, dsb. Khususnya, pemantauan dan pengendalian ralat adalah dua bidang Setiap sistem berurusan dengan, jadi saya akan memimpin dengan mereka.

Bahagian temu bual ini adalah di mana anda menunjukkan bahawa anda bukan sahaja boleh mereka bentuk sistem teori, tetapi anda mempunyai pengalaman dunia sebenar untuk mengetahui masalah yang akan dihadapi oleh sistem sedemikian dalam pengeluaran. Sekiranya saya menjadikan anda peneraju teknologi, adakah saya yakin anda akan memikirkan kebimbangan ini Sebelum Kami melancarkan? Ia juga merupakan sebab mengapa anda perlu diperkemas tentang reka bentuk sistem keseluruhan, jadi anda mempunyai masa untuk menangani bahagian ini.

Petua terakhir yang saya ada adalah kecil, tetapi ia patut disebut dengan cepat: bersedia untuk menunjukkan reka bentuk anda semasa anda membinanya. Jika anda melakukan temu duga secara peribadi, bersedia untuk melukis gambar rajah blok di papan putih. Jika temu duga adalah maya, pilih alat lukisan dan berlatih dengannya. Itu juga boleh bermakna mendapatkan papan putih anda sendiri untuk diri sendiri! Cuma pastikan ia kelihatan daripada kamera anda.

Apabila dilakukan dengan betul, reka bentuk sistem memberi anda, jurutera berpengalaman, peluang untuk mempamerkan (sekurang-kurangnya subset) kemahiran anda sebagai ketua teknikal untuk projek. Walau bagaimanapun, memandangkan anda cuba menyesuaikan pengalaman anda dalam masa satu jam sahaja, mempunyai skrip untuk temu duga bermakna anda boleh menunjukkan dengan tepat kemahiran yang memberi inspirasi kepada keyakinan terhadap kebolehan anda.

Artikel ini pada asalnya diterbitkan di laman web Hiring For Tech. Jika anda ingin membaca lebih banyak kandungan daripada saya, sila langgan sama ada melalui e-mel atau di LinkedIn. Jika anda mempunyai sebarang pendapat tentang kandungan saya, komen di bawah. Dan jangan lupa untuk ikut saya untuk lebih banyak kandungan!

Ravi Tandon

DecoverAI18K pengikut

4thn

Well written! Keep up the good work 👏👏

Anna Onyszko

Ministry of Foreign Affairs…9K pengikut

4thn

Super interesting read. Thanks for sharing!

Thank you for publishing this blog! Great tips!

Untuk melihat atau menambahkan komen, daftar masuk

Lagi artikel daripada Avik Das

  • Latihan temuduga rasmi

    Tema yang berjalan dalam buletin ini ialah idea bahawa jurutera perisian yang baik tidak secara automatik menjadi…

    1 Komen
  • Perantisan temuduga

    Jurutera perisian berada pada kedudukan yang baik untuk menilai keupayaan teknikal calon, tetapi menjalankan temu duga…

    6 Komen

Orang lain turut melihat