Fejlesztő kiválasztása: interjú feladatok

Fórumok

Sziasztok,

Ki tudtok emelni olyan fejlesztői interjú feladatot, amit a munka szempontjából is relevánsnak gondoltok és egyben érdekesnek is találtatok?

Üdv,
Tassadar

Hozzászólások

Milyen fejlesztő? Milyen nyelv? Milyen környezet? Milyen pozíció?
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Codewars és hasonló jellegű algoritmus fejtörők. Ezek nyelvtől és szakterülettől függetlenek, pont arra jók, hogy jó fejlesztő tudjon átmenni rajtuk. Amúgy első körben egy sokkal egyszerűbb feladat is elég, ott még prímszám kiíráson is sokan elvéreznek.

Szerintem a kreativitást - ami egy fejlesztőnél munkaeszköz - nagyon nehéz mérni. Egy konkrét személy egy konkrét feladatnál lehet, hogy elvérzik, 10 másiknál, amihez mások hozzászólni sem tudnak, pedig nem.

Én csak elbeszélgetnék a jelöltekkel, sőt, hagynám őket, hogy irányítsák a beszélgetést és a belső hangra figyelnék. Vagy összeengednék 8-10 jelöltet egy könnyed, félig-meddig szakmai beszélgetésre, és enyhén, de célirányosan tematizálnám a diskurzust. A végén csak egy marad.

> Sol omnibus lucet.

Nem annyira. Itt a probléma. Itt egy szoba és egy gép. Kapsz 1 órát. Bármilyen eszközt használhatsz (internet/telefon). Szólj, ha megvagy. Majd interjú/élménybeszámoló az elmúlt 1 óráról. Kifaggatom az érzéseiről, gondolatairól.

Ha belegondolsz a munkáltatónak az kell, hogy megoldják a problémáit. Minden más csak a vezető fölényeskedése, elitizmusa. Akinek zsenik kellenek az önmaga nem az. A zseninek jók az átlagosak is, mert velük is tud zseniálisat alkotni.

Hát igen... ez is egy megközelítés. Ugyanakkor nem tudni, hogy a topikindító mire akar szelektálni. Úgy látom abban egyetértünk, hogy nem a KONKRÉT tudást "mérnénk", hanem a feladathoz való alkalmazkodás sikerességét. Hogy ezt az információt miként lehet a legpontosabban és leggyorsabban megszerezni, nos ez szerintem nagyon nehéz kérdés.

> Sol omnibus lucet.

Isten 9 milliárd neve ?


using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;

namespace NamesOfGod
{
public class RowSummer
{
const int N = 100000;
public BigInteger[] p;

private void calc(int n)
/* Translated from C */
{
p[n] = 0;

for (int k = 1; k <= n; k++)
{
int d = n - k * (3 * k - 1) / 2;
if (d < 0) break;

if ((k & 1) != 0) p[n] += p[d];
else p[n] -= p[d];

d -= k;
if (d < 0) break;

if ((k & 1) != 0) p[n] += p[d];
else p[n] -= p[d];
}

}
public void PrintSums()
/* translated from C */
{
p = new BigInteger[N + 1];
var idx = new int[] { 23, 123, 1234, 12345, 20000, 30000, 40000, 50000, N, 0 };
int at = 0;

p[0] = 1;

for (int i = 1; idx[at] > 0; i++)
{
calc(i);
if (i != idx[at]) continue;
Console.WriteLine(i + ":\t" + p[i]);
at++;
}
}
}

public class RowPrinter
/* translated from Python */
{
List> cache;
public RowPrinter()
{
cache = new List> { new List { 1 } };
}
public List cumu(int n)
{
for (int l = cache.Count; l < n + 1; l++)
{
var r = new List { 0 };
for (int x = 1; x < l + 1; x++)
r.Add(r.Last() + cache[l - x][Math.Min(x, l - x)]);
cache.Add(r);
}
return cache[n];
}
public List row(int n)
{
var r = cumu(n);
return (from i in Enumerable.Range(0, n) select r[i + 1] - r[i]).ToList();
}
public void PrintRows()
{
var rows = Enumerable.Range(1, 25).Select(x => string.Join(" ", row(x))).ToList();
var widest = rows.Last().Length;
foreach (var r in rows)
Console.WriteLine(new String(' ', (widest - r.Length) / 2) + r);
}
}

class Program
{
static void Main(string[] args)
{
var rpr = new RowPrinter();
rpr.PrintRows();
var ros = new RowSummer();
ros.PrintSums();
Console.ReadLine();
}
}
}