Da li ste loš programer?

poruka: 26
|
čitano: 7.822
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
10 godina
suspendiran
offline
Da li ste loš programer?

Ako ste ikada došli u priliku čitati blogove u kojima se navode razna pitanja i programerski problemi na intervjuima za posao, možda ne toliko kod nas u HR koliko vani, da li ste ih onako iz zezancije, pokušali riješiti?

Recimo baš sam jutros nabasao na slijedeće probleme:

 

1. Napravi rekurzivnu funkciju za izračunavanje prvih 100 fibonacci brojeva (0, 1, 1, 2, 3, 5, 8, 13, ...)

2. Dobiješ listu s pozitivnim brojevima (npr. [50, 20, 1, 9]) i treba napraviti najveći mogući broj iz te liste, u slučaju kod primjera jest 95021.

3. Kod liste brojeva 1, 2, 3...9 treba dodati znakove +, -, ili ništa kako bi ukupan rezultat bio 100 (npr. 1 + 2 + 34 - 5 + 67 - 8 + 9 = 100)

 

... ja hobistički programiram od svoje 12. godine. Imam preko 10 godina profesionalnog radnog iskustva, imam brdo vlastitih projekata, držim za sebe da sam prilično koristan programer. Ali brate mili, da mi se postave ovakva pitanja bih bio jedino zamiješanje maltera.

 

 

Za one koji se bave davanjem ovakvih vrsta pitanja potencijalnim programerima zainteresiranim za otvorenu poziciju, nadam se da ćete umrijeti u najgorim mukama. Hvala!

Moj PC  
3 4 hvala 0
11 godina
neaktivan
offline
Da li ste loš programer?

"Imam 20 godina iskustva u polju koje ne razumijem i u kojem sam los. Krivim sve ostale za svoje neznanje."

Moj PC  
5 10 hvala 0
10 godina
suspendiran
offline
Re: Da li ste loš programer?
Onjegin kaže...

"Imam 20 godina iskustva u polju koje ne razumijem i u kojem sam los. Krivim sve ostale za svoje neznanje."

 

 

Pa mislim da nisi niti najmanje korektan.

12 godina
neaktivan
offline
Da li ste loš programer?

Ovo su klasika pitanja na većini razgovora za programerski posao. Na njima se vidi da li je netko školovan ili samouk programer tj. koliko dobro poznaje neke od osnovnih programskih tehnika i algoritama poput rekurzije, sortiranja, binarnog pretraživanjam minimax itd. Dosta samoukih je i čulo za sve to ali u praksi to najčešće izbjegavaju pa im fali taj način razmišljanja.

 

Znati složiti komponente na formu nije znanje programiranja!

Moj PC  
11 0 hvala 0
10 godina
suspendiran
offline
Re: Da li ste loš programer?
TracerCPP kaže...

Ovo su klasika pitanja na većini razgovora za programerski posao. Na njima se vidi da li je netko školovan ili samouk programer tj. koliko dobro poznaje neke od osnovnih programskih tehnika i algoritama poput rekurzije, sortiranja, binarnog pretraživanjam minimax itd. Dosta samoukih je i čulo za sve to ali u praksi to najčešće izbjegavaju pa im fali taj način razmišljanja.

 

Znati složiti komponente na formu nije znanje programiranja!

 

daj ne podcjenjuj ljude.

 

14 godina
neaktivan
offline
Re: Da li ste loš programer?
ZovemseZoranidolazimizRijeke kaže...
TracerCPP kaže...

Ovo su klasika pitanja na većini razgovora za programerski posao. Na njima se vidi da li je netko školovan ili samouk programer tj. koliko dobro poznaje neke od osnovnih programskih tehnika i algoritama poput rekurzije, sortiranja, binarnog pretraživanjam minimax itd. Dosta samoukih je i čulo za sve to ali u praksi to najčešće izbjegavaju pa im fali taj način razmišljanja.

 

Znati složiti komponente na formu nije znanje programiranja!

 

daj ne podcjenjuj ljude.

 

 

