Kursus Asas Temu Duga Pengekodan Python

Kursus Python berstruktur untuk temu duga pengekodan merangkumi asas bahasa, struktur data, fungsi dan komprehensi, OOP dan pengecualian, serta algoritma dan strategi temu duga dengan soalan latihan berkaitan.

Tahap: Coding Interview Kesukaran: medium 5 pelajaran 75 min
Kemajuan kursus 0 / 5
Kembali ke kursus

Apa yang akan anda pelajari

  • Menjelaskan asas Python, kebolehubahan, type hints dan penyediaan persekitaran
  • Memilih dan menggunakan list, tuple, set, dict dan fungsi terbina dalam dengan kerumitan yang betul
  • Menulis fungsi, komprehensi, closure, decorator dan generator yang berkesan
  • Mengaplikasikan OOP, pewarisan, polimorfisme, dunder method dan pengendalian pengecualian
  • Menyelesaikan soalan temu duga dengan algoritma biasa dan strategi yang boleh diulang

Sebelum bermula

  • Pengalaman pengaturcaraan asas dalam mana-mana bahasa
  • Biasa dengan pemboleh ubah, fungsi dan gelung
  • Persekitaran Python 3 atau penterjemah dalam talian untuk latihan

Pelajaran 1 Asas Python dan pemikiran temuduga

Dalam temu duga Python, penemuduga mahu melihat cara anda memahami penyimpanan dan perbandingan data. Pemboleh ubah ialah rujukan kepada objek; dua pemboleh ubah boleh menunjuk ke objek yang sama, jadi bezakan identiti dan kesamaan dengan is dan ==.

Jenis mutable seperti list, set dan dict boleh berubah kandungannya, manakala jenis immutable seperti str, int dan tuple tidak. Apabila objek mutable dihantar ke fungsi, perubahan dalam fungsi boleh menjejaskan data di luar fungsi.

Type hints menjadikan kod lebih mudah dibaca dan membolehkan alat pemeriksaan statik mengesan ralat lebih awal. Contoh: def add(a: int, b: int) -> int:. Dalam temu duga, gunakan type hints apabila ia menjelaskan idea tanpa melambatkan penyelesaian.

Penemuduga menilai cara anda berfikir dan kod yang anda tulis. Terangkan rancangan secara ringkas sebelum menulis, uji dengan contoh kecil, dan semak kes tepi seperti senarai kosong atau data berulang.

Sediakan persekitaran Python 3 dengan penterjemah atau notebook dalam talian supaya anda boleh mencuba dengan pantas. Menguasai dir(), help() dan type() juga membantu apabila anda perlu memeriksa tingkah laku pustaka semasa temu duga.

Tip latihan Asas Python dan pemikiran temuduga: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.

Contoh

Semasa panggilan saringan, penemuduga meminta anda menerangkan maksud None dan cara Python menilai nilai kebenaran. Anda menjawab bahawa None ialah objek tunggal dan bekas kosong, sifar, serta rentetan kosong bersifat falsy. Seterusnya anda menyebut penggunaan is None untuk perbandingan demi menunjukkan pemahaman asas Python yang tepat.

Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.

Pelajaran 2 Memilih struktur data yang sesuai

list ialah tatasusunan dinamik berurutan dengan capaian pantas mengikut indeks, tetapi pemasukan atau pemadaman pada awal senarai ialah O(n). tuple tidak berubah sesuai untuk data tetap dan boleh dijadikan kekunci dict.

set menyimpan nilai unik dan menyokong semakan keahlian, kesatuan, persilangan dan perbezaan dalam purata O(1). Gunakan set untuk membuang pendua atau semakan kewujudan yang pantas.

dict memetakan kekunci kepada nilai dengan carian purata O(1). Pilih kekunci tidak berubah, gunakan dict.get(key, default) untuk mengelak ralat kekunci hilang, dan ingat susunan pemasukan dikekalkan dalam Python 3.7+.

Fungsi terbina dalam seperti len(), sorted(), enumerate(), zip(), min() dan max() menjadikan kod lebih ringkas. Contoh: sorted(items, key=lambda x: x[1]) menyusun mengikut elemen kedua tanpa gelung yang rumit.

Apabila memilih struktur data, sebutkan kerumitan masa bagi operasi utama: carian, pemasukan, pemadaman dan lelaran. Menjawab "gunakan set untuk semakan pendua dalam O(1)" menunjukkan anda memahami pertukaran antara memori dan kelajuan.

Tip latihan Memilih struktur data yang sesuai: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.

Contoh

Anda perlu menyemak keahlian dengan kerap pada senarai yang mungkin mengandungi ratusan ribu item. Anda beralih kepada set supaya item in seen berjalan dalam masa malar, dan menerangkan bahawa ini ialah carian berasaskan hash. Anda juga menyebut bahawa jika susunan perlu dikekalkan, gunakan dict atau senarai mengikut kekangan.

Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.

Pelajaran 3 Fungsi, komprehensi, dan generator

Fungsi ialah unit organisasi utama dalam Python. Selain parameter biasa, fahami *args yang mengumpul hujah kedudukan menjadi tuple dan **kwargs yang mengumpul hujah kata kunci menjadi dict, menjadikan fungsi fleksibel tetapi jelas.

