Найти тему
0ldgeek

Как я собеседовался в Google - 1

Оглавление
Логотип Google в музыкальной комнате в офисе Google в Цюрихе. Фото моё.
Логотип Google в музыкальной комнате в офисе Google в Цюрихе. Фото моё.

Письмо

В начале августа 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) и сверяет ваш ответ с эталонным.

Я к такому не был готов, и завалился на следующих двух:

  1. какая функция/команда возвращает всю информацию о файле - размер, даты, атрибуты - я знал, но в этот момент из головы вылетело((
  2. сколько бит в никсовом идентификаторе пользователя (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

  1. SIGHUP
  2. SIGINT
  3. SIGQUIT
  4. SIGILL
  5. 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.