Шест стъпки за решаване на въпроси на бяла дъска

Снощи присъствах на виртуална среща на софтуерни инженери, които се събират, за да практикуват структури от данни и проблеми с алгоритми. Бях почти напълно начинаещ в писането на бяла дъска, така че бях доста нервен, влизайки.

Въпреки това използвах рамка от шест стъпки, за да ми помогне да се справя с проблема и да се забавлявам, докато го правя!

Тази статия е за всеки, който започва с технически интервюта или иска да научи повече за бялата дъска.

Пример: Сравняване на двоични дървета

Помислете за всички листа на двоично дърво. Отляво надясно, стойностите на тези листа образуват листова последователност от стойности.

Две двоични дървета се считат за подобни на листа, ако тяхната последователност на листови стойности е една и съща.

Връща true, ако и само ако двете дадени дървета с главни възли root1 и root2 са подобни на листа.

Стъпка 1 - Повторете

Изразете словесното си разбиране на проблема — това е вашият шанс да проверите разбирането си на въпроса.

Уверете се, че сте съгласни какво трябва да изведете. В този случай целта е да се напише функция, която приема два корена на дърво и връща true, ако и двете дървета съдържат едни и същи листа (възли без деца) в същия ред.

Попитайте с какви ограничения работите. Например, можете да попитате интервюиращия какво трябва да върне тази функция, ако дърветата са празни, и те биха казали да приемем, че трябва да приемете, че всички дървета ще имат поне един възел.

Стъпка 2- Примери

Измислете примери, които представляват данни, които ще преминат през вашия набор от проблеми, и се опитайте да включите всякакви трудни крайни случаи. Това ще ви ориентира към кода, който трябва да напишете, за да върнете правилните резултати.

Например в моето симулативно интервю използвахме примера, показан на снимката по-горе, което ни позволи да видим, че трябва да преминем към първо търсене в дълбочина, а не първо търсене в ширина.

Стъпка 3- Подход

Вербализирайте и запишете стъпките, които искате да предприемете, и мотивите си зад тях. Това помага на вашия интервюиращ да разбере как мислите и да се включи с вас, когато е подходящо. Псевдокод.

Стъпка 4 и 5 - Код и тест

Това е мястото, където превеждате подхода, който сте измислили, в работещ код.

Няколко интервюиращи споменаха, че измислянето на правилен подход и писането на кода за него не вървят непременно ръка за ръка — трябва да практикувате и двете.

В идеалния случай, докато кодирате решението си, вие също тествате дали то работи по начина, по който очаквате. Това ще ви помогне да уловите всякакви синтактични грешки или скокове на логиката, които сте направили.

Пускането на примери чрез вашето решение проверява дали то работи или дали имате още работа за вършене.

Стъпка 6- Оптимизиране

Метод на груба сила може да реши проблема, но се опитайте да оптимизирате работата си и да намалите нейната пространствено-времева сложност, ако има останало време. Някои интервюиращи очакват да прегледате вашето решение и да използвате Big-O нотация, за да идентифицирате ефективността му.

Заключение

Това е рамката REACT-O: повторете, измислете примери, разработете подход, кодирайте, тествайте и оптимизирайте.

Ето някои други съвети, които ми бяха предадени — Практикувайте решаването на проблеми по възможно най-много начини, за които се сетите. Това ще засили способността ви да измисляте решения, които никога преди не сте виждали, и ще демонстрира вашето майсторство над това, което сте научили. Помислете за вашия алгоритъм като за дете; трябва ясно и просто да обясните какво искате да направи, за да може да следва вашите инструкции. И накрая, не разчитайте на запомняне на удобни методи, за да свършите работата. Практикувайте писане на функции, които комбинират прости методи.

Благодарности

Научих рамката за интервю REACT-O от Карин Маккарти и получих допълнителни съвети за бяла дъска от Джеф Грийн.

„She’s Coding Seattle“ е групата за срещи, на която присъствах. Те организират ежеседмични, удобни за начинаещи практически сесии за работа с бяла дъска за хора в технологиите, които се идентифицират като жени и не-бинарни.

Проблемът със сравнението на двоично дърво идва от тях и примерът е създаден от Dianna Tingg.