C # deneyimi C ++ 'a iyi tercüme eder mi? [kapalı]


13

Okuldaki programlama derslerim C ++ idi, ancak son birkaç yıldır C # yaparak bir işte çalıştım. C ++ 'da 1 ya da 2 yıl deneyim gerektiren bir pozisyon olsaydı, C #' daki deneyimim dikkate değer mi? Böyle bir pozisyonda ne kadar etkili olabilirim? Peki, gerekli deneyimi kazanmak için giriş seviyesi bir C ++ programcısı olarak başlamam gerekiyor mu?


4
En zor yanı, C ++ deyimlerini ve bir şeyler yapmanın "doğru" yolunu öğrenmektir. C # 'da, bellek yönetimi ve sınır kontrolü gibi şeyler dile ve çerçeveye dönüştürülür. C ++ 'da kendinizi ayağınızdan vurmanın daha birçok yolu vardır.
Robert Harvey

1
@RobertHarvey: Sadece akıllı işaretçileri hiç duymadıysanız. Veya kaplar.
DeadMG

11
@DeadMG: Bununla ne demek istediğini bilmiyorum. Onları duymuş olsanız bile, onları hala öğrenmelisiniz.
Robert Harvey

2
Etkili C ++ serisi, etkili C # serisinden çok daha fazla zihin bükme.
Meslek

@Robert: Kapsayıcılar ve akıllı işaretçiler yaparsanız, o zaman bir bellek yalamasını yönetmeniz gerekmez. Ve bunları öğrenmek C ++ 101'dir.
DeadMG

Yanıtlar:


13

Buradaki sorun, C ++ ve C # 'ın temelde birçok soruna farklı yaklaşımlarla son derece farklı diller olmasıdır. Onları "OO dili" olarak toplamak kolaydır, ancak basit gerçek şu ki, birçok C # deyimi C ++ 'da çok kötü bir kod olarak kabul edilir (ya da tam tersi).

Aslında farklılıkları ve C ++ deyimlerinin nasıl göründüğünü biliyorsanız, o zaman iyi olmaması için hiçbir neden göremiyorum.


5

Yaklaşık 2 yıl önce aynı gemideydim. C ++ deneyiminiz c ++ işi ac # işi kadar büyük olasılıkla c ++ işi için değmez. Bununla birlikte, c # gerçekten nasıl çalıştığını biliyorsanız (çok az c # programcı aslında yapar) ve c ++ öğenizi iyi öğrendiyseniz, o zaman c ++ sorun olmayacaktır. Sorun ne olacak c ++ için çok yüksek düzeyde olacak bazı tasarım desenleri alışmış yoludur.

Örneğin, güzel ADO.NET veri erişim modelinden mysql erişimi için cppcon kullanmaya, System.Collections.Generic, yıkıcılarda hafızanızı temizlemek için stl, çoklu kalıtım, çöp toplama kullanmaya kadar ... tüm eğilimler zor geçişler olmak. C ++ sorun değil, kütüphaneleri, tasarım modellerini ve bunları nasıl kullanacağınızı öğrenmek zor. Çoğu işveren bunun farkında değil. Temel tasarım yapabilir ve c ++ 'ın gerçek olarak kullanılan özelliklerini kullanabiliyorsanız röportajda iyi olmalısınız.

Ancak, işe hazır farklı bir hikaye. Bu eğlenceli bir mücadeledir, umarım her şey yolunda gider.


Gördüğüm tüm C ++ işleri C ++ 'da 2-3 yıllık bir deneyim istiyor ama benimki C #. Bu benim için gerçekten sinir bozucu, C ++ yapmak istiyorum! İşe alım konusunda haklısın, beni vurdular. Kimse denememe izin vermezse bu deneyimi nasıl yaşayabilirim? Birisi beni kapıdan içeri alırsa çabucak öğrenebileceğimden eminim ki bu konuda onlara nasıl ulaşabileceğimi bilmiyorum.
MetaGuru

Mevcut işimde bir c ++ projesine atladım. Muhtemelen en iyi bahsiniz budur. Veya, her zaman c ++ 'da açık kaynaklı bir proje alabilirsiniz.
Jonathan Henson

@Ryan Jonathan'ın dediği gibi, C ++ ile deneyim kazanmanın birçok yolu var. Nerede olduğumu en azından, deneyime sahip olduğunuzu kanıtlamalısınız (popüler ifade yerine; 1 yıllık deneyimi beş kez). Bu her iki şekilde de işe yarar - çok "kağıt" deneyimi olmayan biri de kendisini kanıtlama şansına sahip olabilir. Sadece denemeden önce aslında C ++ bildiğinizden emin olun!
Maksimum

3

Her işveren için konuşamıyorum ama kişisel olarak programlama becerisi ve dil özellikleri için hoş bir şey olarak görüyorum. Ana yeteneğiniz olmayan başka bir programlama işine katılmak hala mümkün.