To nije nikakvo podcjenjivanje, nego istina. Gore navedene zadatke bi bilo koji programer trebao riješiti u 30-ak minuta. 10 minuta da malo razmisli, posloži stavari u glavi, nacrta neku skicu alogoritma i još 10 minuta da to napiše. Još mu 10 minuta ostaje za svaki slučaj. 

Tu nije pitanje koliko netko zna programirati, koliko netko poznaje neki programski jezik, neke module, dodatke, pluginove, nego koliko netko zna razmišljati kao programer, to jest razmišljati te pronaći brzo i efikasno riješenje za navedeni problem. 

U ovakim zadacima kada imaš riješenje u glavi i algoritam na papiru nije problem ga pretipkati u kod.

9 godina
neaktivan
offline
Da li ste loš programer?

ja sam programiranje  (ako se to tako uopce moze nazvati)  doživio kao zezanciju....  

 

fora je napravit shortcut za taj tzv "program" sa ikonom od computera....a moze i sa ikonom od preglednika-to se češče koristi... 

brbrbs
Poruka je uređivana zadnji put pet 8.5.2015 13:17 (brat od habs-a).
 
0 4 hvala 0
15 godina
offline
Da li ste loš programer?

Ovo gore su zapravo jako lagani zadaci...

 

Sort, minmax, rekurzija... osnove... Ne vidim di je tu problem...

Rvat katolik!
 
7 0 hvala 0
11 godina
neaktivan
offline
Re: Da li ste loš programer?
ZovemseZoranidolazimizRijeke kaže...

Ako ste ikada došli u priliku čitati blogove u kojima se navode razna pitanja i programerski problemi na intervjuima za posao, možda ne toliko kod nas u HR koliko vani, da li ste ih onako iz zezancije, pokušali riješiti?

Recimo baš sam jutros nabasao na slijedeće probleme:

 

1. Napravi rekurzivnu funkciju za izračunavanje prvih 100 fibonacci brojeva (0, 1, 1, 2, 3, 5, 8, 13, ...)

2. Dobiješ listu s pozitivnim brojevima (npr. [50, 20, 1, 9]) i treba napraviti najveći mogući broj iz te liste, u slučaju kod primjera jest 95021.

3. Kod liste brojeva 1, 2, 3...9 treba dodati znakove +, -, ili ništa kako bi ukupan rezultat bio 100 (npr. 1 + 2 + 34 - 5 + 67 - 8 + 9 = 100)

 

... ja hobistički programiram od svoje 12. godine. Imam preko 10 godina profesionalnog radnog iskustva, imam brdo vlastitih projekata, držim za sebe da sam prilično koristan programer. Ali brate mili, da mi se postave ovakva pitanja bih bio jedino zamiješanje maltera.

 

 

Za one koji se bave davanjem ovakvih vrsta pitanja potencijalnim programerima zainteresiranim za otvorenu poziciju, nadam se da ćete umrijeti u najgorim mukama. Hvala!

Sta nije u drugom zadatku najveci broj 950201 a ne 95021 jer 20 je jedan broj.

Ili sam ja krivo shvatoi ovaj zadatak.

11 godina
neaktivan
offline
Da li ste loš programer?

Takve zadatke prosječni programer treba znati riješiti.

Moj PC  
1 0 hvala 0
16 godina
neaktivan
offline
Da li ste loš programer?

Pa i ja gledam rezultat tog drugog i čudan mi je, ako je 950201 onda bi potegnuo kombinacije bez ponavljanja preko rekurzije, u svakoj kombnaciji napravio broj, usporedio broj po broj i dobio najveći.

Poruka je uređivana zadnji put pet 8.5.2015 17:04 (Floki).
 
0 0 hvala 0
16 godina
neaktivan
offline
Da li ste loš programer?

Nije svo programiranje isto pa da svi programeri moraju imati identična znanja, baš suprotno... Jedno je pisati što efikasniji kod na mikrokontroleru sa kilobajtom rama, drugo je pisati sql upit na stroju sa 100 GB, treće je pisati driver koji samo čačka po registrima od hardvera i ne mora znati ništa drugo, četvrto je pisati grafički engine koji nikada ne pristupa (izravno) registrima hardvera nego isključivo poziva neki api, peto... E, isto tako bi trebali biti prilagođeni i testovi na razgovorima. Navedeni zadaci su prikladni recimo za četvrtu navedenu kategoriju gdje ima smisla očekivati da će se pokazati potreba za nekom dodatnom logikom i optimizacijama na razini standardnih C runtime funkcija; za ostale bi bili prilično beskorisni kao kriteriji.

 