Skop pemboleh ubah mengikut peraturan LEGB: Local, Enclosing, Global, Built-in. Fungsi bersarang boleh membaca pemboleh ubah fungsi luar; jika perlu menetapkan nilai, gunakan nonlocal atau global dengan tujuan yang jelas.

Closure mengingati pemboleh ubah daripada skop sekeliling walaupun fungsi luar telah tamat. Decorator ialah fungsi yang menerima fungsi lain dan mengembalikan fungsi baharu, sering digunakan untuk logging, semakan atau cache.

List comprehension seperti [x * 2 for x in items if x > 0] menghasilkan senarai baharu dengan ringkas. Begitu juga dict comprehension dan set comprehension; gunakan hanya apabila ungkapan masih mudah dibaca dan elakkan lilitan terlalu dalam.

Generator menggunakan yield untuk menghasilkan nilai secara malas, membolehkan data besar diproses tanpa menyimpan semuanya dalam memori. Dalam temu duga, terangkan faedah memori dan cara menukar antara generator dan list apabila perlu lelaran berulang.

Tip latihan Fungsi, komprehensi, dan generator: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.

Contoh

Penemuduga meminta anda menukar senarai ID pengguna kepada nama huruf kecil tanpa membina senarai perantaraan yang besar. Anda menulis names = (name.lower() for name in users) dan menerangkan bahawa ungkapan generator menghasilkan nilai secara malas. Anda membandingkannya dengan pemahaman senarai dan menekankan bahawa penggunaan memori ialah pertukaran utama.

Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.

Pelajaran 4 OOP dan pengendalian pengecualian dalam temuduga

OOP dalam Python membantu menyusun kod sekitar data dan tingkah laku. Kelas menggunakan __init__ untuk memulakan atribut, dan konvensyen self mewakili objek semasa. Bezakan atribut instance dan atribut kelas.

Pewarisan membolehkan kelas anak menggunakan semula dan mengembangkan kelas induk. Polimorfisme membolehkan objek berbeza menjawab kaedah yang sama dengan cara masing-masing; gunakan isinstance() hanya apabila perlu.

Dunder method seperti __len__, __getitem__, __eq__ dan __repr__ membolehkan objek berfungsi secara semula jadi dengan sintaks Python. Contohnya, __repr__ yang baik memudahkan debugging.

Pengendalian pengecualian menggunakan try, except, else dan finally. else berjalan apabila tiada ralat, manakala finally sentiasa berjalan untuk pembersihan. Tangkap pengecualian khusus seperti ValueError atau KeyError dan bukannya terlalu luas.

Apabila perlu, cipta custom exception dengan mewarisi Exception dan beri nama yang jelas. Dalam temu duga, berikan contoh mengubah ralat menjadi mesej berguna dan memastikan kod tidak mengganggu aliran utama.

Tip latihan OOP dan pengendalian pengecualian dalam temuduga: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.

Contoh

Penyelesaian anda perlu memuatkan profil pengguna daripada API jauh dan mencuba semula apabila rangkaian gagal. Anda mentakrifkan subkelas tersuai RetryableError dan membalut panggilan dalam blok try/except yang merekodkan kegagalan. Anda menerangkan bahawa jenis pengecualian khusus menjadikan kontrak kelas lebih jelas dan lebih mudah diuji.

Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.

Pelajaran 5 Algoritma, kompleksiti, dan strategi temuduga

Analisis kerumitan ialah kemahiran wajib. Kenal pasti big-O untuk masa dan memori, dan terangkan mengapa gelung bersarang boleh menjadi O(n²), manakala dua penunjuk atau dict biasanya mengurangkannya kepada O(n).

Corak biasa termasuk two pointers untuk tatasusunan tersusun, hashing untuk semakan pendua dan kiraan frekuensi, sliding window untuk subarray berterusan, serta isihan dan lelaran linear untuk pelbagai masalah.

Rekursi memerlukan kes asas dan kes rekursif; jika terdapat submasalah berulang, pertimbangkan memoization atau pengaturcaraan dinamik. Sentiasa semak kedalaman rekursi dan risiko limpahan tindanan.

Dalam temu duga, baca soalan dengan kuat, sahkan kekangan, berikan contoh, dan terangkan penyelesaian sebelum menulis kod. Uji dengan input kecil, kes tepi dan data besar untuk mengesan ralat logik awal.

Proses berulang yang berkesan: fahami masalah, pilih struktur data, tulis kod bersih, uji, kemudian optimumkan jika perlu. Jika tersekat, bercakaplah dengan kuat, cuba brute force dahulu, kemudian perbaiki; penemuduga menilai proses pemikiran, bukan jawapan yang sempurna.

Tip latihan Algoritma, kompleksiti, dan strategi temuduga: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.

Contoh

Apabila diberi dua tatasusunan tersusun, anda mulakan dengan menyatakan bahawa penggabungan brute-force ialah O(n log n) dan penggabungan dua penunjuk boleh mencapai O(n). Anda menelusuri invarian gelung sebelum menulis kod, yang menunjukkan pemikiran algoritma yang tersusun. Kemudian anda meringkaskan pertukaran antara kerumitan masa dan kesederhanaan kod kepada penemuduga.

Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.