Skip to main content

실리콘밸리 구직 체험기2_201505 - 5. 기억나는 onsite 인터뷰


Groupon: 주워진 restful api를 이용해서 목록 UI를 구현하기, 갑작스런 javascript 문제로 버벅거렸고 javascript 안써본 사람이런 평가를 받았습니다.

Frankly: log 분석을 위한 아키텍쳐를 구성해보라고 했고 apache tajo를 이용한 해법을 설명했더니 외부 솔루션 의존적이라 자체 구현 능력이 있는지 모르겠다는 평가를 받았습니다. 로그 분석은 매 프로젝트에서 언제나 하는 것 아닌가? 새로운 해법을 제시했더니 사족이 된 건지 모르겠습니다.

Samsung Lab: 10개의 계단을 올라가는 경우의 수를 구하는 프로그램을 작성하라고 해서 node를 이용해서 이것 저것 지도 했는데 그냥 피보나치 수열이라고 했습니다.

Phone Veeva: Object가 어떤 method들을 갖고 있는지, 자바 스크립트 inheritance 구현을 어떻게 하는지, generic 타입을 쓰는 이유가 뭔지 어떻게 쓰는지 이것저것 놓친 것이 너무 많아서 챙피했습니다.
Resilient: queue 2개로 stack을 구현하라고 했는데 이렇게 작은 회사에서도 코드인터뷰는 쉽지 않았습니다.


한번은 full-stack senior 엔지니어 면접을 보면서 다음과 같은 질문들을 받았습니다. back-end와 front-end 전체 분야를 다 깊이있게 물어볼 경우 탈탈 털리는 느낌이였습니다. 특히 javascript 문제에 대한 준비가 제대로 되어 있지 못했습니다.
- java, framework 일반적인 질문
- was, linux 일반적인 질문
- 멀티 쓰레드 프로그래밍 (쓰레드간 순서 통제 등)
- architecture, deploy, development 방법
- javascript concept / coding (상속, closure)
- SQL 쿼리 문제
- 출력된 자바 코드를 보여주고 JAVA 코드 수정하기


ㅇ full-stack 엔지니어
full-stack은 분명 선호됩니다. 특히 startup에서는 분명하며, 중견회사에서도 그 수요가 있거나 full-stack이라는 것을 밝혔을 때 싫어하지는 않습니다. 다만 중견기업 이상에서는 back-end, front-end 개발자 보다는 수요가 많지는 않으며 인터뷰시 각각 몇 % 비중인지 물어본다.(예를 들어 70% - 30%) 그리고 full-stack은 주로 modern development에 해당됩니다. (ROR, Django, Node.js 등)


다만 full-stack이라 할 경우 전문성이 떨어질 것이라는 우려를 하는 것 같다. 당연히 back-end와 front-end, test를 분리할 경우에 waiting time이 급격히 늘어 날 수 밖에는 없습니다.
shutterfly 인터뷰 볼 때 그 팀장이 얘기를 하길, 몇개의 회사들을 merge해서 그 회사들의 웹앱을 동일한 platform으로 통합하고자 했습니다.
이런 일을 하기 위해서는 다양한 f/w에 익숙하고, front-end, back-end를 쉽게 아우를 수 있는 엔지니어가 필요하다고 했습니다.
본인도 현재 hand-on 기술로 작업 중이며 팀원들이 front-end, back-end를 분리하여 접근하는 것을 원치 않는다고 했습니다.


server-side java engineer를 뽑는 몇몇 회사의 인터뷰에서도 front-end와 devop 경험을 얘기했을 때 메니저들은 모두 좋아했으나,
코드 인터뷰할 때 간간히 까다로와 졌다. 특히 저는 javascript 인터뷰가 쉽지 않았습니다.


