Habemus contractor
Finalmente abbiamo assunto l'ultimo dei tre contractor, ovvero persona impiegata a progetto a tempo determinato, che serviva per il nostro nuovo progetto super-segreto.
L'accento è sulla parola finalmente.
Finalmente perché le statistiche sono state contro questa assunzione che si protrae da diversi settimane: per ogni set di cinque curricula buoni, solo uno passava lo screening iniziale. Per ogni set di cinque candidati che superavano lo screening, solo uno fittava la posizione richiesta come un guanto. Ed il penultimo candidato ha avuto qualche problema ortogonale ed è stato scartato (non so e non voglio sapere cosa abbia combinato nella sua vita precedente). Fatti i calcoli per tre posizioni abbiamo ascoltato/intervistato/interrogato una media di 100 persone in due mesi o meno.
Finalmente perché certi curricula sono gonfiati come una combinazione soda + mentos. Se n'era accorto anche Jeff.
Finalmente perché la persona che dovrà dirigere il progetto è andata allegramente in vacanza lasciando il compito di colloquiare a tre poveri sfigati, divisi in uno screener telefonico e due intervistatori [quasi]-live. Se si calcola che il tutto si è svolto in 8-10 settimane si può capire come la crisi di identità personale (chi sono e cosa voglio) è stata più volte paventata; e dopo questo rush intensivo, questo ruolo è diventato per me un po' demodé.
Finalmente perché, la coordinazione di tutto questo, ha fatto traballare un po' quello che dovrei fare per stipendio. Per fortuna c'è stato anche Natale. O sfortuna?
Finalmente perché nei corridoi si può tornare a parlare di altro, anziché del problema Kanji:
a) An ASCII character is one byte long and the most significant bit in the byte is always '0'.
b) A Kanji character is two bytes long. The only characteristic of a Kanji character is that in its first byte the most significant bit is '1'.Now you are given an array of a characters (both ASCII and Kanji) and, an index into the array. The index points to the start of some character. Now you need to write a function to do a backspace (i.e. delete the character before the given index).
Finalmente perché, a valutare una risposta al problema "bastardo" di cui sopra, non ci devo più neanche pensare.
-quack
P.S. il problema Kanji è solo un esempio. I contractor vengono assunti in base all'esperienza nel dominio del problema da risolvere. ![]()
Potrebbero interessarti anche:
- FizzBuzz paper-solution
- Ecco il mio nuovo PDA
- Incominciamoooooooo (3.14 AM)
- Regex & Lambda
- Le migliori di Berlusconi: nono posto


Facebook,
Wikio,
Segnalo.