Moj PC  
2 0 hvala 0
15 godina
offline
Da li ste loš programer?

realno nisu ovo teški zadaci, i da nisam ovakve stvari radio na faksu vjerojatno bi samo trebo brzu poduku aka što je fibonacciev niz i to.. na što bi mi većina vremena otišla..

između ostalog ovakve zadatke nikako nemogu vidit kao mjerilo nekog znanja jel iskreno ne vidim baš di se konkretno tako nešto može implementirat, dok npr. gotov projekt(1,2,100) iza neke osobe daje određenu poruku

edit, totalno se slažem sa kolegom iznad, cak me i potsjetilo na video:

Umro je Einstein, umro je Newton, ni ja se ne osjećam baš najbolje.. :(
Poruka je uređivana zadnji put pet 8.5.2015 17:34 (LUNAT1C).
 
0 0 hvala 0
16 godina
neaktivan
offline
Da li ste loš programer?

Čovjek nije radio algoritme i to je to, ne znači da nije dobar u onom što radi. Ako ga zanima neka nabavi neku knjigu iz algoritama i neka navali.

 
3 0 hvala 0
10 godina
suspendiran
offline
Da li ste loš programer?

Ok ekipa, rjesite zadnje pitanje.

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Da li ste loš programer?
tnakir kaže...

Ovo gore su zapravo jako lagani zadaci...

 

Sort, minmax, rekurzija... osnove... Ne vidim di je tu problem...

 Sort je u ovom slucaju greedy pristup, tako da nisi u pravu.

 

U drugom je dinamicko, treci sigurno nije rekurzija s kombinacijama bez ponavljanja jer ima ogromnu slozenost (to je brutforsanje, bez obzira kaj mozete rec da imate rekurziju, koja je i sporija od petljanja)

 

Za treci mi se cini dinamicko takoder najbrze (koje ja mogu pojmiti), ali mozda postoji i bolje

mojpismonosa
16 godina
neaktivan
offline
Da li ste loš programer?

Ako sam skužio dobro da je drugi kombinacija postojećih brojeva, može i rekurzija.

 

 

#include<iostream>
#include<vector>

using namespace std;

vector<int> brojevi;
vector<int> temp;
int najveciBroj;

void gradiBroj(int broj)
{
   int potencija, vadi;
   int temp = brojevi[broj % 10 - 1];
   broj /= 10;
   while (broj != 0)
   {
      vadi = brojevi[broj % 10 - 1];
      potencija = 1;
      while (vadi != 0)
      {
         potencija *= 10;
         vadi /= 10;
      }
      temp = temp * potencija + brojevi[broj % 10 - 1];
      broj /= 10;
   }
   if (temp > najveciBroj)
      najveciBroj = temp;
}

void trazi(int broj, int znamenke)
{
   if (znamenke == 0)
   {
      gradiBroj(broj);
      return;
   }
   if (broj>0)
      temp[broj % 10 - 1] = 1;

   for (int i = 1; i <= brojevi.size(); i++)
   {
      if (temp[i - 1] == 0)
      {

         trazi(broj * 10 + i, znamenke - 1);
      }
   }
   if (broj>0)
      temp[broj % 10 - 1] = 0;
}

int main()
{
   brojevi = { 9, 73, 89, 28 };
   for (int i = 0; i < brojevi.size(); i++)
      temp.push_back(0);
   int znamenke = brojevi.size();
   trazi(0, znamenke);
   cout << najveciBroj << endl;
   
   return 0;
}

 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Da li ste loš programer?
ZovemseZoranidolazimizRijeke kaže...

Ok ekipa, rjesite zadnje pitanje.

 

def solve(numbers, target):
    nums = numbers[:]
    num = nums.pop()

    while nums:
        added = solve(nums, target - num)
        if added is not None:
            return added + '+' + str(num)

        subtracted = solve(nums, target + num)
        if subtracted is not None:
            return subtracted + '-' + str(num)

        num = int(str(nums.pop()) + str(num))
       
    if num == target:
        return str(num)

print(solve([1, 2, 3, 4, 5, 6, 7, 8, 9], 100))

 

Ovaj kod daje rješenje "1+23-4+56+7+8+9"

11 godina
neaktivan
offline
Re: Da li ste loš programer?

Prvo:

 

memo = {1: 0, 2: 1}

def fib(n):
    if not n in memo:
        memo[n] = fib(n - 2) + fib(n - 1)
    print('fib', n, memo[n])
    return memo[n]

fib(100)

 

Drugo:

 def solve(numbers):
    if len(numbers) == 1:
        return numbers[0]
    else:
        L = []
        for i in range(len(numbers)):
            max_rest = solve(numbers[:i] + numbers[i+1:])
            L.append(int(str(numbers[i]) + str(max_rest)))
            L.append(int(str(max_rest) + str(numbers[i])))
        return max(L)

print(solve([50, 20, 1, 9]))

Poruka je uređivana zadnji put pet 8.5.2015 21:56 (Bobobo-bo Bo-bobo).
15 godina
odjavljen
offline
Da li ste loš programer?

J*beš te zadatke...

 

Dođem kod klijenta sa setupom od aplikacije (koja je kod mene radila). Instaliram, podesim. Puca kod dohvaćanja popisa kamera. "Application has stopped responding". try...catch ne hvata ništa. Jednostavno pukne na nekom DLLu koji je dio SDKa. Uz SDK nije došlo jedno slovo dokumentacije (ActiveX kontrola i par DLLova za komunikaciju i dekodiranje videa). Kod mene ta ista funkcija prolazi bez problema. Hardver - identičan. Sve ostale funkcije rade osim te. Nijedna kamera nema naše znakove u imenu, samo eng abeceda i brojevi. Nema specijalnih znakova. I tako jedostavno pukne.

 

Klijent stoji uz tebe i gleda kako se aplikacija ruši. Imaš 1h da popraviš ili uperiš prst u krivca za problem (pa da riješiš i to).

 

Kako se dohvaća popis kamera? Otvoriš konekciju, dobiješ broj kamera, pozoveš ChangeCam, pokreneš playback, dohvatiš naziv (jer ne možeš prije), zaustaviš playback, zatvoriš konekciju. Ponovi proceduru na idućoj.

 

Nikakve rekurzije, minimumi, maksimumi nit algoritmi nisu pomogli pri rješavanju tog problemčića.

My name is Legion... For we are many!
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Da li ste loš programer?

Za nešto i pomažu, što da radiš aplikaciju najkraća ruta Zagreb London avionom, e onda igraju ulogu DFS  , BFS, rekurzije, nije baš tako beskorisno kako izgleda.

 
0 0 hvala 0
16 godina
neaktivan
offline
Re: Da li ste loš programer?
Sum_of_all_fears kaže...
Dođem kod klijenta sa setupom od aplikacije (koja je kod mene radila). Instaliram, podesim. Puca kod dohvaćanja popisa kamera. "Application has stopped responding". try...catch ne hvata ništa. Jednostavno pukne na nekom DLLu koji je dio SDKa. Uz SDK nije došlo jedno slovo dokumentacije (ActiveX kontrola i par DLLova za komunikaciju i dekodiranje videa). Kod mene ta ista funkcija prolazi bez problema. Hardver - identičan. Sve ostale funkcije rade osim te. Nijedna kamera nema naše znakove u imenu, samo eng abeceda i brojevi. Nema specijalnih znakova. I tako jedostavno pukne.

I, što je bilo? Driver se nije startao, falio je CoInitialize ili slično, neki servis od Windoza nije bio startan? Nagađam da je neki relativno egzotični hardver i nije Blackmagic.

 

12 godina
neaktivan
offline
Re: Da li ste loš programer?
Sum_of_all_fears kaže...

J*beš te zadatke...

 

....

 

Nikakve rekurzije, minimumi, maksimumi nit algoritmi nisu pomogli pri rješavanju tog problemčića.

 Ali bi pomogli logovi koji se uče u svakoj ozbiljnijoj školi koja podučava programiranje. Algoritmi su tu da pokažu pristup i način razmišljanja a tehnike (poput logiranja) baš zbog ovakvih stvari.

 

Imam 20ak aplikacija trenutno po 140 tvrtki i ako sam išta naučio jest da korisnik u 90% slučajeva nema pojma kako da opiše problem. "Program se ruši" meni apsolutno ništa ne znači ako nisu opisani uvjeti u kojima se to dogodilo te kako da sam ponovim iste korake koji vode do te greške. Dakle, u mom slučaju korištenjem MadExcept biblioteke riješim si jako puno glavobolje. Za C# je malo teže jer nema direktno ovakve alternative ali ako ništa drugo zabilježi se StackTrace. Da si to napravio sigurno bi ti bilo lakše. A uvijek možeš i "ručno" log sastaviti pa vidjeti gdje bar približno stvar puca.

Poruka je uređivana zadnji put pet 8.5.2015 23:38 (TracerCPP).
15 godina
odjavljen
offline
Re: Da li ste loš programer?
DigiMagic kaže...

I, što je bilo? Driver se nije startao, falio je CoInitialize ili slično, neki servis od Windoza nije bio startan? Nagađam da je neki relativno egzotični hardver i nije Blackmagic.

 

 Nije egzotika, DVR snimači.

TracerCPP kaže...

 Ali bi pomogli logovi koji se uče u svakoj ozbiljnijoj školi koja podučava programiranje. Algoritmi su tu da pokažu pristup i način razmišljanja a tehnike (poput logiranja) baš zbog ovakvih stvari.

Postoje logovi i u njima nema apsolutno ništa jer ne puca moja app nego DLL iz SDK.

 

Problem je ugl u sporosti mreže. Zbog ogromnih latencija između PCja i DVRova, pokrenute operacije se "kolju" i taj SDK nije napisan da hendla takve cirkuse. Rješenje - sve usporiti (sekunda - dvije između naredbi) ili jednostavno kompletno izbaciti to dohvaćanje imena, ostaviti samo brojeve (cam 0, cam 1...).

 

Ili upgradeati mrežu. Optika, Cisco routeri...

My name is Legion... For we are many!
10 godina
offline
Da li ste loš programer?

Čisto ovako kao student koji se s programiranjem susreo samo na faksu. Nama su uporno tvrdili da nemoramo znati algoritme napamet,nego samo da usvojimo način razmišljanja a da sintaksa i slično postoji u knjigama i da se to ne mora znati napamet. Ovdje vidm raspravu u kojoj se tvrdi da kad dobiješ takve zadatke u 10 min moraš cijelu sintaksu izvest napamet. Dakle, nekakav početnik u programiranju se nemora niti javljati na poslove ako odma nezna ispisat 50 linija koda koji odma radi(bez grešaka u debuggeru)? Nije troll, samo me iskreno zanima.

Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: Da li ste loš programer?

Ne možeš niti moraš sve stvari znati napamet. Ali ipak se očekuje da imaš znanja o kodu kojeg pišeš jer niti copy/paste nije rješenje. Ključno je naučiti što algoritam radi i kada ga je idealno koristiti, no vrijedi i obrnuto - ako znaš princip rada algoritma tada i napisati code ne smije biti preveliki problem. Primjerice, bubble, selection i insertion sort sigurno iz glave mogu napisati odmah jer idejno znam kako koji radi, no primjerice merge, heap i quick sort je ipak dosta teže jer se rekurzivno polje mora dijeliti po pola, pa svaki dio zasebno sortirati, spajati itd. No kada bi vidio njihov code bilo bi mi vrlo brzo jasno koji je koji sort.

 

Tako da, ti algoritmi koji se traže na razgovoru za posao nisu baš tolike složenosti da se ne mogu napisati napamet ukoliko zaista razumiješ što i kako algoritam radi.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice