C ++ mülakatının kilit noktaları, bir C ++ pozisyonuna başvurmak istiyorsanız, önce testi geçip geçemeyeceğinizi görün!

Programlamanın temel kavramları

1. int i = 1;

void main () {

inti = i; // i tanımlanmamış bir değerdir

}

2. Tür dönüştürme

C ++, yerleşik tip nesneler arasında bir dizi standart tuğla dönüşümünü tanımlar:

  • Bir işlenenin türü uzun double ise, diğer işlenen long double türüne dönüştürülür.
  • Hiçbiri uzun double değilse, biri double, diğeri double türüne dönüştürülür
  • Aynı şekilde, biri float, diğerleri float'a dönüştürülür.
  • İki işlenen üç kayan nokta türünden biri değilse, bir tür tamsayı değer türü olmalıdır Ortak hedef yükseltme türünü belirlemeden önce, derleyici, int'den daha küçük tüm tam sayı değer türlerine bir ad yükleyecektir. Bütünsel değer yükseltme süreci.

3. Operatör sorunu

1) işaretsiz karakter a = 0xA5;

unsignedchar b = ~ a > > 4 + 1;

cout < < b; // Sonuç 250, çünkü kayıt 16 bit

2) Bir X sayısının 2N'nin üssü olup olmadığını belirlemek için bir ifade kullanın, döngüler kullanılamaz

! (X (X-1))

3) Aşağıdaki kod:

dönüş (xy) + ((x ^ y) > > 1) (729.271) = 500

4) İki sayının daha büyük değerini bulun, aşağıdaki gibi yargılama ifadelerini kullanmadan

int max = ((a + b) + abs (a-b)) / 2

5) Herhangi bir ara değişken olmadan iki değer nasıl değiştirilir

a = a ^ b; b = a ^ b; a = a ^ b;

4. C ve C ++ arasındaki ilişki

1) Bir C ++ programında C derleyicisi tarafından derlenen bir işlevi çağırırken, neden extern "C" ekleyin

C ++, ad eşleştirme sorununu çözmek için C bağlantı değişiminde belirtilen sembolleri sağlar

2 ) Başlık dosyasında Ifndef / define / endif

Başlık dosyasının tekrar tekrar alıntılanmasını önleyin

Ön işleme, const ve sizeof

1. Makro tanımı

1) Yapı yapısına göre bir yapı yapısındaki bir değişkenin ofsetini bulmak için FIND'ı tanımlamak için bir makro kullanın:

#defineFIND (struc, e) (size_t) (((struc *) 0) - > e

İşaretçiler ve referanslar

1, A sınıfı {public: int a; A () {a = 1;} void print () {cout < < a;};

B sınıfı: genel A {genel: int a; B () {a = 2;}};

B b; b. Baskı (); cout < < b.a; // Sonuç 12

2. İşlev göstergesi

1) float (** def) def ikincil bir göstericidir, tek boyutlu bir diziye bir işaretçiye işaret eder ve dizi öğesi bir kayan nokta

2) çift * (* gh) gh bir göstericidir, tek boyutlu bir diziyi gösterir, dizi elemanlarının hepsi çifttir *

3) çift (* f) () Bir dizi işlev işaretçisi, f bir dizidir ve öğeler işlevlere işaretçilerdir

4) int * ((* b)) Tek boyutlu diziye işaretçi

5) Uzun (* eğlenceli) (int) İşlev işaretçisi

6) Int (* (* F) (int, int)) (int) F bir işlev göstericisidir, işaret edilen işlevin türü iki int parametresi olan ve bir işlev işaretçisi döndüren bir işlevdir ve döndürülen işlev işaretçisi, int parametresi olan bir işlevi işaret eder ve bir int döndürür

7) int (* ptr) Tamsayı dizisine işaretçi

8) int * ptr İşaretçi dizisi

9) int (* a) (int) 10 işaretçiye sahip bir dizi, işaretçi bir işlevi gösterir, işlevin bir tamsayı parametresi vardır ve bir tamsayı değeri döndürür

3. İşaretçi dizisi ve dizi işaretçisi

1) int a = {1,2,3,4,5}

int * ptr = (int *) (a + 1) // a + 1 dizinin arkasını işaret eder

cout < < * (ptr-1); // Çıktı 5

2) Malloc / free ile C ++ 'da, neden yeni / silmeye ihtiyacımız var?

Dahili olmayan veri türlerinin nesneleri için, malloc / free tek başına dinamik nesnelerin gereksinimlerini karşılayamaz. Nesne, oluşturulduğunda kurucuyu otomatik olarak yürütmelidir ve nesne ölmeden önce yıkıcıyı otomatik olarak yürütmelidir. Malloc / free bir operatörden ziyade bir kütüphane işlevi olduğundan, derleyicinin kontrolü dahilinde değildir ve kurucuyu ve yıkıcıyı yürütme görevi malloc / free üzerine empoze edilemez. Bu nedenle, C ++ dili, dinamik bellek ayırma ve başlatmayı tamamlayabilen yeni bir operatöre ve hafızanın temizlenmesini ve serbest bırakılmasını tamamlayabilen bir operatör silme işlemine ihtiyaç duyar. Yeni ve silme, kitaplık işlevleri değil, operatörlerdir

4. İşaretçiler ve tutamaçlar

1) Tutamak ve işaretçi arasındaki fark ve bağlantı nedir?

Tutamaç, işaretçi için bir işaretçidir

Sap ve işaretçi aslında tamamen farklı iki kavramdır. Windows sistemi, sistem bilgilerini gizlemek için sistem kaynaklarını tutamaçlarla işaretler. Sadece bu şeyin olduğunu bilmeniz ve sonra onu çağırmanız gerekir, bu 32 bitlik bir birimdir. İşaretçi fiziksel bir bellek adresini işaretler, ikisi farklı kavramlardır

STL şablonu ve kapsayıcı

1. Genel programlama

1) Genel programlama nedir?

STL, tutarlı bir şekilde programlamanın mümkün olduğu anlamına gelir. C ++ ile programlamaya çalışmak değil, yazılımla başa çıkmanın doğru bir yolunu bulmaya, fikirlerimizi ifade edebilecek bir dil bulmaya çalışmaktır. Genel programlama, verimli bir algoritmanın en soyut temsilini keşfetmeye, yani algoritmadan başlayarak ve verimli çalışmasını sağlayacak en genel gerekli koşullar kümesini bulmaya dayanan bir programlama yöntemidir ve bu gerekli koşulların birçok türü vardır. Farklı uygulamalar.

Kalıtım ve arayüz

1. Aşağıdaki kodun çıktısı nedir?

