Ace bir kodlaşdırma texniki reportajı necə

Bu yaxınlarda kodlaşdırma bootcamp bitirdim. Bootcamp-ın bizə verdiyi ən yaxşılardan biri də pulsuz istehza ilə texniki reportaj idi. Bu, bir müsahiblə kod yaşadığınız kompüter üzərində bir saatlıq iclas olardı. Hər hansı bir texniki görüşdə ən yaxşısını etmək üçün kəşf etdiyim bəzi tövsiyələr.

Kodlaşdırma dilinizin əsaslarını keçin

Əvvəlcə dilinizin prinsipləri ilə bağlı bəzi əsas suallara cavab verməyə hazır olun. Müsahibəm JavaScript-də oldu və mənə "Prototip nədir?", "Vərəsəlik nədir?" və "Bağlanmaq nədir?" JavaScript müsahibələri üçün soruşulacağı bilinən bəzi digər suallar "Var, qoy və const arasındakı fərq nədir?", "Bir obyekt və sinif arasındakı fərq nədir?", "Çəkmə nədir?" və "bu" söz nədir? ".

Texniki görüş üçün bilmək üçün daha çox JavaScript anlayışları üçün bir qaynaq var: https://codeburst.io/10-javascript-concepts-you-need-to-know-for-interviews-136df65ecce.

Kompüter Elminin Prinsiplərini nəzərdən keçirin

Sonra, məlumat strukturları və Big-O notation kimi bəzi əsas kompüter elmləri anlayışlarını nəzərdən keçirin. Bunlar texniki reportajınızda qüvvəyə minə bilər.

Bu mövzular üçün bəzi mənbələrə https://www.freecodecamp.org/news/the-top-data-structures-you-should-know-for-your-next-coding-interview-36af0831f5e3/ və https: // rob daxildir -bell.net/2009/06/a-beginners-guide-to-big-o-notation/.

Alqoritmlər tətbiq edin

Daha yaxşı və ya daha pis üçün, texniki görüşlərin əksəriyyəti alqoritmə əsaslanmışdır. Müsahibədən əvvəl mümkün qədər çox alqoritm problemini tətbiq etməyi tövsiyə edirəm.

İstifadə etdiyim bəzi mənbələr: https://www.codewars.com/ və https://www.hackerrank.com/. Daha çox variantı burada tapa bilərsiniz: https://medium.com/coderbyte/the-10-best-coding-challenge-websites-for-2018-12b57645b654.

Müsahibə zamanı danışın

Tamam, müsahibə vaxtıdır. Düşünürsən ki, kifayət qədər oxudun. Əsəbsizsən, açıq-aydın. Bir neçə dərin nəfəs alın. Nəsə yemək. Sakit və diqqətli olmağa çalışın.

Müsahibədə olduğunuzda sizə verə biləcəyim ən böyük göstəriş: SİZİN danışın. Tamamilə yapışmış olmağınızın əhəmiyyəti yoxdur, nə etmək lazım olduğuna dair bir fikiriniz yoxdursa, sadəcə danışmağı dayandırmayın. Müsahibə verənlə düşüncə prosesinizin nə ilə əlaqəli olduğunu, problem həll etmə bacarıqlarınızın nə olduğunu göstərir. Düşündüyünüz şey barədə danışın. Problemi həll etməyi düşünə biləcəyiniz müxtəlif yollarla fikirlərinizi atın.

Yalançı kod

Prosesiniz haqqında danışarkən, yalançı kodlaşdırmaya başlayın. Əgər cavabı onsuz da bilirsinizsə, bu addımı atmaqdan çekinmeyin, ancaq tamamilə yapışdığınız zaman beyninizi dişli etmək üçün yaxşı bir yoldur. Problemi həll etmək üçün nə etməli olduğunuzu düşünün. Sonra yavaş-yavaş daha spesifikləşin, lazım olan həlli əldə etməyin daha konkret yollarını düşünməyə başlayın.

Yaxşı suallar verin

Müsahibiniz sizi kökündən deyil, sizə kömək etmək üçün var. Xüsusi müsahibəmdə problemi həll etmək üçün lazım olan konkret JavaScript metodunu xatırlamadım. Düşündüyümü təsvir etdim və müsahibim cavabı mənə təqdim etdi.

Google

İcazə verilsə: həll üçün Google. Bəzi müsahibələrdə Googling tamamilə icazə verilir. Bunu sizin xeyrinizə istifadə edin.

Nə etməyinizdən asılı olmayaraq, müddət ərzində sakit olmağa çalışın.

Nümunə alqoritmi problemləri

Budur mənə verilən ən böyük alqoritm problemi:

Bir yuva qurmuş bir sıra verilmişdir [1, [2, 3], [[4]], 5, [[[6]]]], düz metoddan istifadə etmədən onu düzəltmək üçün bir funksiya necə yazardınız?

Budur mənim həllim:

Mən necə həll etməyə başladım? Düşündüklərimi danışmağa başladım. Serialdan keçmək üçün döngəyə ehtiyacım olardı, buna görə də bir loop yaratdım. Elementləri itələmək üçün boş bir seriala ehtiyacım olacağını bilirəm, buna görə birini yaratdım. Döngünün hər iterasyonunda bir elementi yeni massivə itələdim. Sonra istədim elementin bir sıra olacağı təqdirdə həmin serialın içərisində başqa bir döngəyə ehtiyacım olacağını başa düşdüm. Bu, hər element üçün yuva qurmağın hər səviyyəsi üçün bir döngə yaratmalı olduğumu göstərir.

Həll? Təkrarlama istifadə edin. Əsas işi sizin üçün işləyən bir funksiya yaratdığınızda bu funksiyanı özünün içərisinə çağıra bilərsiniz. Təkrarlanma ilə vacib hissə yaxşı bir dayanma nöqtəsinə sahib olmaqdır. Sonsuz bir döngə istəmirsiniz. Bunu if ifadəmlə etdim: element bir sıra varsa, bu funksiyanı işə salmaqla yenidən düzəldin; deyilsə, elementi yeni massivə itələyin.

Müsahibimin izləmə sualı: bu problemi təkrar etmədən necə həll edərdiniz? Bu vaxt cavab verə bilmədim, amma o vaxtdan bəri cavabı araşdırdım.

Bu StackOverflow sualı təkrarlanmadan həll üçün bir neçə variant verir: https://stackoverflow.com/questions/27303369/flatten-array-of-multiple-nested-arrays-without-recursion-javascript/37357916.

Ən sevdiyim cavab:

Digər bir nümunə alqoritmi suallarına "Fibonacci ardıcıllığının 9-cu sayını qaytarın", "FirstFactorial (num) funksiyasının keçid say parametrini götürün və bunun əmsalını qaytarın" daxildir. Məsələn: sayı 4-ə bərabərdirsə, proqramınız qayıtmalıdır (4 * 3 * 2 * 1) = 24 ”və klassik FizzBuzz:“ 1-dən 21-dək rəqəmləri çap edən bir proqram yazın. Üçün çarpması üçün çap et Nömrənin əvəzinə "Fizz". Beş çoxluq üçün nömrə əvəzinə "Buzz" yazdırın. Üç və beşin çoxluğuna bərabər olan nömrələr üçün "FizzBuzz" yazın. "

Digər nümunə alqoritmi problemlərini burada tapa bilərsiniz: https://www.thatjsdude.com/interview/js1.html

Unutmayın, bu suallar sınaqdan keçirilmiş dil, şirkətin işə götürülməsi və vəzifəyə görə dəyişə bilər.

Ümid edirəm bu kömək etdi!