Sunday, December 20, 2020

Coding Interview - д хэрхэн бэлдэх вэ?

 Програм бичдэг ажил хийе гэж бодож л байвал хүн болгоны тойроод биш заавал дайрч гарах ёстой мөнхийн сэдэв Coding Interview билээ. Дээрээс нь нэг л ороод авбал дахиж хэрэггүй юу гэвэл тийм биш, дахиж ажил болон компаниа солих болгонд дахин дахин дайрж гарах хэрэгтэй болно, бүүр менежер ч юмуу директор болоод код бичихээ болих мэстрүү орж байга бол арай ч кодинг асуухгүй байх, жоохон хэнээтэй хүнтэй таарчих юм бол самбар дээр код бичүүлэх гээд зогсож байж ч мэдэх юм. Миний хэлэх гээд байга юм гэвэл энэ сэдэв бол мөнхийн зүйл учраас орох гэж байга болон орсон хойноо яаж бэлдэх болох сэргээж явах вэ гэдэг талаар өөрийн хэдэн бодлоо бичмээр санагдав.

1.Суурь мэдлэгтэй болох
 
 Нэг ярилцлага 45-60 минут үргэлжинэ, энэ хооронд 2-3 бодлого амжиж бодох хэрэгтэй болно. Тэгэхээр нэг бодлого дээр 10-25 минут л бодох хэрэгтэй гэсэн тооцоо гарна. Тиймээс ийм богино хугацаанд яггүй чанга түвшиний бодлогыг анх удаа сэтгээд бодоод гаргачина гэж худлаа болвуу, ихэнхдээ мэддэг бодлого юмуу мэддлэг бодлого эсвэл алгоритм ашиглаж бгаад гаргалгаа хийж байж амжина. Миний харж байгаагаар дараах 2 үе шаттайгаар үндсэн суурь мэдлэг болон бодлого бодох арга барилаа олж авах хэрэгтэй гэж бодож байна. Цаг хугацааны хувьд ч хүн бүр янз янз л байна байх.

Эхлэх шат:
 Эхний ээлжинд Cracking The Coding Interview номноос доорх үндсэн зуйлүүдийг сурах хэрэгтэй болно. Хэдэн жилийн өмнө бол зөвхөн энэ хэсгээс оффер авах тохиолдол ихэнх нь байсан ч сүүлийн үед хараад байхад дараачын шатны мэдлэг шалгах бодлого их орж ирдэг болсон харагдана.

A. Data Structures
Arrays/String
Linked Lists
Queues/Stacks
Maps
Heaps
Trees/Graphs

B. Algorithms/Methods
Breadth-first search
Depth-first search
Bit Manipulation
Search/Sort
Recursion
Greedy

Үндсэн шат:
 Дахиад ахисан түвшиний бодлогууд гэвэл доорх сэдэвээс орж ирэх нь их. Эдгээр алгоритмуудыг мэддэг ашиглаж чаддаг болчихвол өөр шинэ төрлийн бодлого орж ирсэн нь нилүүн дөхүүлж оролдож чаддаг болно гэж бодож байна.

A. Data Structures
Union find
Trie

B. Algorithms/Methods
Adhoc Tricks
Graph/Tree Traversal
Binary search
Interval
Two Pointer
Slow Fast Pointer
Backtracking
Sliding Window
Dynamic Programming
Divide Conquer
Line Sweep

 Бодлого хайж олъё гэвэл leetcode.com -оос бодлого дотроос нь таг ашиглаад лист гаргаж болно. бас оор хүмүүсийн бэлдсэн гоё листүүд ч хайвал зөндөө харагдаж байна лээ. Жишээ нь энэ лист их зүгээр харагдав. Cheatsheet: LeetCode Common Templates & Common Code Problems

Leetcode.com: problem tag





2.Англи хэлний түвшинээ дээшлүүлэх
 
 Ярилцлага Англи хэл дээр явагдах учираас тодорхой түвшиний хэлний чадвар шаардана. Хэлний чадвар = Коммуникэшон чарвар гэж харагдчих тал байдал тул, ер нь хэлэн дээрээ их анхаарах хэрэгтэй болно. Зөв цэвэрхэнээр асуух гэсэн юмаа сайн асууж шалгааж чаддаг, өөрийн бодолтоо илэрхийлж ойлгуулж чаддаг байх нь наад захын шаардлага болно. Заримдаа нээлттэй асуулт асууж чөлөөтэй ярих хэрэг гарна улам л чадвар шаарна гэсэн үг тэхдээ өмнөх 2 зүйл нь илуу чухал болвуу. 

 Ийм нөхцөлд хэрэгтэй Англи хэлийг хаанаас олж сурах вэ гэхээр, mock interview хийж байга бичлэг youtube ээс олж үг хэллэгийг нь дуурайх нэг арга байна. Би ч өөрөө хэлний мэдлэг дутуу байх үед энэ залуугын бичлэгийг олон дахин сонсож дуурайж тайлбарлах гэж үзэж оролдож байж жоохон дөртэй болсон. Интэрнэт-ээс дахиаж зөндөө ухаад үз, чамд таалагдах стайлтай яритай бичлэг олдоно, нэгийг нь дагнаж аваад дуурайгаад л бай, хамт бэлддэг хүнтэй бол бүүр амар байх ээлжиж тайлбарлаж дасгал хийхэд.




3.Сонирхож байга компанидаа зориулж мэдээлэл цуглуулах

