Time Critical Coding in C/C++

Bowman

Aktif Üye
Katılım
7 Ekim 2022
Mesajlar
112
Bir iş ilanına başvurmuştum ve geri dönüş yaptılar görüşmek istiyorlar. İş ilanında şöyle bir madde var
  • Experience in developing optimized and time critical code in C/C+
Time critical coding burada tam olarak ne anlama geliyor? ChatGPT ve Bard gibi AI botlara sordum ama tam tatmin edecek cevap alamadım. Daha önce de böyle bir şey üzerinde çalışmadım.

Beni iş görüşmesinde ne bekliyor ? :katil1:
 
Benim için kritik kod anlamı yazdığın software ile tüm sistem durup başlayabilir konumda olması başka da kritik nokta düşünemiyorum
 
Time critical demek, kodun işleyişi ile ilgili kesin olarak belirlenmiş zaman sınırlarının olduğu. Yani programın girdisi ne olursa olsun, sistemin çalışma modu ne olursa olsun, yazılımın belli aşamaları belli sürelerde geçiyor olması gerekiyor.

Buradan çıkaracağın anlam, yazılım bu garantileri veremezse birileri ölecek veya çok büyük maddi kayıp oluşacak değil. Böyle yazılımlara "mission critical" deniyor. Çıkarman gereken anlam, bu zamanlama ile ilgili garantiler sağlanmazsa, sistem müşteriyi tatmin edecek performansı gösteremeyecektir.

Mesela bir ses kaydedicisi düşün. 48 kHz örnekleme hızı ile ses kaydı yapıyor. Burada çalışan yazılımın, saniyede 48000 defa, tam olarak aynı zaman aralıkları ile ADC den örnek okuması lazım. Eğer okuyamazsa, kaydedilen seste bozulmalar olacaktır ve o ürünü kimse satın almak istemeyecektir.
 
Daha önce bu tarz bir çalışma yapmadım. Kodun belli aşamalarının belli zamanlarda kesin gerçekleşmesi gibi şeyler yapmadım. İş görüşmesinde bununla ilgili bir soru gelirse ne tarz bir cevap vermeliyim sizce?
 
Eger ise alim yapacak firmanin calisma konulari tamamen "time critical" agirlikli ise o ise giremezsin.
 
Eger ise alim yapacak firmanin calisma konulari tamamen "time critical" agirlikli ise o ise giremezsin.
Artık işe alımda aldık yada almadık olmuyor ya o sanırım eskidendi.
Eğer sen bilmiyorsun ama sende onu yapacak ışığı görüyorsa seni yine de alıyorlar işe 1 ay 2 ay bakıyorlar olursa senden en ala olmazssa görüşürüz diyorlar.

İş verenin çaresizliği aslında işi bilen işe hakim adam arayarak başlıyorlar bulamadıkça çıta düşmeye başlıyor çıtanın düştüğü yeri denk getirirsen şanslısın.
 
Daha önce bu tarz bir çalışma yapmadım. Kodun belli aşamalarının belli zamanlarda kesin gerçekleşmesi gibi şeyler yapmadım. İş görüşmesinde bununla ilgili bir soru gelirse ne tarz bir cevap vermeliyim sizce?

İş verene kesinlikle yalan bilgi vermemen lazım. "Biliyorum" deyip sonra da hızlı bir şekilde öğrenmeye çalışmak mantıklı bir yaklaşım olmaz. Senin yöneticin veya mentorun durumundaki mühendis durumu hemen anlar, sana olan güven ortadan kalkar ve işin biter. Eğer time critical kod yazma konusunda kendini hızlı bir şekilde geliştirebileceğine inanıyorsan, tecrübeli olduğun konuları anlattıktan sonra, time critical kod konusuna ilgi duyduğunu ve kısa zamanda öğrenebileceğini ifade et.

Bu arada bu tip firmware geliştirirken dijital elektronik ve osiloskop, lojik analiz ve benzeri test cihazlarını da kullanabiliyor olman lazım. Onları da tedarik edip öğrenmeye başla.
 
Daha türkçesi şu, yazdığın kod hızlı çalışacak . Mesela bir kod yazarsın bir işi 1ms de yapar yada keyfekeder yazarsın aynı işi 10sn de bitiremez.

Bir örnek vermek gerekirse bir stm32 mcu ile vga ekran sürmek ki 72mhz gayet hızlı , ama c/c++ geçtim asm kod yazmadan başaramazsın yada spi/dma kullanacaksın bunları kullansan da ekran horiz ,vert sinyalleri zamanı tutturabilmen için gayet optimize ve hızlı çalışan c/c++ kodu yazman gerekir.

Yani optimize kod yazabiliyorsan işe girebilirsin extra bir şeye gerek yok ,İş pc mi yoksa gömülü mü.
 
Evet assembly programlamayı da az çok bilmek gerekiyor. C de yazmış olduğun bir programın ne şekilde assembly ye dönüştürüldüğünü bilmezsen hızlı çalışan C kodu yazamazsın.
 
Herkese görüşleri için teşekkürler. Sanırım en mantıklı olan yaptığım işleri, tecrübemi vs. en açık şekilde anlatıp bu konuyu da hızlı bir şekilde öğrenmeye istekliyim gibi bir yol izlemek. Umarım başarılı olur :)
 
