C ++ için teknik bir değerlendirmeden ne beklemeliyim? [kapalı]


10

Temelde C ++ kullanarak küçük bir geliştirici olarak bir iş için teknik bir test / değerlendirme yapmam istendi. Bu benim ilk test / değerlendirmem ve 2 saat sürüyor.

Son zamanlarda PHP üzerinde projeler yapıyor gibi benim C ++ biraz paslı.

Bu bir İngiliz şirketidir, ancak adayların teknik testlerinin her yerde hemen hemen aynı olacağını tahmin ediyorum.

Bu testlerden birinde ne beklemeliyim?


1
Bu soru PHP içindir, ancak cevaplar geçerlidir: programmers.stackexchange.com/questions/73654/…
Eric Wilson

Yanıtlar:


5

Bu C ++, yani bir şey bekleyebilirsiniz, yani gerçekten bir şey demek.

Genellikle bu hile soruları ve bir tür polimorfizm soruları içerir.

Ama basit bir şey de olabilir.

"Neden bir yıkıcı sanal yapıyorsunuz", "değişken" olan, "gerçekçi olmayan bir sorun için" bir sınıf tasarlayın "," bağlantılı bir liste uygulayın "," bir dizeyi ters çevir "vb.


" mutableAnahtar kelime ne için kullanılır?" herhangi bir kategoriye.
Tom

5

Bu saf bir C ++ testiyse (yani bir Windows / MFC / Yönetilen C ++ testi değilse ), Scott Meyer'ın Effective C ++ ile birkaç saat veya bir gün geçirin ve çok iyi yapmanız gerekir. Şablonları ve STL'yi kapsamaz, ancak bununla ilgilenirlerse, muhtemelen size iki saatlik bir test vermeyeceklerdir. Birkaç yıl oldu, ama C ++ geliştiricileriyle sık sık röportaj yapıyordum. Etkili C ++ ' daki fikirler C ++ programlaması için temel olsa da , adayların sadece yüzde on'u bunları biliyordu.