ㅇ 회사 분류
사실 apply도 제대로 안했지만 많이들 알고 있는 큰 기업, 예를 들어 google, facebook, apple 등 에서는 연락조차 않았습니다.
내가 생각하는 회사를 grouping해서 제 느낌을 적어보면
- 알려진 IT기업 (google, facebook, apple, amazon, samsung...)
- 먼저 연락오지 않음
- reference를 통해서도 연락이 안올 수 있음
- 경쟁이 치열함
- 초반 screening이 까다로움 (amazon online에서 버벅 거림)
- 알려진 비IT기업 (wallmart, workday...)
- 먼저 연락오지 않음
- 생각보다 인터뷰가 쉽지 않음 (경쟁이 치열)
- 초반 screening이 까다로움 (workday assignment 문제 제시간에 못풀었음)
- 중견 IT기업 (Groupon, Yelp, Tango, zinga, fortinet, veeva ...)
- 많은 기업이 있음 (기회가 많음)
- 규모가 클 경우 생각보다 인터뷰가 어렵지 않음 (Yelp)
- 코드인터뷰가 만만치는 않음
(Tango assignment 문제 제시간에 못풀었음)
(Groupon, veeva 인터뷰 버벅거림)
(square pair programming에서 시간 부족)
- 중견 비IT기업 (shutterfly, lyris...)
- 인터뷰가 상대적으로 쉬움
- 코드인터뷰가 normal 함
- 다양한 경험으로 포장하기 쉬움
- small company
- 채용에 신중하여 딱 맞는 사람이 아니면 채용을 하지 않으려 함
- 한국계 company (frankly, coffee&bagel, samsung, fronto)
- 오히려 더 쉽지 않으나 그 이유를 알 수 없음
- Staffing company
- 항상 열려있으나, 보수가 2~3만불 낮음. 일반회사에서 H1B transfer를 받지 못했을 경우 Staffing company에서 대신 H1B transfer를 해주고, 그 회사 직원으로서 고객사 프로젝트에 투입됩니다. (SI 회사와 같은 구조), 이곳에서는 고객사 프로젝트의 면접을 통과할 수 있도록 다양한 지원을 해줍니다.


Comments

Popular posts from this blog

DevOps JD's required skills from LinkedIn

From some of DevOps JD on linkedIn, I realised that DeveOps should be the leader of the organization. https://docs.google.com/spreadsheets/d/1P520nH0pYcAdN0rJcnMQqsgu9cV9GdknztJ92J8l7-s/pubhtml DevOps' Required Skills From LinkedIn on 8/30/16: DevOps should be the leader of the company! Yahoo Netflix Samsung Salesforce Fortinet SUM OS admin UNIX systems Unix platforms Linux administrator Linux VMs Docker VMs VMware, OpenStack, Hyper-V Openstack, KVM, VMWare Version control version control systems Git, SVN Cloud Amazon AWS AWS AWS, Azure DB MySql Oracle, MySQL, NoSQL Mysql administration and strong command of SQL MySQL RabbitMQ MySql, MongoDB, Redis, Oracle, ProgreSQL N/W TCP/IP networking, DNS, HTTP NAS Understanding of network stack, network tuning, subnet/VLANs. HAProxy, DNS, IPTable Script Lang Shell, Perl, Python, Ruby, PHP bash Python, Bash/tcsh a scripting language: Perl, Python and Unix Shell preferred Python, Perl, Ruby Python, Ruby, Shell, PHP Web LAMP stack

Ubuntu GUI with VNC on Xenserver

Xenserver 에서 Ubuntu GUI 를 쓰기 위해서는 VNC 가 답인 듯... Installing Ubuntu Gnome GUI on Ubuntu Server 12.10 with VNC Update Repositories # apt-get update Install gnome and vnc: # apt-get install gnome-core vnc4server Start VNC Server: # vncserver (You’ll then be prompted to create and verify a new VNC connect password) Kill the currently running VNC Session: # vncserver -kill :1 Edit VNC startup config file: # vim .vnc/xstartup Uncomment the following line: unset SESSION_MANAGER Add the following line: gnome-session --session=gnome-classic & Comment Out the following two lines: x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & End result should look like: #!/bin/sh # Uncomment the following two lines for normal desktop: unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc gnome-session --session=gnome-classic & [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 755 coreos-install sudo ./coreos-install \       -d /dev/sda \       -