it-swarm.asia

Mülakatlara Hazırlanma

Olası Kopya:
Kendinizi röportaj sorularını programlamaya nasıl hazırlayabilirsiniz?

Birisi bana teknik röportaja nasıl hazırlanacağına dair işaret verebilir mi? Bir CS mezunu olarak, sanırım aşağıdaki konular ile ayrıntılı olmalıdır:

Veri Yapıları: Dizi, Bağlantılı Liste, Yığın, Kuyruklar, Yığın, Karma Tablosu, İkili Ağaç, İkili Arama Ağacı, Kendini Dengeleyen İkili Ağaç (AVL, Kırmızı Kara Ağaç), B-Ağacı, Denemeler/Son Ek Ağacı

Algoritmalar: Sıralama (Kabarcık Sıralaması, Ekleme Sıralaması, Seçim Sıralaması, Kabuk Sıralaması, Hızlı Sıralama, Birleştirme Sıralaması, Dış Sıralama), Arama (doğrusal ve logaritmik zaman arama), Grafik Teorisi (Bitişiklik Listesi, Bitişik Matris, DFS, BFS, Topolojik Sıralama), Dinamik Programlama, Açgözlü Algoritmalar, Böl ve Conquer.

Adhoc Algoritmaları: Algoritma, Fisher Yates Kart Karıştır, Rezervuar Örneklemesi'ni seçin ve liste sonsuzdur.

Veritabanları: SQL Sorguları

