Search:

Twitter:

Ultimi commenti:

Tags:

Archivi:

Febbraio 2010 ( 6 )
Gennaio 2010 ( 12 )
Dicembre 2009 ( 10 )
Novembre 2009 ( 8 )
Ottobre 2009 ( 15 )
Settembre 2009 ( 12 )
Agosto 2009 ( 7 )
Luglio 2009 ( 23 )
Giugno 2009 ( 20 )
Maggio 2009 ( 17 )
Aprile 2009 ( 23 )
Marzo 2009 ( 20 )
Febbraio 2009 ( 15 )
Gennaio 2009 ( 15 )
Dicembre 2008 ( 24 )
Novembre 2008 ( 25 )
Ottobre 2008 ( 23 )
Settembre 2008 ( 13 )
Agosto 2008 ( 18 )
Luglio 2008 ( 16 )
Giugno 2008 ( 18 )
Maggio 2008 ( 18 )
Aprile 2008 ( 20 )
Marzo 2008 ( 10 )
Febbraio 2008 ( 20 )
Gennaio 2008 ( 20 )
Dicembre 2007 ( 27 )
Novembre 2007 ( 19 )
Ottobre 2007 ( 19 )
Settembre 2007 ( 22 )
Agosto 2007 ( 7 )
Luglio 2007 ( 35 )
Giugno 2007 ( 30 )
Maggio 2007 ( 33 )
Aprile 2007 ( 37 )
Marzo 2007 ( 34 )
Febbraio 2007 ( 32 )
Gennaio 2007 ( 22 )
Dicembre 2006 ( 9 )
Novembre 2006 ( 17 )
Ottobre 2006 ( 14 )
Settembre 2006 ( 13 )
Agosto 2006 ( 22 )
Luglio 2006 ( 3 )
Giugno 2006 ( 10 )
Maggio 2006 ( 11 )
Aprile 2006 ( 24 )
Marzo 2006 ( 15 )
Febbraio 2006 ( 41 )
Gennaio 2006 ( 19 )

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. Stick out tongue

-quack

Technorati Tags:

P.S. il problema Kanji è solo un esempio. I contractor vengono assunti in base all'esperienza nel dominio del problema da risolvere. Wink

Commenti (13):
1. Blackstorm
mercoledì 9 gennaio 2008 alle 3:02 AM - unknown unknown unknown
   

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 :D

   
2. FDG
mercoledì 9 gennaio 2008 alle 11:18 AM - unknown unknown unknown
   

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.

   
3. FDG
mercoledì 9 gennaio 2008 alle 11:26 AM - unknown unknown unknown
   

si che mi viene in mente... il numero di bit a 1

ciao

   
4. FDG
mercoledì 9 gennaio 2008 alle 11:30 AM - unknown unknown unknown
   

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.

   
5. Blackstorm
mercoledì 9 gennaio 2008 alle 1:22 PM - unknown unknown unknown
   

@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...

   
6. FDG
mercoledì 9 gennaio 2008 alle 4:31 PM - unknown unknown unknown
   

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 :-)

   
7. Paperino
mercoledì 9 gennaio 2008 alle 7:16 PM - unknown unknown unknown
   

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. Smile

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.

   
8. Blackstorm
mercoledì 9 gennaio 2008 alle 10:13 PM - unknown unknown unknown
   

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... :)

   
9. Chris
mercoledì 9 gennaio 2008 alle 11:04 PM - unknown unknown unknown
   

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 :P

   
10. Paperino
mercoledì 9 gennaio 2008 alle 11:47 PM - unknown unknown unknown
   

Blackstorm:

FDG voleva dire di contare quanti byte consecutivi hanno il MSB ad uno. In C++:

if while ((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! Smile

E se lo fai, non dirlo a Jeff!! ( www.codinghorror.com/.../000804.html )

   
11. FDG
giovedì 10 gennaio 2008 alle 11:21 AM - unknown unknown unknown
   

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.

   
12. Paperino
giovedì 10 gennaio 2008 alle 6:43 PM - unknown unknown unknown
   

FDG: ricorda che lo scopo di queste domande è di capire come e se il candidato arriva ad un algoritmo ottimale.

-quack

   
13. FDG
venerdì 11 gennaio 2008 alle 6:23 PM - unknown unknown unknown
   

Allora io ci sono arrivato, giusto? Quando mi date? ;-)

   
Lascia un commento:
Commento: (clicca su questo link per gli smiley supportati; regole di ingaggio per i commenti)
(opzionale, per il Gravatar)