Küçük bir güncelleme geçeyim istedim. Görüşmeyi geçen salı günü yaptım ve bugün bana teknik test attılar. Test 11 sorudan oluşuyordu ve genelde C/C++ bilgisi barındırıyordu. Şöyle bir kaç soruyu fikir versin diye paylaşayım istedim.

  • Statik değişkenler header dosyalarında tanımlanabilir mi? Eğer birkaç farklı source dosyaları bu header dosyasına eriştiğinde ne olur?
  • Bir fonksiyon içerisinde hafıza allocate eden bir kod yaz ve base adres döndür. Malloc ve new kullanma.
  • Statik fonksiyonlar ne işe yarar. Kullanışlı olduğu bir senaryo söyle.
Bunlar hatırlayabildiğim sözel sorulardı. Genelde kod okumayı iyi yapmayı gerektiren sorular vardı. Bir de şunu hatırlıyorum.

C:
int main()
{
    int a = 320;
    char* ptr;
    
    ptr = (char*)&a;
    
    printf("%d",*ptr);
}

Yukarıdaki kod ne döndürür.

C:
char* ptr = "ahmet";

int main()
{
    *ptr = 'T';
    
    printf("\n [%s] \n ",ptr);
}

Yukarıdaki kod gömülü sistemde neden çökmeye sebebiyet verebilir?
 
Güzel sorular sormuşlar. Soranın konuyu derinlemesine bildiği anlaşılıyor. Bu şirkette çalışmaya değer ve sana birşeyler katar.
 
Ben çalıştığım işletmede her ay kıdem sınavına giriyorum hep böyle soruyorlar 10 sorudan 1 2 tane doğru yapabildiğim için daha zam alamadım
:katil1:
 
Ben çalıştığım işletmede her ay kıdem sınavına giriyorum hep böyle soruyorlar 10 sorudan 1 2 tane doğru yapabildiğim için daha zam alamadım
:katil1:

Bu ay şanslı ayın. Kıdem sınavına ilave olarak yukarıdaki sorular da soruldu. Hadi bakalım :)
 
Sadece sonuç yazma. Tüm sorular için bir paragrafta açıklama yap. Mesela o senin irdelediğin ilk sorunun cevabı aslında kullanılan işlemci mimarisine bağlı, o yüzden vereceğin ekran çıktısı sadece x86_64 mimarisine özgü bir cevap olur. O sorunun belli bir mimariye göre sorulması lazımdı. Bu şekilde olan daha başka sorular da var o soruların arasında, o yüzden açıklaman lazım olan biteni.
 
Sadece sonuç yazma. Tüm sorular için bir paragrafta açıklama yap. Mesela o senin irdelediğin ilk sorunun cevabı aslında kullanılan işlemci mimarisine bağlı, o yüzden vereceğin ekran çıktısı sadece x86_64 mimarisine özgü bir cevap olur. O sorunun belli bir mimariye göre sorulması lazımdı. Bu şekilde olan başka soru da var o soruların arasında, o yüzden açıklaman lazım olan biteni.
Anlamışım olan biteni anlatamadım mı? yoksa hepten saçmaladım mı?
Diğer soru char ile pointer yapılmış ondan hiçbirşey anlamdaım.
char ile içli dışlıyım bir süredir, tek anladığım çalışssa dahi çıktı "Thmet" şeklinde olacak.
 
Anlattıklarında hata yok, ama sonucu getirmedin.
 
C:
int* foo()
{
    int k = 3;
    k++;
    return &k;
}

int main()
{
    int* a = foo();
    printf("%d",*a);
}

Şimdi aklıma başka bir soru daha geldi. Ben 4 dedim halbuki adresi döndürülen k'nın local bir değer olduğunu farketmedim. Static olsaydı doğru olacaktı :(. Burada peki compiler error mu verir yoksa warning mi ?
 
İlk sorudan anladıklarımı yazayım;
int a = 320; -->a isminde değişkene 320 değerini vermiş
char* ptr; --->pointer olarak char tipinde ptr değişkeni oluşturmuş.
ptr = (char*)&a; --> burda yapılmaya çalıştığını pek anlayamadım &a ile a değişkeninin yazıldığı adresi çağırıyor ve ptr içine yazıyor.

asıl işin koptuğu kısım burası bence;
printf("%d",*ptr); %d ile ben bir int tipinde veri yazacağım sana diyip char* yazıyoruz.
Sonuç olarak benim anladığım kadarı ile mülakatı geçirene bir miktar bilgi eksik olarak verilmiş çalışılan mimari bu soruya doğrudan etkili. &a'yı okuduğumuzda 320 ile işimiz kalmıyor 320 değerinin yazıldığı hafıza adresini almış oluyoruz. printf ile yazdırdğımız ptr aslında int tipinde 320 değeri verilen değişkenin adresini çağırıyoruz her ortamda farklı değer dönecektir yüksek ihtimalle.

soru 2:

char* ptr = "ahmet"; -->pointer olarak char değişkeni içine "ahmet" değeri yazılmış.
*ptr = 'T'; --> bu satıra yorum yapmayı çok istedim fakat ne kadar düşünürsem düşüneyim bir yorum çıkaramadım.

printf("\n [%s] \n ",ptr);--> burada boşluk bırakıp ben string yazacağım diyip boşluk bırakıp char yazmış.
ama böyle sorularda genelde printf'e gelene kadar sorunu görmüş olmanız lazım printf formaliteden oluyor genelde bu sorularda.
@taydin abi 2. soruda aydınlatırsa sevnirim.
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,955
Mesajlar
118,794
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top