12/20/2023
FAANG-ийн ярилцлагад тэнцэхийн тулд дараах 8 өгөгдлийн бүтцийг (data structures) мэддэг бас ашигладаг байх шаардлагатай. Үүнд:
1. Arrays:
- Санах ойд ар араасаа дарааллан эгнэж байрласан өгөгдлүүдийн жагсаалт.
- Array-ийн дурын өгөгдөл рүү index-ээр дамжуулж хандана.
2. Linked Lists:
- Нэг node нь нөгөө node рүүгээ заах байдлаар бүрдсэн шугаман өгөгдлийн бүтэц. Санах ойд дарааллаж байрласан байх шаардлагагүй.
- Singly linked lists (Өмнөх node нь дараах node рүүгээ заасан байдалтай) болон doubly linked lists (Node тус бүр өмнөх болон дараах node рүүгээ зэрэг заана) гэсэн 2 төрөлтэй.
3. Stacks:
- Last In, First Out (LIFO) буюу сүүлд нэмэгдсэн өгөгдөл нь түрүүлж хасагддаг.
- Push (дээд талд нь өгөгдөл нэмэх) болон pop (дээд талаас нь өгөгдөл хасах) гэсэн үндсэн 2 үйлдэлтэй.
4. Queues:
- First In, First Out (FIFO) эхэлж нэмэгдсэн өгөгдөл нь эхэлж хасагддаг.
- Enqueue (ард нь нэмэх) болон dequeue (урдаас нь хасах) гэсэн үндсэн 2 үйлдэлтэй.
5. Trees:
- Root node болон child node-үүдээс бүрдсэн урвуу харсан мод хэлбэртэй өгөгдлийн бүтэц.
- Binary trees бол node болгон хамгийн ихдээ 2 child node-тэй байдаг.
- Binary search trees болохоор эрэмбэлэгдсэн binary trees буюу the зүүн талын бүх node-үүд өөрийн node-өөс бага утгатай, харин баруун талын node-үүд их утгатай байдаг.
6. Heaps:
- Бас нэгэн төрлийн tree.
- Max heap: Parent node бүр нь child node-үүдээсээ их утгатай.
- Min heap: Parent node бүр нь child node-үүдээсээ бага утгатай.
7. Hash Tables:
- Key-value хослосон өгөгдлүүд. Өгөгдөл шинээр нэмэх, хасах, харах үйлдлүүдийг constant time буюу маш хурдан хийдэг өгөгдлийн бүтэц.
8. Graphs:
- Nodes (vertices) болон тэднийг холбосон edges буюу хоорондын холбооснуудаас бүрдсэн өгөгдлийн бүтэц.
- Directed graphs-ийн холбоосууд нь аль нэг тийшээ заасан чиглэлтэй байдаг бол undirected graphs нь чиглэлгүй байдаг.
- Adjacency matrix юм уу adjacency list гэсэн 2 төрлөөр дүрсэлдэг.
Эдгээр өгөгдлийн бүтцүүд бол мужаанаар бол таны багаж зэмсэгүүд. Хэзээ, хаана, ямар тохиолдолд хэрэглэх вэ гэдгийг сурснаар та FAANG-ийн ярилцлагыг давахаас гадна амьдрал дээр програм бичихэд ч тустай.