Интэрнэт байга цагт маш сайн мэдээлэл цуглуулаад орох гэж зориж байгаа компанидаа яг таарсан бэлтгэл хийж болно. Миний мэдэж байгагаар LeetCode дээр маш сайн шинэлэг мэдээллүүд дүүрэн байдаг. Жишээ нь хэрвээ чи Майкрософт-д бэлдэж байга гэвэл доорх линкээр ороод харах хэрэгтэй, энд шалгалт өгсөн хүмүүс ямар байсан талаар их дэлгэрэнгүй бичсэн байга. Асуусан асуултууд, ямар чиглэлийн асуултууд байга болон хэдэн ярилцлага авч байга тухай ч бичсэн байга. 


Хэдэн репорт уншаад үзэхэд жишээ нь иймэрхүү ялгаа харагдаж эхэлж байна, компаниас хамаараад лүүп ярилцлага дээрээ ямархуу чиглэлээр асууж байга гэдэг харагдах болно. Зөвхөн код бэлдээд байвал зарим компанируу орж чадахгүй байж мэднэ.

Microsoft: Coding x 3, Design x 1, HR x 1
Google: Coding x 3, Design x 1, Googliness x 1
Facebook: Coding x 2, Design x 2, HR x 1
Amazon: Coding x 3, Design x 1, HR x 1

Бараг хүн болгон хэлж байга нэг хэрэгтэй зүйл гэвэл компаниудад зориулсан бэлтгэлийн лист гэж байга. Энэ нь үнэтэй ч хүмүүсийн репортоос харахад давталт өндөртэй гэж байсан.


leetcode.com



4.Бодлого дээр ажиллах нь

Яаж бэлдэх вэ тэгээд энэ олон бодлогуудыг? 
Хариулт: бодоод л байхаас өөр арга зам байхгүй. Бодлого бодох явцад санаж байхад хэрэгтэй 2 зүйлийг тухай хэлье.

 Бодлогоныхоо түвшинг зөв сонгох их чухал. Нийтлэг байдаг алдаа гэвэл, хэт амархан бодлого сонгочоод бодож чадаж байна гэж бодоод яваад байх, ингэснээр цаг заваа их алдахаас гадна жинхэнэ ярилцлага дээр илүү дээд түвшиний бодлого ороод ирхээр бодож чадна гэж байхгүй. 1 мэтрийн хаалт дээгүүр хичнээн олон харайсан ч 2 мэтрийг давдаг болно гэж байхгүй, нэг хэвэндээ л байгаад л байна гэсэн үг. Дахин дахин амархан бодлого бодоод л байвал тэгээл тэр түвшиндээ байгаал байна, ахиц дэвшилт гарахгүй. Яахав өөртөө итгэх итгэлээ сэргээх болон мэддэг мэдлэгээ сэргээх гэсэн зөв тал байж болох ч, дээшээ ахина гэж лав саналтгүй. Тиймээс бага багаар бодож чаддаг бодлогоны түвшингээ ахиулсаар байгаад сүүлдээ зорисон хэмжээндээ хүрнэ гэсэн тактик хэрэгтэй болно.
Амархан бодлого бодоод л байвал

 Бэлдэж байга бодлого зөв түвшиндээ хүрэхэд ярилцлага дээр ороод ирсэн бодлогнуудыг нэмэлт тусламжгүйгээр бодох магадлал эрс өснө. 100% өөрөө бодчихвол сайн, дээрээс нь жоохон хинт аваад бодож чаддаг болчихвол ихэнхдээ ОК авч чадна.
Зохих түвшиний бодлого бодож байвал

 
 Дараагийн санаж явахад хэрэгтэй зүйл гэвэл, хэт хурдан хариуг нь харахгүй байх. Миний хувийн дүрэм, доорх дохиолдолд хариуг нь уншиж эхэлнэ. 
  • 30 минут бодоод ямарч санаа оноо гарж ирэхгүй байх. Бас ямарч төсөөтэй бодлого харж байгаагүй бөгөөд, library-д хайгаад юу ч гарахгүй байхад
  • Нэг санаа олоод кодоо бичээ үзсэн ч хариу нь таарахгүй байхад
  • Нэг санаа олсон ч кодоо бичиж чадахгүй байх, эсвэл цагтаа амжих эсэх нь их эргэлзээтэй байхад
 Жишээ нь хэт хурдан хариу-луу яарвал, тархи ямар ч бэлтгэлгүй байга. Шинээр уншиж сурсан арга тэхникийг шинэ бөмбөгтэй зүйрлэвэл бэлтгэлгүй тархи тогтоож чадахгүй ойлгоод л алдчихна. Хэсэгхэн хугацаанд ойлгосон юм шиг санагдаж мэднэ, дахиад 7 хоногын дараа харвал юу ч байхгүйл алга болсон байх вий.

Хаалттай тархи

 Хангалттай хугацаа өгч оролдож нухаж тархиа бэлдэж байгаад хариугаа харвал доорх зураг шиг тархи шууд тогтоож авхад бэлэн болсон байна. Би өөрөө дээрх 3-н шатын аль нэгийг нь дамжиж байж бэлтгэж байгаад шинэ зүйлээ уншиж тогтоохыг хичээдэг юм.
Нээлттэй тархи

 За ингээд бичээд байвал ч бичээл байх шинжтэй энэ удаагын блогоо ингэсгээд дуусгана, энэ сэдэвээр дахиад ч хэд хэд бичих хэрэгтэй санагдана.

2 comments: