Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Programming Interviews Exposed

Programming Interviews Exposed

Secrets to Landing Your Next Job
توسط John Mongan 2000 237 صفحات
3.96
1k+ امتیازها
گوش دادن
Listen to Summary

نکات کلیدی

1. تسلط بر ساختارهای داده و الگوریتم‌های بنیادی برای مصاحبه‌های فنی

سؤالات برنامه‌نویسی معمولاً دشوار هستند. اگر همه (یا حتی بیشتر افراد) به یک سؤال خاص به سرعت پاسخ دهند، شرکت از پرسیدن آن سؤال صرف‌نظر می‌کند زیرا اطلاعاتی درباره‌ی متقاضیان به آن‌ها نمی‌دهد.

شایستگی‌های اصلی. مصاحبه‌های فنی بر ارزیابی درک نامزدها از ساختارهای داده و الگوریتم‌های بنیادی تمرکز دارند. موضوعات رایج شامل لیست‌های پیوندی، درخت‌ها، گراف‌ها، الگوریتم‌های مرتب‌سازی و تکنیک‌های جستجو است. مصاحبه‌کنندگان از این مسائل برای ارزیابی مهارت‌های حل مسئله، توانایی کدنویسی و عمق دانش استفاده می‌کنند.

انواع مسائل. انتظار داشته باشید سؤالاتی درباره‌ی پیاده‌سازی ساختارهای داده از ابتدا، دستکاری ساختارهای موجود و به‌کارگیری الگوریتم‌ها برای حل مسائل خاص مطرح شود. مثال‌ها شامل معکوس کردن یک لیست پیوندی، پیدا کردن پایین‌ترین جد مشترک در یک درخت دودویی یا پیاده‌سازی جستجوی عمق اول در یک گراف است.

استراتژی آماده‌سازی.

  • مرور ساختارهای داده اصلی: آرایه‌ها، لیست‌های پیوندی، پشته‌ها، صف‌ها، درخت‌ها و گراف‌ها
  • تمرین الگوریتم‌های رایج: مرتب‌سازی، جستجو، پیمایش و بازگشت
  • پیاده‌سازی ساختارهای داده و الگوریتم‌ها از ابتدا برای تثبیت درک
  • حل مسائل تمرینی با تمرکز بر بهینه‌سازی پیچیدگی زمان و فضا

2. رویکردی سیستماتیک به مسائل برنامه‌نویسی و ارتباط تفکر خود

تعامل‌پذیری کلیدی است. کدی که در مصاحبه می‌نویسید احتمالاً تنها نمونه‌ای از کد شماست که مصاحبه‌کننده‌تان می‌بیند. اگر کد زشتی بنویسید، مصاحبه‌کننده فرض می‌کند که شما همیشه کد زشت می‌نویسید.

رویکرد ساختاریافته. یک روش سیستماتیک برای برخورد با مسائل مصاحبه توسعه دهید. با روشن کردن بیان مسئله و الزامات شروع کنید. مسئله را به اجزای کوچکتر تقسیم کنید و موارد حاشیه‌ای را در نظر بگیرید. قبل از شروع به کدنویسی، راه‌حل‌های ممکن و مزایا و معایب آن‌ها را مورد بحث قرار دهید.

ارتباط واضح. در طول مصاحبه، فرآیند تفکر خود را بیان کنید. دلایل، فرضیات و تصمیم‌گیری‌های خود را در حین کار بر روی مسئله توضیح دهید. این کار مهارت‌های حل مسئله شما را نشان می‌دهد و به مصاحبه‌کننده اجازه می‌دهد در صورت نیاز راهنمایی کند.

مراحل حل مسئله:

  1. درک کامل مسئله
  2. روشن کردن هرگونه ابهام یا محدودیت
  3. در نظر گرفتن چندین رویکرد و بحث درباره‌ی مزایا و معایب
  4. انتخاب یک رویکرد و ترسیم راه‌حل
  5. پیاده‌سازی راه‌حل و توضیح کد در حین نوشتن
  6. آزمایش راه‌حل با ورودی‌های نمونه و موارد حاشیه‌ای
  7. تحلیل پیچیدگی زمان و فضا برای راه‌حل خود

3. پیاده‌سازی و دستکاری لیست‌های پیوندی به‌طور کارآمد

حذف و درج نیاز به یک اشاره‌گر یا مرجع به عنصر بلافاصله قبل از محل حذف یا درج دارد.

عملیات بنیادی. لیست‌های پیوندی به دلیل سادگی و توانایی آن‌ها در آزمایش مهارت‌های دستکاری اشاره‌گر، معمولاً در مصاحبه‌های فنی مورد توجه قرار می‌گیرند. بر روی عملیات پایه‌ای مانند درج، حذف و پیمایش برای لیست‌های پیوندی تک‌گانه و دوگانه تسلط پیدا کنید.

چالش‌های رایج. آماده باشید تا با موارد حاشیه‌ای مانند لیست‌های خالی، لیست‌های تک‌عنصری و عملیات در سر یا دم لیست برخورد کنید. تمرین پیاده‌سازی عملیات پیچیده‌تر مانند معکوس کردن یک لیست پیوندی، شناسایی چرخه‌ها یا پیدا کردن عنصر n-ام از انتها را فراموش نکنید.

تکنیک‌های کلیدی:

  • استفاده از گره‌های موقتی برای ساده‌سازی عملیات سر و دم
  • پیاده‌سازی تکنیک دوندگی (اشاره‌گرهای کند و تند) برای شناسایی چرخه‌ها و پیدا کردن عناصر میانی
  • تسلط بر رویکردهای بازگشتی برای مسائلی مانند معکوس کردن یک لیست پیوندی یا ادغام لیست‌های مرتب
  • درک زمان مناسب برای استفاده از لیست‌های پیوندی تک‌گانه در مقابل دوگانه بر اساس الزامات مسئله

4. درک ساختارهای درختی و الگوریتم‌های پیمایش

بسیاری از عملیات درختی می‌توانند به‌صورت بازگشتی پیاده‌سازی شوند. پیاده‌سازی بازگشتی ممکن است کارآمدترین نباشد، اما معمولاً بهترین نقطه شروع است.

اصول درخت. با انواع مختلف درخت‌ها، از جمله درخت‌های دودویی، درخت‌های جستجوی دودویی (BST) و هپ‌ها آشنا شوید. خواص و مزایای هر ساختار را درک کنید. بر روی الگوریتم‌های پیمایش درخت تسلط پیدا کنید: پیمایش به‌صورت درون‌سفید، پیش‌سفید و پس‌سفید.

مسائل رایج. تمرین حل مسائل معمول مرتبط با درخت مانند پیدا کردن ارتفاع درخت، بررسی تعادل درخت و پیاده‌سازی پیمایش سطحی را فراموش نکنید. آماده باشید تا با BSTها برای عملیات جستجو، درج و حذف کار کنید.

مفاهیم کلیدی:

  • پیاده‌سازی‌های بازگشتی در مقابل تکراری از پیمایش‌های درخت
  • درخت‌های متعادل در مقابل نامتعادل و تأثیر آن‌ها بر عملکرد
  • چرخش‌های درختی برای حفظ تعادل در BSTها
  • عملیات هپ: درج، حذف و هپ‌سازی
  • ساختار داده‌ی تری برای عملیات کارآمد روی رشته‌ها

5. به‌کارگیری مفاهیم گراف برای حل مسائل پیچیده

گراف‌ها معمولاً برای مدل‌سازی مسائل دنیای واقعی که مدل‌سازی آن‌ها با سایر ساختارهای داده دشوار است، استفاده می‌شوند.

نمایش‌های گراف. با روش‌های مختلف نمایندگی گراف‌ها، از جمله لیست‌های همسایگی و ماتریس‌های همسایگی آشنا شوید. بدانید که هر نمایندگی را بر اساس الزامات مسئله و ویژگی‌های گراف (کم‌تراکم در مقابل پرتراکم) چه زمانی باید استفاده کنید.

الگوریتم‌های گراف. بر روی الگوریتم‌های بنیادی گراف مانند جستجوی عمق اول (DFS)، جستجوی عرض اول (BFS) و الگوریتم‌های کوتاه‌ترین مسیر (دیکسترا، بلمن-فورد) تسلط پیدا کنید. آماده باشید تا این الگوریتم‌ها را برای حل مسائلی مانند پیدا کردن اجزای متصل، شناسایی چرخه‌ها یا مرتب‌سازی توپولوژیک به‌کار ببرید.

استراتژی‌های حل مسئله گراف:

  • شناسایی اینکه آیا مسئله به گراف جهت‌دار یا بدون جهت نیاز دارد
  • در نظر گرفتن گراف‌های وزنی در مقابل بدون وزن برای مسائل مربوط به فاصله یا هزینه
  • استفاده از DFS برای مسائلی که شامل پیدا کردن مسیر یا شناسایی چرخه است
  • به‌کارگیری BFS برای مسائل کوتاه‌ترین مسیر در گراف‌های بدون وزن
  • پیاده‌سازی ساختار داده‌ی اتحاد-یافت برای مسائل مجموعه‌های جدا

6. بهینه‌سازی راه‌حل‌ها با استفاده از تحلیل Big-O و تعادل زمان-فضا

اگرچه این فرآیند شامل دو بار عبور از لیست است، اما هنوز O(n) است. این روش تنها به چند متغیر نیاز دارد، بنابراین این روش بهبود قابل توجهی نسبت به تلاش قبلی است.

تحلیل زمان اجرا. در تحلیل پیچیدگی زمان و فضا برای راه‌حل‌های خود با استفاده از نماد Big-O مهارت پیدا کنید. تأثیرات کلاس‌های مختلف پیچیدگی (مانند O(1)، O(log n)، O(n)، O(n log n)، O(n^2)) بر عملکرد الگوریتم را درک کنید.