sınıfA {korumalı: int m_data; genel: A (intdata = 0) {m_data = veri;

intGetData () {return doGetData ();} sanal int doGetData () {return m_data;}};

sınıf B: genel A {korumalı: int m_data; genel: B (int veri = 1) {m_data = veri;

intdoGetData () {dönüş m_data;}};

classC: public B {korumalı: int m_data; public: C (int data = 2) {m_data = data;}}

c.GetData () - C tanımlı değil, B çağrısı, B tanımsız, A çağrısı. A sanaldır, B'yi ara

c.A :: GetData () -A sanal, C tanımlı değil, B'yi ara

c.A :: doGetData () -Doğrudan A'yı arayın

2. Üç kalıtım yöntemi

Kamu mirası: Temel sınıfın public ve korumalı üyeleri görünürdür.Temel sınıfın public ve korumalı üyeleri türetilmiş bir sınıfın üyeleri olduğunda, orijinal durumlarında kalırlar; temel sınıfın özel üyeleri görünmezdir ve temel sınıfın özel üyeleri hala özeldir. . Genel kalıtımda, türetilmiş sınıfın nesneleri temel sınıftaki genel üyelere erişebilir ve türetilmiş sınıfın üye işlevleri, temel sınıfın genel üyelerine ve korumalı üyelerine erişebilir.

Özel miras: Temel sınıfın ortak üyeleri ve korumalı üyeleri, türetilmiş sınıfın özel üyeleri olarak kabul edilir ve bu türetilmiş sınıfın alt sınıfları tarafından erişilemez.

Mirası koruyun: Temel sınıfın genel üyeleri ve korumalı üyeleri, türetilmiş sınıfın korumalı üyeleridir.

misal: sınıf Üst {genel: Üst (intvar = -1) {m_nPub = var; m_nptd = var; m_nptr = var;}

public: int m_nPub; korumalı: int m_nptd; özel: int m_nPtr;};

classChild1: public Üst {genel: int GetPub () {dönüş m_nPub;};

int GetPtd () {dönüş m_nPtd;}; int GetPtr () {dönüş m_nPtr; };};

classChild2: korumalı Üst {public: int GetPub () {return m_nPub;};

int GetPtd () {dönüş m_nPtd;}; int GetPtr () {dönüş m_nPtr; };};

classChild3: özel Üst {genel: int GetPub () {dönüş m_nPub;};

int GetPtd () {dönüş m_nPtd;}; int GetPtr () {dönüş m_nPtr; };};

Child1cd1; Child2 cd2; Child3 cd3; int nVar = 0;

cd1.m_nPub = nVar;

cd1.m_nPub = nVar; // Üst sınıf, genel miras alınan türetilmiş sınıf nesneleri tarafından erişilebilen ancak değiştirilemeyen değişkenleri korur

nVar = cd1.GetPtd ();

cd2.m_nPub = nVar; / / Miras alınan türetilmiş sınıf nesnelerini koru, üst sınıfın genel değişkenlerini doğrudan değiştiremez

nVar = cd2.GetPtd ();

cd3.m_nPub = nVar;

nVar = cd3.GetPtd (); // Özel olarak miras alınan türetilmiş sınıf nesneleri, işlevler aracılığıyla üst sınıfın korumalı değişkenlerine erişebilir

Bit işlemi ve gömülü programlama

1. Bir konsorsiyum kurmak için yürütülen programın sonucu nedir?

birlik {karakter a; int i;} u; u.i = 0xf0f1f2f3;

cout < < altıgen < < u.i; // f0f1f2f3

cout < < altıgen < < int (u.a); // F3 belleğindeki düşük veri baytı düşük adreste saklanır ve verilerin adresi düşük adresle temsil edilir.

2. Programın sonuçlarını yazın

int * pa = NULL; int * pb = pa + 15;

printf ("% x", pb); // 15 * 4 = 60, 60'ın onaltılık sonucu 3C'dir

3. Gömülü programlama

Kesinti servis rutini (ISR): ISR bir değeri tersine çeviremez; ISR parametreleri iletemez; ISR kısa ve verimli olmalıdır. ISR'de kayan nokta işlemleri yapmak akıllıca değildir; printf () genellikle ISR'de kullanılmaz.

4. Uçucu anahtar kelimesinin anlamı nedir? Bir parametre hem sabit hem de değişken olabilir mi? İşaretçiler değişken olabilir mi?

Uçucu olarak tanımlanan bir değişken, değişkenin beklenmedik bir şekilde değiştirilebileceği anlamına gelir.Bu şekilde, derleyici bu değişkenin değerini üstlenmez.Eniyileyici, değişkeni her kullanıldığında dikkatlice yeniden okumalıdır. Kayıt defterinde depolanan yedeği kullanmak yerine.

Hem sabit hem de uçucu olabilir, bir örnek salt okunur bir kayıttır

Bir işaretçi olabilir.Bir örnek, bir terminal hizmeti alt yordamının bir işaretçiyi arabelleğe değiştirmesidir.

5. Mutlak bir adres değeri ayarlayın

Int * ptr; ptr = (int *) 0x67a9; * ptr = 0xaa55;

6. işaretsiz int compzero = 0xFFFF; // Bu yanlış, işaretsiz int compzero = ~ 0 olarak değiştirilmelidir;

7. char * ptr; if ((ptr = (char *) malloc (0)) == NULL) cout < < "Null"; else cout < < "Geçerli"; //Geçerli

8. Little-endian sisteminde, bu C programının sonucu nedir?

structbitstruct {int b1: 5; int: 2; int b2: 2;} bit yapısı;

bitstructb; memcpy (b, "EMC İNCELEME", sizeof (b)); cout < < b.b1 < < b.b2;

E ve M'nin ASCII değerleri 0x45 ve 0x4D, 1010001010110010, bit yapısı 9 bit ve bellekteki b şu şekildedir: 101000101, b15 bit kaplar: 10100, orta iki bit 01'i atlar. Sonuç 5 ve- 2

Tasarım modelleri ve yazılım testi

1. Tasarım desenleri açısından tavuğu veya yumurtayı tanımlayın.

Tavuk mu yumurtanın mı olduğu sorusu, sadece nesne yönelimli olmanın doğasına dair bir anlayıştır ve burada anlamak için insanın doğal dilini koymak uygun değildir. Büyük bir tavuk ve yumurta sorunu yoktur, ancak tür ve değer sorunu ve işaretçi referansı sorunu, çünkü tavuk ve yumurta arasındaki ilişki bir sınırlama ilişkisinden çok bir referans ilişkisidir.

2. Boya kalemleri ve fırçalar arasındaki farkı tanımlamak için tasarım desenlerini kullanın

Bu bir Köprü modudur. Bir resim için 36 farklı modelden boya kalemi hazırlamanız gerekir ve 3 fırça kalemi yeterlidir. Bu mod sayesinde, çarpma toplamaya dönüştürülebilir. Bu modelin amacı, ikisinin bağımsız olarak değiştirilebilmesi için, soyutlamanın ve taze çiçeklerin köklerinden kurtulmaktır. Köprü modu, miras ilişkisini bir kombinasyon ilişkisine dönüştürür, böylece sistemler arasındaki bağlantıyı azaltır.

3. Gözlemci modu

Gözlemci modeli, birden çok gözlemci nesnesinin yardım için belirli bir konuyu eşzamanlı olarak izlemesine izin veren bire çok bağımlılık ilişkisini tanımlar. Bu yardımcı nesnenin durumu değiştiğinde, tüm gözlemci nesnelere kendilerini otomatik olarak güncelleyebilmeleri için bildirimde bulunacaktır.

4. Yazılım testi

  • Testin sonu için bir kriter tanımlayın: Gönderilen tüm hataların çözülüp doğrulanmadığını ve kapatılıp kapatılmadığını kontrol etmek için bir test bitiş kriteri kullanılabilir.Genel olarak, hata doğrulama oranı% 95'in üzerindedir ve işlevi etkileyen çözülmemiş hatalar test edilip geçilebilir.
  • Bir test planına neler dahil edilebilir

Test edilecek ürünün özelliklerini ve ana fonksiyonel modüllerini içerebilir, test edilmesi gereken fonksiyonel noktaları listeleyebilir ve odağı gösterebilir; test stratejileri ve kayıtları; test kaynak tahsisi.

  • Fonksiyonel test ile kullanılabilirlik testi arasındaki farkı tanımlayın

İşlevsel test, temel olarak, ürünün talep tasarımının gerekliliklerini karşılayıp karşılamadığını doğrulamak için test uzmanları tarafından gerçekleştirilen bir kara kutu testidir; kullanılabilirlik testi, temel olarak, kullanışlılık ve verimlilik dahil olmak üzere ürünün kullanılabilirliğini test etmek için kullanıcılar tarafından yapılan bir testtir. Ve kullanıcı öznel memnuniyeti. Bunların arasında etkinlik, kullanıcıların belirli görevleri tamamlarken ve belirli hedeflere ulaşırken sahip oldukları doğruluk ve eksiksizliği ifade eder; verimlilik, görevleri tamamlarken kullanıcılar tarafından kullanılan kaynakların doğruluğu ve eksiksizliği arasındaki oranı ifade eder; memnuniyet, kullanıcının ürünü kullanma sürecindeki deneyimini ifade eder. Öznel memnuniyet ve kabul

  • Beyaz kutu testi Test yöntemleri arasında kod inceleme yöntemi, statik yapı analizi yöntemi, statik kalite ölçüm yöntemi, mantık kapsama yöntemi, temel yol test yöntemi vb. Bulunmaktadır.
  • Temel yol testi yönteminin adımları: Programın kontrol akış diyagramını çizin; programın döngü karmaşıklığını hesaplayın; test senaryolarını dışa aktarın; temel yol kümesindeki her yolun yürütülmesini sağlamak için test senaryoları hazırlayın
"TFBOYS" "Haberler" 190319 İlkbaharda hafif bir esinti gönderen, kaplan dişli çocuk Wang Junkai'nin gülümsemelerinden oluşan bir koleksiyon
önceki
"Ruyi'nin Saraydaki Kraliyet Sevgisi": Li Guangjie, Lei Jiayin'i Jia Fei'nin en sevdiği adam olarak yendi, nedeni şaşırtıcı.
Sonraki
Zoomlion'un dünyanın en büyük akıllı kule vinç fabrikası resmen Changde'de açıldı
190319 Tiger Tooth Boy Wang Junkai'nin Gülümseme Koleksiyonu İlkbaharda Hafif Bir Rüzgar Gönderiyor
Çin Süper Lig Önizlemesi: TEDA Sky "Tianjin Derbisi" Gerçekleştirdi, Guoan Hengda En İyi Mücadelesi
Ella, SHE'nin oluşumunun 17. yıldönümünde en çok değişti. "Tomboy" artık "Yüce Anne" mi?
190319 Eski kostüm erkek kahraman Wang Junkai bir yeşim taşı kadar güzel
"Yeni Maymun Kralın Efsanesi" Çarpık Kuruyemişlerin gözünde Çin'in Batısına ve İkinciye Yolculuk oldukça etkileyici
Bir araba kalbinizi anlar, yeni Lexus ES 200'ün gerçek çekim analizi
Gaofan Kupası "Walking China" Ulusal Fotoğraf Etkinlikleri Serileri Başladı
Başrolünde Zheng Shuang'ın oynadığı TV dizisinin kahramanının prototipi vefat etti ve üçüncü genç Tang ailesi karısını özledi: beni yanına al
190319 Yi Xiaotu ve Yi Zilang, kim daha iyi?
Dört büyük lig BP listesi: Jess popüler LPL, Vayne'yi tercih ediyor
Anneler Günü burada.Amerikan dizilerindeki annelerin hangi görüntüleri sizi etkiliyor?
To Top