Onun çok çok olası olduğunu söyledikten sonra ben onları işe dil kesinlikle hiçbir deneyimi olmayan birini işe. Birkaç hafta sonunu öğrenerek geçirin ve özgeçmişinizi güçlendirmek için birkaç evcil hayvan projesine sahip olun. Küçük olanlar bile öğrenme ve istekli olduğunuzu kanıtlar.


3

Sen de 4 yıl önce olduğum durumun aynısın.

Çalışmalarım sırasında biraz C ++ yaptım, ama bundan nefret ettim. Boş zamanlarımda çok fazla web geliştiricisi yaptım ve bu alanda iş buldum.

Taşındığımda 2 yıl C ++ deneyimi olan bir C ++ işi için başvuruda bulundum. Röportajdan önce C ++ anılarımı yeniledim ve testler için zaman geldiğinde birkaç şeyden kaçmayı başardım, doğru yaptığımdan emin değildim.

Ancak röportajın çoğu problem çözme ve yaratıcı çözümlerle ilgiliydi ve C ++ sadece küçük bir faktör haline geldi.

Dolayısıyla, şans gerçekten işverene ve sahip oldukları pozisyonlara bağlıdır.

Eğer bir işe alım ajansından geçiyorsanız, profilinize uymadığı söylenebilir. Ancak gerçek bir işverenle, ihtiyaç duydukları şeyi gerçekten bildikleri için şansınız çok daha iyidir.


1
sanal bir yıkıcının ne olduğunu bildiğinizden emin olun, böylece telefon ekranını geçebilirsiniz.
Kevin

2
Diğerleri söylediler C ++ bellek yönetimi birkaç temel hatırlamak emin olun. Temel fark budur. Aksi takdirde kütüphaneler ve çerçeveler ile ilgili Çoğu (büyük) şirketin kendi kütüphaneleri ve ambalajları vardır, bu yüzden uygulamalarını bilmenizi beklemezler. Yüksek seviyeli kütüphanelerin çoğunun .net çerçevesine desteklendiği C # 'a göre şart ve pozisyonla ilgili bir dizi kütüphaneyi bilmek olacaktır.
Coyote

Yani işi aldın mı? Gerçekten C ++ yapmaya geçmek istiyorum ama belgelenmiş deneyim eksikliği kapıları kapatmak, aksi takdirde nasıl inşa emin değilim.
MetaGuru

Evet ... Orada 3 yıl çalıştım. Harika bir deneyimdi ... ama ilk birkaç ayda C ++ özellikleriyle bir şeyler yapmak zorunda kaldım.
Coyote

1

Değişir. Eğer işaretçiler ve benzeri bazı temel görüşme soruları cevaplayabilirseniz, o zaman iyi olmalısınız.

C ++ şablonları ve .NET jenerikleri arasındaki farkları listeleyebiliyorsanız da yararlıdır.

Bunun dışında, devam ederken geri kalanlara yetişmek oldukça kolaydır.


1

Evet. C ++ deneyimi kadar alakalı olmayabilir, ancak iyidir.

İyi işverenler, kaç yıldır belirli bir diliniz olduğundan daha fazla düşündüğünüzle ilgilenecektir .

Giriş seviyesi bir C ++ pozisyonu iyi: hızlı bir şekilde öğrenebilir ve harika bir iş yapabilirsiniz. İyi bir şirket size büyümek için bolca fırsat verecektir. Değilse başka bir yere gidebilir ve hem C # ve C ++ deneyimine sahip olabilirsiniz.


0

Gerçekten başvurduğunuz işletmenin doğasına bağlıdır. İyi OO tabanlı programlama ve mimari becerilerine sahip birini arıyorlarsa, C # muhtemelen bir sonraki şey kadar iyidir.

Yazılımlarının hız / yanıt verebilirliğiyle gurur duyuyorlarsa, bu durumda mikro optimizasyonlardan daha önemli olan algoritmalarınızı bilmeniz gerekir - Karma Tablolar ve Doğrusal arama vb. performans özelliklerinin anlaşıldığını göstermek için - örneğin herkes ngen.exe'yi bilmiyor.

Yerleşik / mobil ve / veya çöp toplamayan bir ortama girdiyse, belleği etkili bir şekilde nasıl yöneteceğinizi bilmeniz gerekir. @DeadMG'nin belirttiği gibi Akıllı İşaretçiler burada anahtardır, ancak bellek ayırma profilini anlamak da önemlidir. Oyun programcıları, genellikle bellek gereksinimlerini önceden bilmek ve kare başına bilinmeyenleri azaltmak için büyük nesne dizilerini önceden ayırır ve geri dönüştürür. Bu aynı zamanda iOS'taki TableView'ları kaydırmada kullanılan tekniktir.

Herhangi bir entegrasyon çalışması varsa, diller (P / Invoke gibi) arasında veri toplama konusunda C düzeyinde uzmanlığa ihtiyacınız vardır, ancak bu veri yapılarının nasıl kullanılabileceğinin bayt düzeyinde anlaşılmasına da ihtiyacınız vardır; Deneyimlerime göre C #.

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.