تکنیک‌های بهینه‌سازی. یاد بگیرید که چگونه استراتژی‌های بهینه‌سازی رایج را شناسایی و به‌کار ببرید، مانند استفاده از ساختارهای داده مناسب، حذف کارهای غیرضروری و بهره‌برداری از خواص خاص مسئله. آماده باشید تا درباره‌ی تعادل‌های بین پیچیدگی زمان و فضا بحث کنید.

رویکردهای کلیدی بهینه‌سازی:

  • استفاده از جدول‌های هش برای جستجوی میانگین O(1)
  • به‌کارگیری جستجوی دودویی بر روی داده‌های مرتب برای زمان جستجوی O(log n)
  • پیاده‌سازی برنامه‌نویسی پویا برای جلوگیری از محاسبات تکراری
  • استفاده از تکنیک‌های دو اشاره‌گر برای مسائل آرایه و رشته
  • در نظر گرفتن تحلیل آمورتیز برای ساختارهای داده مانند آرایه‌های پویا

7. تمرین بازگشت و رویکردهای تکراری برای مسائل درخت و گراف

گاهی اوقات الگوریتم‌های بازگشتی می‌توانند با الگوریتم‌های تکراری که همان کار را به‌طور بنیادی با استفاده از ساختارهای داده مختلف انجام می‌دهند، جایگزین شوند.

راه‌حل‌های بازگشتی. درک قوی از حل مسئله به‌صورت بازگشتی، به‌ویژه برای پیمایش‌های درخت و گراف، توسعه دهید. تمرین شناسایی موارد پایه و مراحل بازگشتی را فراموش نکنید. از معایب احتمالی بازگشت، مانند سرریز پشته برای بازگشت عمیق آگاه باشید.

جایگزین‌های تکراری. یاد بگیرید که چگونه راه‌حل‌های بازگشتی را به راه‌حل‌های تکراری با استفاده از ساختارهای داده‌ی پشته‌ای صریح تبدیل کنید. این مهارت برای بهینه‌سازی پیچیدگی فضا و مدیریت ورودی‌های بزرگ که ممکن است در پیاده‌سازی‌های بازگشتی باعث سرریز پشته شود، ارزشمند است.

تعادل رویکردها:

  • از بازگشت برای سادگی و زیبایی در حل اولیه مسئله استفاده کنید
  • در هنگام کار با ورودی‌های بزرگ یا فضای محدود پشته، به راه‌حل‌های تکراری تبدیل شوید
  • پیاده‌سازی بهینه‌سازی بازگشت دمی در صورت امکان
  • درک تعادل‌های بین راه‌حل‌های بازگشتی و تکراری از نظر خوانایی، نگهداری و عملکرد
  • هر دو رویکرد را تمرین کنید تا در حل مسئله انعطاف‌پذیری پیدا کنید

آخرین به‌روزرسانی::

نقد و بررسی

3.96 از 5
میانگین از 1k+ امتیازات از Goodreads و Amazon.

کتاب Programming Interviews Exposed به شدت برای برنامه‌نویسان جویای کار و فارغ‌التحصیلان تازه توصیه می‌شود. خوانندگان از پوشش جامع آن در زمینه‌ی ساختارهای داده، الگوریتم‌ها و آمادگی برای مصاحبه‌ها تمجید می‌کنند. این کتاب با ارائه‌ی توضیحات دقیق و روش‌های حل مسئله‌ی گام به گام، برای آمادگی در مصاحبه‌های فنی ارزشمند است. در حالی که برخی آن را قدیمی یا در برخی زمینه‌ها ناقص می‌دانند، بسیاری از آن به عنوان عاملی که به آن‌ها در یافتن شغل در شرکت‌های برتر فناوری کمک کرده است، یاد می‌کنند. این کتاب به ویژه برای مرور مفاهیم بنیادی و توسعه‌ی مهارت‌های حل مسئله مفید است. برخی از خوانندگان پیشنهاد می‌کنند که برای آمادگی کامل‌تر در مصاحبه‌ها، از منابع دیگر نیز استفاده شود.

درباره نویسنده

جان مونگان نویسنده‌ی کتاب "Programming Interviews Exposed" است که در میان برنامه‌نویسانی که برای مصاحبه‌های فنی آماده می‌شوند، محبوبیت یافته است. سبک نوشتاری مونگان به دلیل وضوح و جامعیت در توضیح مفاهیم پیچیده مورد تحسین قرار گرفته است. او با رویکردی عملی، خوانندگان را در فرآیند فکری حل مسائل برنامه‌نویسی که معمولاً در مصاحبه‌ها با آن‌ها مواجه می‌شوند، راهنمایی می‌کند. تخصص مونگان در این زمینه در توانایی او برای تجزیه و تحلیل موضوعات دشوار و ارائه نکات بینش‌مند برای موفقیت در مصاحبه‌ها مشهود است. اگرچه اطلاعات بیوگرافی خاصی در محتوای ارائه شده ذکر نشده است، اما واضح است که کار مونگان تأثیر مثبتی بر بسیاری از افراد در جامعه مهندسی نرم‌افزار داشته و به آن‌ها در کسب موقعیت در شرکت‌های معتبر فناوری کمک کرده است.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Mar 22,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →