Şimdi Ara

Reddit, HN, Euler, DH gibi sitelerden iş görüşmesi soruları + ödev soruları (5. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
207
Cevap
17
Favori
11.876
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
6 oy
Öne Çıkar
Sayfa: önceki 34567
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • 1 dakikada 1 milyon ziyaretçi türünde problemler cok az sayıda firma ve kişiyi sadece bazı dönemlerde ilgilendirir ve sorun coğu kez cok basit fakat isabetli değişiklilerle çözülebilir. Ona bakarsan ben de sunucu işletiyorum trafiği yoğun değil fakat yine de RAM'de şişme yapıyordu, bir baktım Apache httpd 10+ proses açmış, ihtiyac kalmayınca prosesleri kapatmamış, prosesler başıboş çalışıp CPU harcıyor. Apache 'nin son sürümüne terfi edebilirdim fakat Nginx'in o konuda cok iyi old biliyordum, Apache'yi tümüyle kaldırıp Nginx'e geçtim bir daha hiç öyle sorun yaşamadım. Bu forum örneğin .NET olmasına ragmen Nginx kullanıyor, birçok yoğun trafikli site hep Nginx kullanıyor. Daha da zorlu durumlar için NodeJS kullanılıyor. Yoğun sunucu trafiği problemi artık birçok platformda çözüldü. Yani Go'nun o açıdan sorun çözmesinin o kadar büyük esprisi yok.

    Konumuz temel / orta düzeyde programlama sorularını en kısa şekilde çözmek ki buradaki amaç yeni fonksiyonel programlama tekniklerini kullanmak. Go'da bu teknikler ne kadar kullanılıyor, önemli olan bu. C++17 'ye örneğin yeni fonksiyonel özellikler eklenmiş, kullanılıyor, o sayede örneğin 1'den 10'a kadar sayıların faktöryelini C++17 ile hazır factorial fonksiyonu kullanmadan cok satır tutmayacak şekilde kodlayabilirim.

    < Bu ileti mini sürüm kullanılarak atıldı >




  • quote:

    Orijinalden alıntı: Tuğkan-0153

    1 dakikada 1 milyon ziyaretçi türünde problemler cok az sayıda firma ve kişiyi sadece bazı dönemlerde ilgilendirir ve sorun coğu kez cok basit fakat isabetli değişiklilerle çözülebilir. Ona bakarsan ben de sunucu işletiyorum trafiği yoğun değil fakat yine de RAM'de şişme yapıyordu, bir baktım Apache httpd 10+ proses açmış, ihtiyac kalmayınca prosesleri kapatmamış, prosesler başıboş çalışıp CPU harcıyor. Apache 'nin son sürümüne terfi edebilirdim fakat Nginx'in o konuda cok iyi old biliyordum, Apache'yi tümüyle kaldırıp Nginx'e geçtim bir daha hiç öyle sorun yaşamadım. Bu forum örneğin .NET olmasına ragmen Nginx kullanıyor, birçok yoğun trafikli site hep Nginx kullanıyor. Daha da zorlu durumlar için NodeJS kullanılıyor. Yoğun sunucu trafiği problemi artık birçok platformda çözüldü. Yani Go'nun o açıdan sorun çözmesinin o kadar büyük esprisi yok.

    Konumuz temel / orta düzeyde programlama sorularını en kısa şekilde çözmek ki buradaki amaç yeni fonksiyonel programlama tekniklerini kullanmak. Go'da bu teknikler ne kadar kullanılıyor, önemli olan bu. C++17 'ye örneğin yeni fonksiyonel özellikler eklenmiş, kullanılıyor, o sayede örneğin 1'den 10'a kadar sayıların faktöryelini C++17 ile hazır factorial fonksiyonu kullanmadan cok satır tutmayacak şekilde kodlayabilirim.
    Perl ile Go karşılaştırılamaz ama Go ile C++ ile karşılaştırılabilir. eğer sen C++ kodunu gönderirsen müsait zamanda bende kodlar gönderirim.




  • go ile bunu yazdırmak saniye sürmüyor. consola yazdırmak dahil yaklaşık 200 ms

    başlangıç zamanı : 2019-10-07 10:38:40.0176805
    bitiş zamanı : 2019-10-07 10:38:40.2355538

    kodu ben yazmadım. internetden hazır buldum. recursive fonksiyon kullanarak yapılmış.
    ancak recursive fonksiyon lar go da tavsiye edilmiyor.
    Iterative versiyonu yapılırsa daha da hızlanabilir
  • Kodu çalıştırma hızı değil, 1-10 arası sayıların faktöryelini hesaplayan kod ne kadar pratik, bu önemli.

    Ayrıca diyelim ki hız Go ile 200ms, C++ ile 100ms çıktı bunun önemi yok cunku önemli olan bu kodların makina koduna derlenmesi yani arada JRE veya CLR gibi ara işleyici gerekmemesi. Düşünsen ürettiğin exeyi biri bilgisayarında direkt çalıştırabilecek. Raku (eski adıyla Perl 6) ve Java 8'de ürettiğim kodu herkes direkt çalıştıramaz.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:24:20 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • 1-10 arası faktöryel hesaplamaya için cevap vermedim. 1 milyonuncu Fibonacci için cevap verdim. kod kısa değil. go burada consola yazmada sorun çıkarmadığı için bilgilendirmek istedim.
  • Kodun kendisini görmeden sadece yorumu görünce 1-10 arası faktöryel sorusu üzerine yorum sandım.

    1-10 arası sayıları, yerleşik math , faktöryel işlevi kullanmadan, fonsiyonel olarak faktöryelini hesaplayan C++17 kodu. 9 satır ve cok kasmadan 9 satır. Şimdi aynı işlemi Go ile yap, kod gönder inceleyelim ve karşılaştıralım:

    Reddit, HN, Euler, DH gibi sitelerden iş görüşmesi soruları + ödev soruları

    < Bu ileti mini sürüm kullanılarak atıldı >
  • go ile sadece 5 satır,
    kodu online test etmek için link
    https://play.golang.org/p/GnnzSvQXRHO


    Reddit, HN, Euler, DH gibi sitelerden iş görüşmesi soruları + ödev soruları



    < Bu mesaj bu kişi tarafından değiştirildi CleanCoders -- 8 Ekim 2019; 1:9:58 >




  • klasik for döngüleri kullanarak yapılacaksa C++'ta 3 satır :)

    Reddit, HN, Euler, DH gibi sitelerden iş görüşmesi soruları + ödev soruları


    Klasik for döngüsü ile yapılamayacak ve fonksiyonel programlamayı zorlayacak bir soru düşüneyim şimdi...

    Bu arada benim bilgisayarda Go compiler var; online compiler kullanmama gerek yok.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • sort veya is_sorted gibi yerleşik fonksiyon kullanmadan şu serilerin elemanlarının artan ve sadece artan (eşit rakamlar artan sayılmayacak) olduğunu kontrol eden kod yazınız.

    C++ ile 14 satırda yazdım. Perl 6 ile 2 satır, biraz kasarsam belki tek satırda yazabilirim.

     
    ./artan-seri-kontrol
    1,2,3,4, artıyor mu? 1
    1,2,3,3, artıyor mu? 0
    1,2,1,2,3, artıyor mu? 0

    < Bu ileti mini sürüm kullanılarak atıldı >
  • a=input().split(",")
    c=1
    for i in range(len(a)-2):
    c=[c,0][int(a[i ])>=int(a[i+1])]
    print(c)

    python pek kullanmam anca bu kadar.



    < Bu mesaj bu kişi tarafından değiştirildi hynx -- 15 Ekim 2019; 20:19:2 >
  • Kodu denedim fakat ufak bir eksiği var: 1,2,3,3 serisini artan olarak degerlendirdi. artan seri deki şartımız önceki eleman < sonraki eleman yani şart < olmalı =< değil. C++'daki 'is_sorted' fonksiyonu da örneğin =< ile çalışıyor yani o fonksiyon da işe yaramaz.

    Bu işi Raku'da (eski adıyla Perl 6) tek satırda yapabiliyorsun:

    Reddit, HN, Euler, DH gibi sitelerden iş görüşmesi soruları + ödev soruları


    say [<] prompt("Seri gir: ").split(" ");

    Kodun açıklaması:
    sağdaki prompt("Seri gir: ").split(" ") Python'daki input().split(" ") ile aynı işi yapıyor yani kullanıcının girdiği seriyi tutuyor.

    onun solundaki [<] ise 2 operatörün birleşimi [ ] indirgeme operatörü ve içine aldığı < ise indirgeme şartını ileten operatör ve bu operatör kombinasyonu seri boyunca elemanları < ile karşılaştırarak sonucu iletiyor.

    Fakat bu [ ] operatörünün bir özelliği daha var: Matematikte "birleşme özelliği" vardır. Bu operatör, zincirleme birleşme özelliğine (chaining-associativity) default olarak sahip oyüzden seri boyunca < kontrolünde sadece 1 eleman uymasa tüm işlem negatif veriyor. Default zincirleme birleşme özelliğ yerine, soldan birleşme özelliğ de atayabilirsin. Veya içerdeki operatörü < değil de <= yapabilrsin ki o durumda senin Python kodu ile aynı sekilde sonuç verir.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:25:40 >
    < Bu ileti mini sürüm kullanılarak atıldı >




  • inputta sonda ',' koyulan case icin yaptim. 1,2,3,3, de 0 veriyor sonda ',' yoksa son sayiyi saymiyor.

    perldeki mantikla 2 satira indirdim, cirkin oldu ama :
    a=input().split(",")
    print(not(False in [a[k]<a[k+1] for k in range(len(a)-2)]))


    sonraki donem perl dersi var. bakalim bu trickleri gorecek miyiz.
  • Çıktı verirken sonda virgül olabilir fakat veri girişnde olması için pek rastlanan şey değil. Sona da virgül koyunca doğru calıştı. 2 satırlık versiyon o kadar kötü sayılmaz. Üniversitede Perl dersinde bu trick'leri göstereceklerini pek sanmam. Ayrıca Raku gösterileceğini de pek sanmam, bahsettikleri ders Perl 5'tir.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:26:36 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • bunu nerede ve ne için kullanacağınız öğrene bilir miyim !?
  • Konunun kağıt üstündeki amacı soruları en pratik kod ile çözmek Fakat asıl amacı programlamcılık becerilerini geliştirmek. Unutulan bazı programcılık yöntemlerini hatırlamak.

    Dolayısıyla soruların gerçek hayatta kullanılması şart değil.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 19 Kasım 2019; 12:27:48 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • basit kod yazmak denince akla api gelir konu orada biter gider.

    programlamayı geliştirmek diyorsanız

    asm seviyesine inilmesi daha mantıklı olur !

    ne kadar çok kod o kadar çok kontrol anlamına gelir.

    amaç eğer performans ise !
  • Amaç performans değil, daha doğrusu No.1 öncelikli değil, amaç basit fakat (cogu kez) temel matematik gerektiren soruları kısa ve net kod ile çözmek.

    Örnein sort fonksiyonu kullanmadan artan seriyi kontrol etmek sorusunu kısa ve net kodlayabiliyor musun? Soru budur. Bu veya önceki diger soruları önce kod ile yanıtlayamıyorsan yoruma gerek yok.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • matematik & mantık diye bir programı dili olsa inan ki

    dünyanın en verimli programlama dili bu olurdu.

    mantık konusunda eşleştirme yöneticileri zaten klasik bunda sorun yok

    matematik noktasında da aslında sıkıntı yok 4 fonksiyonla bütün işler yapıyor

    + - x / sorun şu ki bu dille her şeyi tanımlayabilmek varken.

    fonksiyonlu dillerin fonksiyon terimleri amaçı hep unutturuyor.

    keşke yeni bir programlama dili yazsanız !

    işte burada verdiğiniz emeğe değer.
  • 
Sayfa: önceki 34567
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.