• 1
  • 2
2015-04-29, 20:11
  #13
Citat:
Ursprungligen postat av Whateva
En bra sida att känna till vid dessa sammanhang: Glassdoor

Varför?
Citera
2015-04-30, 18:23
  #14
Medlem
Citat:
Ursprungligen postat av farfar
Varför?

Besök sidan så blir det uppenbart.
Citera
2015-04-30, 20:54
  #15
Medlem
Citat:
Ursprungligen postat av Vissen
Haha. Företaget ska fixa ett nytt system och låter ett gäng arbetssökande fixa biffen kostnadsfritt kanske?

Om det ändå vore så enkelt.

Så det finns ingen kostnad förknippad med att hantera massa kod med okänd kvalité från olika källor som ska sättas ihop till ett fungerande system?
Citera
2015-04-30, 23:14
  #16
Citat:
Ursprungligen postat av Whateva
Besök sidan så blir det uppenbart.

Besökt, ingen uppenbarelse.
Citera
2015-04-30, 23:30
  #17
Medlem
Citat:
Ursprungligen postat av Whateva
Några uppgifter jag har varit med om på intervjuer:

1. Skriv en klass ”class Memoize<T>” som tar en generisk parameter och definierar metoden "T get". Konstruktorn tar en Callabable<T> som indata och beräknar värdet av callablen en gång vid anrop av get och returnerar nästkommande gånger det beräknade värdet.

2. Skriv en rekursiv funktion för att räkna ut Fibonacci(n).

3. Skriv en asynkron server- och klient-applikation som kommunicerar över tcp. Servern är en echo-server, mao skickar tillbaka bytes från klienter. Klienten ska koppla upp sig mot servern och skicka ett meddelande kontinuerligt och asynkront till servern tills användaren stänger av klienten. Klienten ska räkna ut och presentera throughput. (något mer omfattande uppgift som man fick börja på hemma).

4. Skriv en metod som räknar upp alla primtal till n.

På intervjuer är det även vanligt att man får titta på kod och rätta fel eller beskriva funktionalitet. Även uppgifter av mer arkitekturell karaktär är vanliga. T.ex. designa en serverapplikation som lagrar användare och adresser med ett nätverks/web-gränssnitt för att lägga till, ta bort, se informationen.

All kod man skriver bör vara testbar, du bör alltså kunna motivera hur koden är testbar och/eller skriva enhetstester.

Slutligen brukar det även dyka upp problem av mer algoritmisk karaktär där språket är mindre viktigt framför problemlösningen. T.ex. Givet en lista med heltal, hitta alla par av tal där t1 + t2 = N. Det som efterfrågas är självklart en bra/snabb lösning framför en trivial.

Tack för att du delar, vilket är sällan folk gör. Fast måste säga ändå att det var oväntat svåra vissa. Hur tusan ska man kunna besvara fråga 3 bara på rak arm om man inte gjort det tidigare till exempel? Tvivlar ärligt talat på att många hade klarat de där intervjufrågorna om man bortser från fråga 2 och 4 som är enkla rutinfrågor.

edit:
Såg nu att du skrev att man fick börja på den hemma.

Citat:
Ursprungligen postat av traningsnarkomanen
Edit: woops missade att den skulle vara rekursiv. Får kolla mer imorgon

Den rekursiva varianten är väldigt simpel dock, man behöver bara skriva return Fib(n-2) + Fib(n-1) tillsammans med lämpliga basfall. Kan vara bra dock att motivera att den är exponentiell, lär lätt kunna bli overflow i stacken med alla funktionsanrop.

Är inte påläst på Java för tillfället, fast såhär ungefär:

public int Fib(int n) {
if (n == 1) return 1;
if (n == 2) return 1;
return (Fib(n-2) + Fib(n-1));
}
__________________
Senast redigerad av Icnivad 2015-04-30 kl. 23:33.
Citera
2015-05-01, 17:41
  #18
Medlem
Citat:
Ursprungligen postat av farfar
Besökt, ingen uppenbarelse.

Människor som har haft anställning och/eller varit på intervjuer på företag delar med sig av sina löner, intervjufrågor och tycken om företag. Det är främst amerikaner som använder det men det går att hitta större Svenska företag också.
Citera
2015-05-01, 17:43
  #19