mercoledì 9 gennaio 2008 alle 3:02 AM -
Ora, posto che il video di soda+mentos è da sturbo totale, e posto che mi chiedo come tu abbia trovato il tmepo di postare in questi giorni, pongo anche che qui si nasconde un simpatico questio... Io mi cimento... uccidimi pure
L'unica cosa che non ho capito è il carattere da eliminare: se per esempio mi dai l'indice 5, devo cancellare l'elemento [4]?
E ancora, non ho capito bene come è fatto l'array... nel senso, ogni elemento ha 1 byte? O ti devo dare io la struttura?
Ok, uccidimi
Permalink
mercoledì 9 gennaio 2008 alle 11:18 AM -
Il modo più banale mi è sembrato questo: considerando la sequenza di zeri e uno corrispondenti ai bit più significativi, si deve tornare a ritroso nella sequenza fino al primo 0 seguito da un 1 e da li ritorna in avanti interpretando quello che c'è dopo.
Però penso che si possa fare di meglio. Ad esempio, si possono considerare i due zeri consecutivi prima della posizione dell'indice. Altro non mi viene in mente.
Permalink
mercoledì 9 gennaio 2008 alle 11:26 AM -
si che mi viene in mente... il numero di bit a 1
ciao
Permalink
mercoledì 9 gennaio 2008 alle 11:30 AM -
ehm... numero di bit a 1 escluso l'ultimo. Se è dispari l'ultimo è un Kanji, se è pari è un ascii. Ci sono alcune sequenze non ammesse, ma non so se è previsto qualche controllo sulla validità dello stato e quindi se bisogna considerare questo nell'algoritmo.
Permalink
mercoledì 9 gennaio 2008 alle 1:22 PM -
@FDG: penso di non capire bene cosa vuoi dire... un kanji occupa 2 byte, un ASCII occupa un byte. L'unica altra differenza è il bit più significativo. non ho capito bene come il tuo secondo algoritmo risolva questa situazione...
Permalink
mercoledì 9 gennaio 2008 alle 4:31 PM -
Io ho interpretato l'array come contenente i byte che rappresentano la stringa. Quindi una posizione potrebbe contenere sia un carattere ascii che uno dei due byte del kanjii. Se non è questa l'interpretazione corretta, allora è un non problema ed è posto solo per far confondere la gente e ridurre il numero dei soggetti da valutare.
Mi intriga di più la prima interpretazione
Permalink
mercoledì 9 gennaio 2008 alle 7:16 PM -
L'interpretazione di FDG è corretta come pure la soluzione. Io mi son limitato a copiare e incollare il quesito dalla Rete, sono troppo pigro per ri-scrivere cose già scritte. In generale i quesiti dal vivo, non sono esercizi di interpretazione anche se qualche volta la domanda è lasciata appositamente un po' vaga per vedere se il candidato parte in quarta o fa le domande giuste: in questo caso il quesito, a me che lo conosco bene, sembrava ben definito e se era un po' vago non era nelle mie intenzioni.
Le domande più popolari di questo ciclo erano:
* a che serve la keyword using in C# (era richiesta esperienza in tale campo)
* come faresti l'upload di un file XML in un DB
* come risolveresti i problemi di accesso concorrente al DB
et similari. Il problema Kanji ad occhio e croce mi sembra molto più complesso.
Permalink
mercoledì 9 gennaio 2008 alle 10:13 PM -
dunque... ora faccio un paio di domande, perchè sarà che sono tonto, sarà che sono arruginito, ma proprio non ho capito la soluzione.
faccio un ragionamento a occhio:
FDG, hai detto di contare il numero di bit a 1 escluso l'ultimo. Ora, come idea improvvisa, ho l'intuizione che ti riferissi ai bit più significativi di ogni byte, no? Ora, se è così, contandoli, va da sè che i caratteri ASCII non cambiano la parità dei bit. Nel caso dei Kanji, ho due possibilità: il primo byte ha il bit a 1 e il secondo a 0 oppure sono entrambi a 1. Ovviamente, solo nel primo caso mi cambia la parità. Ora, se io però ho due kanji consecutivi, entrambi con il primo bit a 1 e il secondo a 0, e la posizione data va a cadere sul secondo byte del secondo carattere, io ho un conteggio pari, cosa che mi porta a stabilire che il carattere in esame è un ascii, secondo ciò che hai detto. Però è sbagliato, perchè è la seconda parte di un kanji. Ora, siccome non metto in dubbio le tue capacità di programmatore, e meno ancora quelle di paperino, dove sto sbalgiando?
Altra domanda: materialmente, come lo fai il conto di parità? Io ragiono in c++, quando si parla di programmazione, e l'unico modo che conosco per manipolare i bit è l'uso delle bitmask... operativamente, cosa useresti?
PS: sia chiaro, sono un po' un pippa in programmazione, per cui se vi sembrano domande stupide, molto probabilmente lo sono...
Permalink
mercoledì 9 gennaio 2008 alle 11:04 PM -
Io sono andato a vedere il quesito di Jeff sui numeri da 1 a 100 FizzBuzz. Ci ho messo 2 minuti e 42 secondi :-D,lo proporrò anche ai miei sparuti lettori. Sui Kanji non mi ci metto,son stanco
Permalink
mercoledì 9 gennaio 2008 alle 11:47 PM -
Blackstorm:
FDG voleva dire di contare quanti byte consecutivi hanno il MSB ad uno. In C++:
ifwhile ((array[index]>127) && (index > -1)){
counter++; // piu' elegante: parity = 1 - parity;
index--;
}
Ovviamente manca del codice prima e del codice dopo.
Chris:
non ci provare!
E se lo fai, non dirlo a Jeff!! ( www.codinghorror.com/.../000804.html )
Permalink
giovedì 10 gennaio 2008 alle 11:21 AM -
Non ci ho pensato molto, ma credo che il codice venga bene facendo uso di operazioni sui bit, operazioni disponibili appunto per cose come il controllo di parità e che dovrebbero essere previste già nel set di istruzioni dei processori.
Permalink
giovedì 10 gennaio 2008 alle 6:43 PM -
FDG: ricorda che lo scopo di queste domande è di capire come e se il candidato arriva ad un algoritmo ottimale.
-quack
Permalink
venerdì 11 gennaio 2008 alle 6:23 PM -
Allora io ci sono arrivato, giusto? Quando mi date?
Permalink