Programlama ve Tasarım: C, C++, Java, kodlama dilleri (Perl, Python), (OOPS temelleri, sanal işlevler, derin ve sığ kopya, kopya oluşturucu , atama operatörü, STL, bellek yönetimi, işaretçiler/referans, arayüz, soyut sınıflar

İşletim Sistemleri: İplik Senkronizasyonu (Mutex, Koşullu Değişkenler, Semaforlar, Kilitlenmeler), Bellek Yönetimi (Segmentasyon, Çağrı, TLB, Önbellek Mekanizmaları)


Ayrıca, bu konuları fırçalamak için internette mevcut kaynakları derleyebilmemiz harika olurdu. Bunlardan bazılarını ekleyeceğim:

Bağlantılı Liste ve ağaçlar: http://cslibrary.stanford.edu/103/

Lütfen bu konulara hazırlanmak için yararlı bir kaynak bulmamda bana yardımcı olun, ayrıca bu konulara ekleyebilirseniz sevinirim.

14
Amm Sokun

Bu gerçekten başvurduğunuz iş türüne bağlıdır. Birkaç röportaj yaptım ve daha fazlasını yaptım. İşte bazı ipuçları.

  • Listelediğiniz her şey "teknik bilgiler" kategorisine girer. Bilmek önemlidir - teknik bilginin derinliğine ve genişliğine sahip olduğunuzu belirlemenize yardımcı olur. Gerçek şu ki, çalışmak için genellikle zor - ya biliyorsunuz ya da bilmiyorsunuz. Öyle değil, şeyleri fırçalamak kötü bir fikirdir.
  • Problem çözme ve eleştirel düşünme da gerçekten önemlidir. "Manhattan'da kaç menhol" yaygın olduğu gibi sorular - doğru bir cevap aramıyorlar, sorunları nasıl çözdüğünüzü görmek istiyorlar. İşleminizi açıklayın - bir hata yaptığınızı fark ederseniz, neden ve nasıl iyileştirebileceğinizi açıklayın. Ellerini havaya fırlat ve vazgeçme. İnatçı olun ve yaratıcı olmaya istekli olun - rögar sorusu için kabinlerle görüşmeyi önerebilirsiniz.
  • Puanlarınızı savunmak istekli olun. Tartışmacı olmayı söylemiyorum, ancak belirli bir durumda hangi teknolojiyi veya metodolojiyi kullanacağınız sorulursa, bu noktayı savunmaya hazır olun. Belirli bir sorunu çözmek için bir web uygulaması mı yoksa istemci uygulaması mı yapılacağını sorarlarsa (herkes her zaman müşteriye soracaklarını söyler, ancak genellikle yeterli değildir) bu teknolojiyi neden seçtiğinizi söylemeye istekli olur. Genellikle "tek bildiğim bu" doğru cevap değil. seçim nedenleri seçimden daha ilginç. Bir keresinde birisiyle görüştük (kim kiraladık) ve ona farklı sorunlara web veya müşteri çözümleri seçip seçmeyeceğini sorduk, web dedi ve nedenini açıkladı, ama sonra Afrika için olmadığı sürece (oradan göç etti) İnternet altyapısı korkunçtu!
  • BS etmeyin - Cevabı bilmiyorsanız, önden olun - ama sonra cevabı nasıl bulmaya çalışacağınızı veya bildiklerinize göre ne yapacağınızı açıklayın. Daha önce birinin BS'ing olduğunu kanıtlamak için gerçek bir cevap olmadığını bildiğim sorular sordum.
  • Şirketi inceleyin ile görüşüyorsunuz. Bunlar hakkında iş listesinden ve sahip oldukları diğer listelerden çok şey öğrenebilirsiniz. İş ilanınızdaki her teknolojiyi araştırdığınızdan ve şirkette kullanılan diğer teknolojilerin (diğer listelere dayanarak) bildiğinizden emin olun. Bu bana daha önce iş getirdi.
  • Bazı düşünceli sorular planlayın. Özellikle şirkete ve teknolojilerine yönelik araştırmalarınızdan esinlenmiştir.
  • Bir portföy kod örnekleri, kullanıcı arayüzü tasarımları, blog yazıları, belgeler, patentler, açık kaynak projeleri, Yığın Taşması cevapları, çözdüğünüz ilginç sorunlar (sadece kağıt üzerinde açıklanmış olsa bile) vb. Oluşturun. becerilerinizi, deneyimlerinizi vb. gösterebilir. Paylaştığınız her şey için haklara sahip olduğunuzdan emin olun. Bir zamanlar bir adayım bana önceki bir çalışan için tasarladığı bir uygulamaya giriş kimlik bilgilerini postaladı. Kendi zamanınızda (veya okulda) yaptığınız şeyler anahtardır - ayrıca tutkunuzu gösterir.

Umarım yardımcı olur. İyi şanslar!

19
Jim McKeeth

B kitap geçmişte bana çok yardımcı oldu. Özellikle okuldan yeni çıkarken.

EDIT: "Programlama röportajlar maruz: Sonraki işinizi açılış sırları, 2. baskı (Programcı programcıya)"

2
socialMatrix

Listenizde olabildiğince çok öğe bilmek güzel, ancak röportaja yardımcı olduğumda, öğeleri bilip bilmediğinize hızla geçiyoruz. İlgileniriz ve ne kadar iyi bilirseniz, ancak belirli bir problemde neden bir veri yapısını diğerine göre seçeceğinizi veya muteksler yerine semaforları ne zaman kullanacağınızı cevaplayacak kadar iyi bilirseniz daha da iyidir.

Buna ek olarak, önceki çalışma örneklerini getiren insanlar çok takdir edilmektedir. Bunu yaparsanız, iyi bildiğinizden emin olun; yani, gerçekten anlamadığınız sürece, kodun çoğunun başka biri tarafından yazıldığı bir "takım" olarak yaptığınız bir şeyi getirmeyin. Neden yaptığınız algoritmaları, hangi kısıtlamaları altında çalıştığınızı ve bunun gibi şeyleri seçtiğinizi açıklamaya hazır olun.

1

Listelediklerinizin çoğu doğrudan bir röportajda ortaya çıkmayacak; çoğunu arka planınıza göre bildiğiniz varsayılacaktır. Göstermeniz gereken şey bilgiden ziyade işi yapmaktır. Gibi şeyler:

  • Yazılı ve sözlü olarak güçlü iletişim becerileri. Özgeçmişiniz ve kapak mektubunuz da dahil olmak üzere tüm başvuru ve mülakat süreci bunu gösterme fırsatlarınızdır.
  • Hızlı öğrenme ve iyi araştırma becerileri: bilmediklerinizi kabul etme ve sizi durdurmasına izin vermeme yeteneği. "Bilmiyorum" demeye hazır olun ve "henüz" ekleyecek kadar emin olun. Kimsenin başının üstünden bilmediği bir ya da iki soru verilebilir; bu, kızarmadığınızı veya bir şeyler uydurmadığınızı, sakin ve hızlı bir şekilde gidip bilmeniz gerekeni bulabileceğinizi kanıtlamak içindir.
  • Analitik düşünme: bir sorunla baş edebileceğinizi ve bir çözüme ulaşacağınızı kanıtlamak için çeşitli bilmeceler sunulabilir; en önemli olan son cevabın değil, sürecin. Çoğu zaman, soran kişi son cevabınızın yazılı mı yoksa yanlış mı olduğunu bilmez (veya umursamaz). Bunu nasıl bulduğunuzu görmek istiyorlar.
  • Teknik gösteri: bu doğru, eğlenceli kısım. İyi bir şirket, tamamlamanız için bir programlama görevi sunacak ve çözümünüzü gözden geçirecektir. Sorunlar genellikle nispeten basit olsa da, deneyimden başka bir hazırlık yoktur. Sadece arka planınızın gerçek uygulama yeteneğine katkıda bulunduğunu kanıtlamak istiyorlar.

Bunların hiçbiri gerçekten "çalışılamaz", sadece uygulanabilir. Ne kadar çok uygulama o kadar iyi olur, ama her zaman hatırlayın, "pratik mükemmelleştirir" değil, "mükemmel pratik mükemmelleştirir". Sadece doğru değil, her zaman doğru yapmaya çalışın.

İyi şanslar!!

1
Adrian