Citat:
Ursprungligen postat av Whateva
Människor som har haft anställning och/eller varit på intervjuer på företag delar med sig av sina löner, intervjufrågor och tycken om företag. Det är främst amerikaner som använder det men det går att hitta större Svenska företag också.

Tack för tålamodet, jag fattar att det är användbart, men fattade inte om det var allt eller om jag missat nåt. Jag var lite onödigt svår.
Citera
2015-05-01, 18:07
  #20
Medlem
Citat:
Ursprungligen postat av Icnivad
Tack för att du delar, vilket är sällan folk gör. Fast måste säga ändå att det var oväntat svåra vissa. Hur tusan ska man kunna besvara fråga 3 bara på rak arm om man inte gjort det tidigare till exempel? Tvivlar ärligt talat på att många hade klarat de där intervjufrågorna om man bortser från fråga 2 och 4 som är enkla rutinfrågor.

edit:
Såg nu att du skrev att man fick börja på den hemma.



Den rekursiva varianten är väldigt simpel dock, man behöver bara skriva return Fib(n-2) + Fib(n-1) tillsammans med lämpliga basfall. Kan vara bra dock att motivera att den är exponentiell, lär lätt kunna bli overflow i stacken med alla funktionsanrop.

Är inte påläst på Java för tillfället, fast såhär ungefär:

public int Fib(int n) {
if (n == 1) return 1;
if (n == 2) return 1;
return (Fib(n-2) + Fib(n-1));
}

Jag tror att folk som har bra koll på programmering och matte klarar frågorna utan större bekymmer. Jag har som sagt själv fått dessa frågor, det var inga större problem att klara. Företagen som ställde dessa frågor söker ofta folk med civilingenjörsexamen i data/fysik/elektro och en viss arbetslivserfarenhet inom branschen.

Fråga 1 (Svenskt musikstreamingföretag) klarar man enkelt om man har koll på generics i java. Det finns kanske en liten twist med felhantering som verkade ge bonuspoäng om man tänkte på det.

Fråga 2 (Svenskt musikstreamingföretag) är inte så trivial som du tror. Du har löst uppgiften men det är en väldigt ineffektiv lösning. En självklar följdfråga kommer vara: Vad är komplexitet av algoritmen och hur förbättras den? Din lösning har komplexitet på O(2^n), inte speciellt bra m.a.o.

Fråga 3 (Svenskt företag som gör system för trading på börsen) är en sådan man får lösa hemma på några timmar och presentera på intervjun. Tanken är inte att göra uppgiften perfekt, utan visa tecken på att man är bra på att designa system och skriva testbar kod m.m. Valet av uppgift brukar spegla det företaget håller på med. Man kan även få sådana uppgifter på intervjutillfället, men då bara diskutera hur systemet ska designas. Man får kanske 10-20 min för sig själv och får sedan presentera sin design och diskutera den.

Fråga 4 (Stort IT-konsultbolag). Även detta problem kan lösas på trivialt sätt eller på mer komplicerade (snabbare) sätt som kräver att man har lite koll på matte.

Jag har varit på många intervjuer med varierande svårighetsgrad. Det som är gemensamt är att intervjuaren aldrig söker triviala lösningar trots att problemen till synes är triviala. Det är alltid bra att tänka lite extra innan man hoppar på svaret. Självklart förväntas inga perfekta lösningar heller, man får komma ihåg att intervjuaren har ställt samma fråga till väldigt många och har stenkoll på uppgiften. Det finns självklart undantag där triviala frågor med triviala svar förväntas. Dessa företag brukar inte vara något att hänga i julgranen.
__________________
Senast redigerad av Whateva 2015-05-01 kl. 18:09.
Citera
2015-05-01, 18:46
  #21
Medlem
Citat:
Ursprungligen postat av Whateva
Jag tror att folk som har bra koll på programmering och matte klarar frågorna utan större bekymmer. Jag har som sagt själv fått dessa frågor, det var inga större problem att klara. Företagen som ställde dessa frågor söker ofta folk med civilingenjörsexamen i data/fysik/elektro och en viss arbetslivserfarenhet inom branschen.

Ja så är det ju, fast tycker så många verkar ha problem överlag med programmering fastän de jobbar som systemutvecklare. Är ingen expert själv, fast har ändå många gånger blivit besviken över vilken nivå många har legat på trots att de jobbar inom det. Exempelvis på företag där kollegor dyker upp som inte klarar av att loopa igenom en array utan accessar index manuellt med siffror 20 gånger och dylika fundamentala saker. Sedan sidor som Codinghorror där många påstod att 98% av de som kommer på intervjuer inte ens klarar av att göra enkla saker som att skriva ut något på skärmen.

Det är därför jag helt plötsligt skulle bli förvånad om så många klarar sånt där. Inte för att jag anser att det är jättesvårt själv.

Citat:
Ursprungligen postat av Whateva
Fråga 2 (Svenskt musikstreamingföretag) är inte så trivial som du tror. Du har löst uppgiften men det är en väldigt ineffektiv lösning. En självklar följdfråga kommer vara: Vad är komplexitet av algoritmen och hur förbättras den? Din lösning har komplexitet på O(2^n), inte speciellt bra m.a.o.

Är medveten om att komplexiteten är exponentiell och att den inte är särskilt effektiv. Fast har ingen aning om hur man skulle kunna göra en rekursiv variant som är bättre rent intuitivt. Känns som de flesta skulle tänka på den naiva versionen om de inte är påläst/förberett sig på algoritmer och/eller matematiken bakom tbh. Inget jag skulle komma på i stundens hetta om man säger så.
Citera
2015-05-01, 18:53
  #22
Moderator
Protons avatar
Java --> Personlig utveckling, studier och arbetsliv
/Moderator
Citera
2015-05-01, 20:09
  #23
Medlem
Citat:
Ursprungligen postat av Icnivad
Ja så är det ju, fast tycker så många verkar ha problem överlag med programmering fastän de jobbar som systemutvecklare. Är ingen expert själv, fast har ändå många gånger blivit besviken över vilken nivå många har legat på trots att de jobbar inom det. Exempelvis på företag där kollegor dyker upp som inte klarar av att loopa igenom en array utan accessar index manuellt med siffror 20 gånger och dylika fundamentala saker. Sedan sidor som Codinghorror där många påstod att 98% av de som kommer på intervjuer inte ens klarar av att göra enkla saker som att skriva ut något på skärmen.

Det är därför jag helt plötsligt skulle bli förvånad om så många klarar sånt där. Inte för att jag anser att det är jättesvårt själv.



Är medveten om att komplexiteten är exponentiell och att den inte är särskilt effektiv. Fast har ingen aning om hur man skulle kunna göra en rekursiv variant som är bättre rent intuitivt. Känns som de flesta skulle tänka på den naiva versionen om de inte är påläst/förberett sig på algoritmer och/eller matematiken bakom tbh. Inget jag skulle komma på i stundens hetta om man säger så.

Finns självklart olika nivåer inom allt. Förvånande dock att professionella systemutvecklare inte kan loopa genom arrayer. Har aldrig stött på en sådan.

Man kan optimera rekursiv fibonacci genom att cacha redan räknade värden. Då blir komplexiteten O(n) eller O(1)

Kod:
private final static Map<Integer, Integer> fibCache;
static {
	fibCache = new HashMap<Integer, Integer>(1000);
	fibCache.put(0, 0);
	fibCache.put(1, 1);
}
	
public static int cachedFib(int n) {
	if(n < 0) throw new IllegalArgumentException("n must be a positive integer. n >= 0");
	if(fibCache.containsKey(n)) return fibCache.get(n);
	int fn_1 = cachedFib(n-1);
	fibCache.put(n-1, fn_1);
	int fn_2 = cachedFib(n-2);
	fibCache.put(n-2, fn_2);
	return fn_1 + fn_2;
}

Redan vid litet n får fib katastrofala värden:

Fib(45) = 1134903170
Fib(45) took 5214953.726µs

Cached Fib(45) = 1134903170
Cached Fib(45) took 25.826µs
__________________
Senast redigerad av Whateva 2015-05-01 kl. 20:32.
Citera
2015-05-02, 00:49
  #24
Medlem
Citat:
Ursprungligen postat av Whateva
Man kan optimera rekursiv fibonacci genom att cacha redan räknade värden. Då blir komplexiteten O(n) eller O(1)

Ah såklart. Nu när du nämner det så är ju det där betydligt bättre fast ändå inte speciellt komplicerat.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in