1
Kitap önerisi için +1 - ve Scott Meyer'ın Daha Etkili C ++ Kitabı'nı atlayın. Programcılarla röportaj yaparken, entelektüel dürüstlüğe de bakıyordum (deniyor ve blöf yapıyor musun ya da bilmediğini kabul ediyor musun), bilmediğini biliyor musun ve nerede bulacağını biliyor musun? Bir cevap. (C ++ 'da çalıştığını iddia eden biriyle röportaj yaparsanız, sorular çok daha zor olurdu). CV'nizdeki diğer dillerde programlama becerileri öneren bir şey olmasaydı, sizden basit bir program yazmanızı ve köşe vakalarını doğru bir şekilde ele alıp almadığınızı kontrol etmenizi isterdim.
MZB

Ben bir bilgisayar mezunuyum, C ++ 'da konsolda nasıl programlar yapılacağı öğretildi, İkili Sıralama Ağaçları ve iki kere bağlantılı listeler vb. Uygulamaya öğretildi. nasıl uygulanır. İş rolü bir mezun için, bu yüzden benden ne beklediklerini bilmiyorum, çünkü C ++ ile gerçek bir çalışma hayatı deneyimim yok.
bearbread

4

Peki, google'ı kullanmanıza izin verip vermeyeceklerine bağlıdır. : P

Çevremizdeki araçları kullanabildiğim sürece genellikle teknik testlerde oldukça iyiyim. Ben belada onun kör kodlamak istediklerinde. Size verebileceğim en iyi tavsiye evde kod körüdür ... Aldığımız önemsiz şeyleri hatırladığınızdan emin olun çünkü hatırlamıyorsak kolayca kontrol edebiliriz.

Ayrıca, genellikle ihtiyaç duydukları belirli becerileri kontrol edin, bu yüzden ne üzerinde çalışacağınızı biliyorsanız, buna konsantre olun.

(Bu benim genel deneyimimde, İngiltere'den değilim)


Teori, polimorfizm, kalıtım hakkında. Ben sadece mezun olan bunun için teorisi biliyorum ama nasıl C ++ uygulamak bilmiyorum
bearbread

Onların uygulanması o kadar da zor değil, muhtemelen onları çok hızlı bir şekilde inceleyebilirsiniz. Önemli olan, bunları kullanmanın ne zaman uygun olacağını, ne zaman ihtiyacınız olacağını bilmektir. Bunlar gerçek bir önkoşuldan daha işlevsel bir modeldir. Demek istediğim, onları kullanmadan kaçabilmeniz, ancak gerekirse onları bilmeniz beklenir.
AJC

@ bearbread: teorinin kendisi fazla değmez. tasarım desenleri hakkında bilgi edinin ve bunları uygulamaya çalışın.
Karoly Horvath

PHP için MVC gibi tasarım kalıplarını biliyorum, demek istediğin bu mu?
bearbread

1

Uygulama kodu kata Basit bir algoritma seçin (halka arabelleği, Hanoi kulesi, ikili arama, her neyse) ve sıfırdan kodlayın. Sonra bir dahaki sefere ve bir dahaki sefere, bir sonraki sefere ve bir dahaki sefere, vb. Yapın. Her yinelemede onları nasıl geliştirebileceğinize bakın.


1
+1. Ayrıca biraz daha deneyimli bir arkadaşınızla yapın. Programa sırayla, her ikisi de yeni bir şey öğreneceksiniz.
Tom

0

Bir şey beklediğiniz doğrudur.

Testin C ++ olduğunu söylediler ama belki de testlerinde kullandıkları C ++ C altkümesi (standart kitaplık dizeleri yerine char dizileri kullanacaksınız). Bunu bilmek zor olacak.

Gerçekten C ++ ise, temelleri görmenizi tavsiye ederim:

  • Sınıflar, değişkenler, diziler
  • referanslar, işaretçiler (ve bunları neden varsayılan olarak kullanmamanız gerekir)
  • const anahtar kelimesinin kullanımı
  • Odaklanmış Nesne kavramları (kalıtım, polimorfizm ...)
  • Şablonlar

sonra:

  • Standart kütüphane kullanımları (std :: string, std :: vector, container, ...)

0

Gönderilen şu ana kadar harika oldu, ama bir şey ve bir hikaye ekleyeceğim! Yazılım şirketinin alanındaki sorunlara C ++ 'da bildiklerinizi uygulayarak pratik söyleyebilirim. C ++ 'ın tüm içeriğini ve dışını biliyorsanız harikadır, ancak bir soruna başvuramazsanız şirket için işe yaramazsınız. Bu bir genç dev pozisyonu olarak görmek, onlar C ++ hakkında her şeyi bilmek beklemek düşünmek olmaz.

Geçen hafta ilk geliştirici işim için ilk teknik testimi yaptım ve bulduğum şeye şaşırdım. FizzBuzz veya daha nitty cesur bir şey bekliyordum (bu Java, btw için) ama bulduğum şey bana bir dosya verdi ve beni işin bir parçası olan yeni bir biçime ayrıştırmak oldu. Üstelik Google'ı ve kendi kütüphanelerini kullanmama izin verdiler. Alt satırda, C ++ bilmeniz gerekir, ancak testin nasıl olabileceğini bilmek istiyorsanız, başvurduğunuz pozisyonun alanına bakın ve bu alandaki bir şeye C ++ uygulamak için çalışın.


C ++ programcılarının <% 1'inin dilin her şeyi bildiğini tahmin ediyorum :) Sadece bir örnek olarak tanımlanmamış / belirtilmemiş / uygulama tanımlı davranış örneklerini ele alalım.

0

Sen:

  1. Kod yazma
  2. çoktan seçmeli
  3. Yüz yüze görüşme

Kod yazarken

Bilmenizi (ve kullanmanızı) bekleyeceklerdir:

  • RAII
  • Üç Kuralı
  • Akıllı işaretçileri anlama

Muhtemelen sizi test edeceklerdir:

  • miras
  • Sanal işlevler
  • Bir akışa / akıştan serileştirme
  • aritmetik operatörleri aşırı yükler (genellikle gerçek hayatta kullanılmaz, ancak etrafa test yazması kolaydır).

Eğer şanssızsanız düşünebilirler

  • Çoklu kalıtım ve sanal temel sınıflar bilmeniz gereken bir şeydir.
    • Bu değil ama bazı insanlar domuz deliriyor.

Çoktan seçmeli

  • Tüm OO terminoljisini anlayın
  • OO uygulamanın C ++ yollarını bilir

Yüz yüze görüşme

  • Yukarıdakilerin hepsi.
  • Özyineleme bilgisi
  • Özyinelemeyi döngüye dönüştürme
  • Big O () karmaşıklığı nasıl tahmin edilir?
  • Standart sıralama algoritmaları (sadece kabarcık değil).

1
Ben C ++ yerine bir C programcısıyım, bu yüzden konuşmayı bilmiyorum ... ama RIAA ve üçün kuralını hiç duymadım. Ancak RAII duydum (kaynak edinimi başlatma, yani yıkıcı kendi karışıklık temizlemek gerekir) ve kod bir kopya ctr, aşırı yük atama operatörü veya bir yıkıcı gerekiyorsa, bunların üçü gerektiğini biliyorum. Bana öyle geliyor ki, programlama argoda yeteneklerinizi test etmek yerine sevimsiz bir trivia olan bir röportaj, şirket hakkında kötü bir şey söylüyor.

1
Ve aynı şekilde, birden fazla miras ve özyineleme hakkında sorarlarsa, kod tabanlarının büyük bir karmaşa olduğunu varsayarım. Tüm yaygın sıralama algoritmalarını mavi dışında bilmenizi, özyineleme açma, nesne serileştirme vb. Geliştiricilerinin robotlara ulaşmasını beklemiyorlar mı? Gerçek dünyada, bunları kullanmadan önce böyle şeylere bakıyorsunuz. Tüm bu şeylerin arkasındaki teoriyi bilsem bile, sadece bir şeyden ziyade en uygun çözümü kullandığımdan emin olmak için onları ararım-böylece kendimle geldim.

@Lundin: İpeksi isimleri bilmenize gerek yok, ancak prensipleri bilmeniz gerekiyor, burada bahsetmek, aramayı kolaylaştırıyor. Sıralama algoritmalarını bilmeniz gerekir, çünkü hangisini ve ne zaman (ve daha da önemlisi neden) kullanacağınızı bilmeniz gerekir (robotların yapamayacağı şeyler, ancak insanlar çok iyi yapar).
Martin York

Özyineleme veya çoklu kalıtımla ilgili yanlış bir şey yoktur. Sorun geliştiriciler üzerinde kullanmak (ve yanlış yapmak) ile. Bazı sorunlar yalnızca özyineleme (yalnızca bir ağaç yapısı derinliğini ayrıştırma) kullanılarak çözülebilir (kolayca).
Martin York


-1

Son röportajıma girdim:

Bir nesneyi bir işleve değer / başvuru / işaretçi ile geçirme ile bunu nerede ve neden yapacağınız arasındaki fark.

RGBA'nın RGAB gibi bir tamsayının son 8 bitini değiştirin.

RIAA nedir?

Şablon meta programlamayı tanımlayın: "TMP ile bu sorunu çöz" şeklinde bir soru alabilirsiniz.

Değişken, uçucu, const vs vs ne anlama geliyor? tüm anahtar kelimeleri bilir.

çoklu kalıtım .... tekrar tekrar.

Çoklu iş parçacığı oluşturma: Üretici tüketici ve arabelleğe alınmış paylaşılan bellek nesneleri.

Birkaç çevre sorusu daha:

UML toplama ve birleştirme

Tasarım örüntüleri: tekil bir uygulama ... MVC'nin ortak bileşenleri nelerdir?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.