Письмо
В начале августа 2010 года я совершенно внезапно получил вот такое письмо:
Hello Andrey,
My name is [...] and I am part of the inhouse Engineering Staffing Team at Google.
Your name was recommended by our engineers here at Google during an informal brainstorming session. They were of the opinion that you have great technical skills and someone whom we should contact for possible interest in working for Google. Would you be interested in confidentially exploring positions within Google's engineering team?
I look forward to hearing back from you soon and appreciate your consideration.
Никаких своих резюме в гугл я не отправлял. Очевидно, меня кто-то порекомендовал. До сих пор не знаю кто)
Перед звонком меня попросили заполнить self-evaluation, на тот момент я оценил себя вот так:
Self Evaluation
_6 TCP/IP Networking (OSI stack, DNS etc)
_5 Unix/Linux internals
_6 Unix/Linux Systems administration
_2 Algorithms & Data Structures
_5 C
_4 C++
_4 Java
_5 Shell Scripting (sh, Bash, ksh, csh)
_0 Perl
_0 Python
_6 SQL and/or Database Admin
_8 Scripting language of your choice, not already mentioned: Ruby
Звонок
Ну и через пару дней состоялся сам звонок. Я к нему никак не готовился, думал там поговорим на общие темы и всё.. Оказалось, был неправ. В первом телефонном звонке гугл обычно проводит скрининг кандидатов. Это когда девочка-эйчар читает с листочка заранее заготовленные довольно простые вопросы(штук 10) и сверяет ваш ответ с эталонным.
Я к такому не был готов, и завалился на следующих двух:
- какая функция/команда возвращает всю информацию о файле - размер, даты, атрибуты - я знал, но в этот момент из головы вылетело((
- сколько бит в никсовом идентификаторе пользователя (uid) - тут я вообще ответил что 8 🤦♂️ и через 5 минут до меня дошло что 8 там не может быть ну никак хотя бы потому что мой uid на локалхосте равен 1000
В общем на этом моё первое собеседование в гугл и закончилось)
Я еще сразу же после звонка, осознав свои неверные ответы, написал рекрутеру письмо с правильными, но это естественно ничего не изменило.
Шпаргалка
Привожу список вопросов скрининга гугла и правильных ответов на них.
Как показывает практика, этот список не меняется уже лет 10.
Size of linux uid_t / gid_t
32 bits
Quicksort complexity
average: O(n log n)
worst case: O(n²)
Bubblesort complexity
O(n²) (both average and worst case)
TCP handshake
SYN, SYN+ACK, ACK
Linux system call for inode data
stat()
Default signal used in a kill command
TERM (15)
What information is in inode (index number)
short answer: File Metadata
long answer:
- file type (exe,block special, etc)
- permissions
- owner id
- group id
- number of hard links to the file
- file size
- time 3x (file access, change and modification) NO creation time.
- file deletion time
- ACL
What's NOT in an inode
NO creation time
NO filename
No directory path
What is the opposite function of malloc() in C?
free()
What Unix function lets a socket receive connections?
listen()
Powers of two
Не то чтобы нужно прям точно знать, но меня спросили - 2 в 24й степени это примерно сколько?
2**16 = 65.536 (65 thousand)
2**24 = 16.777.216 (16 million)
2**32 = 4.294.967.296 (4 billion)
2**64 = 18.446.744.073.709.551.616 (18 quintillion)
Rank the following in terms of speed:
1. access a register
2. access main memory
3. perform a context switch (depends on platform, may be faster than p.2 when hyperthreading)
4. HDD seek time
Signals
- SIGHUP
- SIGINT
- SIGQUIT
- SIGILL
- SIGTRAP
и т.д.
How many IP addresses does a network have with a netmask of:
/20 = 4096 (4094 ips + .0 + broadcast)
/21 = 2048 (2046 ips + .0 + broadcast)
/22 = 1024
/23 = 512
/24 = 256
/25 = 128
/26 = 64
/27 = 32
/28 = 16
/29 = 8
/30 = 4 (usable 2)
/31 = 2 (p2p, RFC 3021)
Вот собственно и всё. Эта шпаргалка очень пригодилась мне для последующих интервью в гугл, о которых я расскажу чуть позже.
Stay tuned.