إتقان جولة البرمجة

كتابة كود نظيف في المقابلات

4 دقيقة للقراءة

الكود النظيف في المقابلات ليس عن الكمال -- إنه عن إظهار أنك تكتب كودًا احترافيًا وقابلاً للقراءة حتى تحت الضغط.

اختيار اللغة

اللغة مزايا المقابلات العيوب
Python مختصرة، قابلة للقراءة، سريعة الكتابة، هياكل بيانات مدمجة أبطأ في التنفيذ (نادرًا ما يهم في المقابلات)
Java أنواع صارمة، صريحة، شائعة في شركات التقنية الكبرى مُسهبة، كود نمطي أكثر
JavaScript عالمية، جيدة لأدوار الواجهة الأمامية لا يوجد heap مدمج، غير شائعة في بعض الشركات
C++ سريعة، تُظهر معرفة بالأنظمة الأكثر إسهابًا، أخطاء صياغة سهلة

توصية: استخدم Python ما لم يتطلب الدور لغة أخرى بشكل محدد. تتيح لك كتابة أكثر كود في أقل وقت.

قواعد تنظيم الكود

1. أسماء متغيرات ذات معنى

# سيئ
def f(a, t):
    d = {}
    for i, v in enumerate(a):
        c = t - v
        if c in d:
            return [d[c], i]
        d[v] = i

# جيد
def two_sum(nums, target):
    seen = {}
    for index, num in enumerate(nums):
        complement = target - num
        if complement in seen:
            return [seen[complement], index]
        seen[num] = index

2. دوال مساعدة

قسّم المنطق المعقد إلى دوال مسمّاة:

# بدون مساعدين (صعب المتابعة)
def solve(board):
    for i in range(9):
        for j in range(9):
            if board[i][j] == '.':
                for c in '123456789':
                    if all(board[i][k] != c for k in range(9)) and \
                       all(board[k][j] != c for k in range(9)) and \
                       all(board[3*(i//3)+di][3*(j//3)+dj] != c
                           for di in range(3) for dj in range(3)):
                        board[i][j] = c
                        if solve(board): return True
                        board[i][j] = '.'
                return False
    return True

# مع مساعدين (النية واضحة)
def solve(board):
    def is_valid(row, col, num):
        # فحص الصف
        if num in board[row]: return False
        # فحص العمود
        if any(board[r][col] == num for r in range(9)): return False
        # فحص صندوق 3x3
        box_r, box_c = 3 * (row // 3), 3 * (col // 3)
        for r in range(box_r, box_r + 3):
            for c in range(box_c, box_c + 3):
                if board[r][c] == num: return False
        return True

    def backtrack():
        for r in range(9):
            for c in range(9):
                if board[r][c] == '.':
                    for num in '123456789':
                        if is_valid(r, c, num):
                            board[r][c] = num
                            if backtrack(): return True
                            board[r][c] = '.'
                    return False
        return True

    return backtrack()

3. الإرجاع المبكر

قلل التداخل بالإرجاع المبكر:

# متداخل بعمق (صعب القراءة)
def process(node):
    if node:
        if node.val > 0:
            if node.left:
                return process(node.left)
            else:
                return node.val
        else:
            return 0
    else:
        return -1

# إرجاع مبكر (أنظف بكثير)
def process(node):
    if not node:
        return -1
    if node.val <= 0:
        return 0
    if not node.left:
        return node.val
    return process(node.left)

الأخطاء الشائعة

الخطأ الحل
أخطاء الواحد بالزائد/الناقص استخدم range(n) لـ 0 إلى n-1؛ range(1, n+1) لـ 1 إلى n
فيضان الأعداد الصحيحة Python تتعامل مع الأرقام الكبيرة؛ في Java/C++ استخدم long
فحوصات Null/None افحص قبل الوصول لـ .val، .next، .left
تعديل القائمة أثناء التكرار كرر على نسخة أو استخدم حلقة قائمة على الفهرس
نسيان معالجة المدخلات الفارغة أضف شرط حماية في الأعلى

اختبار الكود

بعد البرمجة، تتبع حلك:

# حلك
def max_profit(prices):
    min_price = float('inf')
    max_profit = 0
    for price in prices:
        min_price = min(min_price, price)
        max_profit = max(max_profit, price - min_price)
    return max_profit

# تتبع: prices = [7, 1, 5, 3, 6, 4]
# price=7: min=7, profit=0
# price=1: min=1, profit=0
# price=5: min=1, profit=4
# price=3: min=1, profit=4
# price=6: min=1, profit=5 ✓
# price=4: min=1, profit=5
# النتيجة: 5 ✓

نصيحة للمقابلات: بعد إنهاء الكود، قل: "دعني أتتبع هذا مع مثالنا للتحقق." هذا يُظهر الدقة ويكتشف الأخطاء قبل أن يكتشفها المقابل.


التالي: لنغطي مهارات عصر الذكاء الاصطناعي الجديدة التي تختبرها الشركات في 2026. :::

اختبار

اختبار الوحدة 5: إتقان جولة البرمجة

خذ الاختبار