İş görüşmesi - live coding

5 yıl tecrübeli python developer arayan bir firmanın live coding soruları
iki dosya var main.py da bir import hatası var onu düzelttikten sonra test_functions daki fonksiyonların içi doldurulacak

main.py


from test_functions import sum_even_numbers, char_frequency, is_palindrome


# Test 0
# This file fails to execute fix the error !


# Test 1
print(char_frequency('hellow my fiend'))


# Test 2
print(sum_even_numbers([1, 2, 3, 4, 5, 6]))

# Test 3
print(is_palindrome("A man, a plan, a canal: Panama"))  # True
print(is_palindrome("race a car"))  # False

test_functions.py

def sum_even_numbers(lst):
    #Write a function to return the sum of all even numbers in a list.
    return 

  # Test
  #print(sum_even_numbers([1, 2, 3, 4, 5, 6]))  # Expected output 12
  #print(sum_even_numbers([])) 

def char_frequency(s):
    #Write a function to count the frequency of each character in a string and return a dictionary.
    return 
    

def is_palindrome(s):
    # Write a function to check if a string is a palindrome (reads the same backward as forward). 
    # Ignore case and non-alphanumeric characters.
    return 
    
    
def guess_result():
  a = [1, 2, 3]
  b = [1, 2, 3]
  print(a == b)
  print(a is b)

son fonksiyonda bir şey yazmıyorsunuz sonuç ne döner diye soruyorlar.

def sum_even_numbers(lst):
    #Write a function to return the sum of all even numbers in a list.
    return sum([num for num in lst if num % 2 ==0])

ben daha uzun yazmıştım daha kısa nasıl yazılır diye sordular

def char_frequency(s):
    #Write a function to count the frequency of each character in a string and return a dictionary.
    return {char: s.count(char) for char in s}

ben count fonksiyonunu hatırlamadığım için döngü ile buldum.


def is_palindrome(s):
    # Write a function to check if a string is a palindrome (reads the same backward as forward). 
    # Ignore case and non-alphanumeric characters.
    sl = [char.lower() for char in s if char.isalnum()]
    for i in range(len(sl)):
      if not sl[i]==sl[-i-1]:
        return False
    return True

bunda da listeye çevirmeden yapılacak bir çözüm daha iyi olabilirdi.

  print(a == b)  -> True
  print(a is b) -> False
2 Beğeni

Merhabalar. Ben de böyle yaptım:

# Write a function to return the sum of all even numbers in a list.
def sum_even_numbers(lst):
   return sum([i for i in lst if i % 2 == 0])


# Write a function to count the frequency of each character in a string and return a dictionary.
def char_frequency(s):
    dct = {}

    for c in s:
        if dct.get(c) is None:
            dct[c] = 1
        else:
            dct[c] += 1

    return dct

# Write a function to check if a string is a palindrome (reads the same backward as forward). 
# Ignore case and non-alphanumeric characters.
def is_palindrome(s):
    lw_s = "".join([c.lower() for c in s if c.isalnum()])
    end  = len(lw_s) - 1

    for i in range(0, end):
        if not lw_s[i] == lw_s[end-i]:
            return False
    return True

def guess_result():
  a = [1, 2, 3]
  b = [1, 2, 3]
  print(a == b) # true
  print(a is b) # false

Dict comprehensions nasıldı ben de unuttum o yüzden char_frequency’yi o şekilde yazdım.

Bir de main’de bir sıkıntı yok aslında. Fonksiyon isimleri de doğru. Belki aynı dir’de değillerdir. Olası sebeplerden mi bahsetmemizi istiyorlar?

1 Beğeni

düzelmiş halini yazmışım ben. birinin sonunda s vardı.
şöyleydi: from ... is_palindromes

1 Beğeni
from collections import defaultdict


def sum_even_numbers(lst):
    return sum([num for num in lst if num % 2 == 0])


def char_frequency(s):
    # Write a function to count the frequency of each character
    # in a string and return a dictionary.
    freq = defaultdict(int)
    for char in s:
        freq[char] += 1
    return dict(freq)


def is_palindrome(s):
    # Write a function to check if a string is a palindrome
    # (reads the same backward as forward).
    # Ignore case and non-alphanumeric characters.
    s = s.lower()
    s = ''.join(char for char in s if char.isalnum())
    return s == s[::-1]

ben de mülakatta olmamanın verdiği rahatlıkla şöyle bir şeyler yaptım. başka bir modül import etmek serbest miydi bilemiyorum. char_frequency fonksiyonunda integer defaultdict ile if else bloğuna girmemize gerek kalmıyordu. epey kullanışlı bence. belki gelecekteki mülakatlarda artı puan yazabilir bu.

1 Beğeni

İşinize karışmak istemem. İş görüşmelerinde bu tür garip şeyler yapan bir yerde çalışmak ister mi insanlar bilmem. Bir personel alacaksan yetkinliklerine bakarsın, ihtiyacına bakarsın alırsın.

Test edebilmek akademik yeterlilik gerektirir. Yani ölçme ve değerlendirme yeteneği olmayan biri ölçme ve değerlendirme için soru hazırlayıp yap bunu derse kimisi yapar kimisi yapamaz ayıraç değildir.

Ezbere kod soran, hata aratanlar. Zaten bir kodu internet araçları, kod bilgisi, test bilgisiyle düzeltemeyecek birini alacaksa işi var.

Yani fonksiyonda hata varsa fonksiyonun yenisini yazar, modülde hata varsa modülün yenisini yazar, projede hata varsa projenin yenisini yazar geçerim (büyük ölçekli projeler istisna).

Başkasının hatasını aramak ve düzeltmek ve bunun üzerinden personel testi yapmak akıllı bir fikir değil.

Kendinize bunu yaptırmayın. İhtiyacı doğru belirlesinler, sizden ne beklediklerini anlatsınlar. Uyuyorsa çalışın. Yaratıcı fikir mi lazım, kod düzeltici mi lazım, güvenlik tester ı mı lazım. Ne ise konu ona göre yetkinlikler konuşun.

Böyle rastgele adam alan yerlerin profesyonel olduğunu düşünmüyorum.

İK ya persone al demişler, İK da ne soralım demiş, işi başından aşkın birine sen soru hazırla demişler o da o anki ruh haline göre soru hazırlamış izlenimi veriyor. Böyle iş bulunmaz, böyle işe girilmez, böyle de mutlu çalışılmaz. Kod bilmek alfabe öğrenmek gibidir. Programcılık ise alfabe ile edebiyat yapabilmek gibidir. Edebiyatçı aramayan yerlere bulaşmayın mutsuz olursunuz.

2 Beğeni