수재들 쩔쩔...구글 입사 문제 보니

이재구 국제과학전문기자 jklee@zdnet.co.kr 2012.11.16 / PM 03:22 


"스쿨버스에는 얼마나 많은 골프공이 들어갈까요?"

"약 25만개입니다."
  
과연 회사 입사 지원자들 가운데 몇사람이 인터뷰 자리에서 이런 질문을 받자마자 머릿속에서 계산, 적절한(?) 
시간내에 정확히 답할 수 있을까?

실리콘밸리 최고기업에 오른 구글에 입사하려면 이런 문제를 입사 인터뷰 자리에서 풀고 답해야 한다. 
아이비리그나 매사추세츠공대(MIT), 스탠포드대를 졸업한 수재들조차 순간 멍해진다고 한다.

비즈니스인사이더는 15일(현지시간) 게일 라크먼 맥도웰 전 구글SW담당 기술자이자 구글입사원서(Google Resume) 저자가 미국의 수재들조차도 머리를 쥐어짜던 구글 면접관의 입사인터뷰 문제는 이제 금지됐다고 
전하면서 이같은 문제를 소개했다고 보도했다.  

비즈니스 인사이더가 소개한 악명높은 입사 인터뷰 시험문제는 구글에 입사시험을 본 적이 있는 사람으로부터 
확보한 140개 문제 가운데 일부다. 
 
수재들도 머리를 쥐어짜던 문제, 즉 브레인티저(Brain-teaser)는 일반인들에게 "과연 어떤 문제였길래?" 하는 
관심을 끌기에 충분하다. 구글이 금지시킨 이 '어리석은 질문'은 과연 얼마나 나쁜 것일까? 문제는 정말 아주
나쁜 것이었다. 


소개된 문제의 일부는 다음과 같다. 

▲ 스쿨버스에는 골프공이 몇 개나 들어가나?

▲ 시애틀시에 있는 모든 건물의 유리창을 닦아주면 얼마를 받아야 하나?

▲ 사람들이 오직 아들만 원하는 나라에서 모든 가족들이 아들을 낳을 때까지 계속 아이를 낳는다. 만일 그들이 
딸을 갖는다면 그들은 또 다른 아이를 가지게 된다. 만일 그들이 아들을 낳는다면 더 이상 아이를 갖지 않는다. 
이 나라에서 아들과 딸의 성비는?

▲ 전세계에는 얼마나 많은 피아노조율사가 있나?(시카고에는 얼마나 많은 피아노조율사가 있나?) 

▲ 샌프란시스코 재난시 재난대피 계획을 설계하라.

▲ 왜 맨홀 구멍 뚜껑은 둥근가? 

▲ 하루에 시계의 분침과 시침은 몇 번 겹치는가? 

▲ 데드비프(DEADBEEF)의 중요성에 대해 설명하라(SW설계부문 응시자) 

▲ 당신은 해적선장이고, 부하들이 어떻게 황금을 나눌지를 투표로 결정한다. 부하 절반이상의 동의를 얻어야 
황금을 당신의 뜻대로 나눌 수 있다. 그렇지 않으면 당신은 죽어야 한다. 황금을 가장 적당하게 나눠주도록 
하려면 부하들을 어떻게 구워삶는 말을 해야 하는가?

▲ 당신은 8개의 공을 가지고 있다. 이 중 7개의 무게는 같고 한 개는 약간 더 무겁다. 어떻게 하면 균형의 원리를 
이용해 딱 2번만 공 무게를 재서 더 무거운 공을 찾아 낼 수 있나?

▲ 8살짜리 조카에게 단 3줄의 문장으로 데이터베이스가 무엇인지 설명하라. 

▲ 당신이 5센트짜리 동전으로 줄어들고 부피가 이에 비례해 작아지면서 원래의 밀도를 유지한 채 믹서기에 
던져진다. 칼날이 60초동안 움직인다면 당신은 무엇을 해야 하는가? 

게리 라크만은 구글내에서 “만일 회사의 브레인티저 문제 금지 정책에도 불구하고 면접관이 입사지원들에게 
이런 문제를 질문하는 사람이 있다면 고용위원회는 이 인터뷰 결과를 신뢰하지 않을 것이며 면접관에게 그런
 어리석은 질문을 하지 말 것이라고 회신해 보낼 것”이라고 말했다. 
  
그렇다면 입사자들을 고문하던 이 머리 아픈 질문의 답은? 비즈니스인사이더가 공개한 답은 질문 순서대로 
다음과 같다.   

▲ 25만개의 골프공 

▲ 유리창 당 10달러 

▲ 50대 50 

▲ 조율수요에 따라 다르다 (12만5천명) 

▲ 둥글어야 빠지지 않는다 

▲ 어떤 종류의 재난을 말하는가? 

▲ 22번(AM 12:00 1:05 2:11 3:16 4:22 5:27 6:33 7:38 8:44 9:49 10:55 PM 12:00 1:05 2:11 3:16 4:22 5:27 6:33 
7:38 8:44 9:49 10:55) 

▲ 데드비프는 16진법값으로서 메인프레임시대의 디버깅에 사용됐으며 헥스덤프페이지에서 특별한 메모리를 
표시하고 찾기 쉽게 해준다. (대부분 컴퓨터공학과 졸업생은 적어도 어셈블리어수업시간에 이를 배운다. 
“쇠고기는 항상 죽어있다”는 답은 오답이다.)

▲ 51%의 최고 선원에게 공평하게 보물을 나눠준다 

▲ 먼저 8개의 공 가운데 6개를 골라 이중 3개를 한쪽 저울에 올린다. 만일 무거운 공이 6개 가운데 없으면 
나머지 2개 가운데 하나가 무거운 공인 것이 분명한 만큼 이를 저울에 다시 재서 확인하면 되고, 
만일 무거운 공이 좌우 2그룹으로 나뉜 6개의 공 가운데 있다면 무거운 3개의 공가운데 두 개를 재서 
확인하면 그것으로 끝이다

 ▲ ‘데이터베이스는 많은 것에 대한 많은 정보를 기억하는 기계란다. 사람들은 기억을 돕기 위해 
이를 사용한단다. 나가 놀아라.’

▲ 전기모터를 부수게 될 것이다.
  
MS도 과거에 이같은 악명높은 입사지원자 대상의 구두인터뷰 시험문제를 본 적이 있다. 

예를 들면 전성기 때 MS는 "후지산을 어떻게 옮길까?"라는 질문을 비롯해 이번에 소개된 구글 인터뷰
질문과 비슷한 질문을 입사자에게 물어 이들을 테스트 했었다. 

[저작권자ⓒ메가뉴스 & ZDNet & CNET. 무단전재 및 재배포 금지]


by kelicia 2013. 1. 27. 17:11

하아....

정말 어제 하루 종일 뻘짓을 달리고나서 포스팅을 하게됐다.

제목 그대로 HTML5 Canvas Element 를 사용할 때 주의할 점이 있다.


Canvas 요소에 관련된 예제들은 인터넷에 널리고 깔리고 w3schools.com 에도 잘 나와있지만

제대로 안 읽으면 나처럼 뻘짓을 하게 된다.......... OTZ

무턱대로 Canvas 를 썼다가 원하는 결과가 안 나오고 그 원인조차 못 찾으면 정말 미친다.


그 경우 이 Note 에 주의해야한다.



아래에 보면 밑줄 친 Note 에 꼭 주의하자.

반드시 Id, Width, Height 속성 값을 명시해줘야 한다. 

안 그러면 결과가 엉망진창인데다 나처럼 하루종일 뻘짓하게 된다.

( 그런데 필요에 따라 id 값은 반드시 꼭 붙일 필요는 없는 듯.. 하지만 width, height 명시는 반드시 해주자 )


이.렇.게.

왼쪽은 img 태그 사용한 결과,  오른쪽은 canvas를 그릇되게 사용한 결과.(drawImage 태그로 뿌려준 결과)

- canvas 에서 width 와 height 값을 명시하지 않을 경우 이 따위 결과가...orz 사용법을 잘 읽고 사용합시다.


이미지를 제대로 뿌려주기 위해서는 canvas의 width, height 속성 값이 뿌려줄 이미지 크기와 같아야만 한다.

( ※ 여기서 주의해야할 점은 canvas의 width, height 속성 값이지, 

 style(css)의 width, height 값이 아니다. )


나같은 경우, 여러 이미지를 갖고 계속 테스트를 해봤는데 width, height 를 css 로 조절을 하다보니까

계속 이상한 결과를 얻게 되고 - jQuery 를 사용하다 보니 .css() 함수로 조절했었는데..

'아니, 이미지 크기가 같게 변환을 해줬는데도 왜 안되는 거임? AO 빡쳐' 하다가 어쩌다보니

.attr() 함수를 찾고 해보니까 정말 매우 아름다운 결과를 얻었다. 하루종일 뻘짓하다보니 감격 T^T 엉엉orz


암튼 모두 주의합시다. 혹시나 나처럼 뻘짓하시는 분들 계실까 해서 포스팅 해봅니다. (울 이쁜 냥이에게 이 영광을)



마지막으로 주의해야할 점이 있다면 context.drawImage() 를 쓸 때 반드시

이미지가 다 로딩이 된 다음에 메소드를 실행해야지, 안 그러면 원하는 결과를 얻기가 어렵다.

이 얘기는 어느 블로거님의 포스팅을 읽고 알고는 있었는데, 여러 테스트(?)를 거쳐본 결과

onload 하고 drawImage() 를 걸어놨는데 그래도 가끔씩 이미지가 뻑나서... 완전한 솔루션은 못 찾았지만

메소드를 약간 천천히 유도(?)하면 - 예를 들어 이미지 로딩하는 데 0.4초 걸리는데 클릭을 0.5초 뒤에 한다던가.

정상적으로 뿌려진다. 워낙 테스트를 많이 하다보니까 테스트를 매우 빠른 속도로 하게 되는데 그때마다 거의 이미지가 뻑났다.

그래서 조금 천천히 테스트를 해보니까 대부분 정상적으로 뜨는 듯. 약간 애매하다.


뭐 어쨌든 그래도 해결해서 다행 ㅠㅠ


뜬금없지만 프로그래머든 뭐든 진짜 경험치가 높아야 하는 것 같다..... 

흑 정말 이거 찾아내느라고 12시간 넘게 붙들고 있었으니 orz


암튼 사용법을 정확히 알고 써야지 함부로 오남용은 ㄴㄴ

주의합시당


'Programming' 카테고리의 다른 글

Delegate (대리자)  (1) 2013.12.20
[Python, C#]Lambda Form  (0) 2013.12.19
PHP vs. Ruby vs. Python  (0) 2013.12.19
jQuery : css() 그리고 jQuery UI 소개  (0) 2013.01.02
jQuery : val(), text(), html()의 차이  (2) 2013.01.02
by kelicia 2013. 1. 11. 00:35


보통 html 문서를 컴파일할 때 css 파일이 있는 경우 이 파일 역시 컴파일 된다.

그리고나서 jQuery 를 이용해 어떤 html code를 삽입을 했는데 이미 css 파일이

한번 읽혀졌기 때문에 이 html code의 style은 정말 찾아볼수 없을 정도로 안 예쁘다. (필자의 경우 확 짜증이 난다)


이럴 때 html code를 한 뒤,

이 code를 가리킨만한 selector를 이용해 

$('selector').css(propertyName, value); 

요런 식으로 style을 입힐 수 있다. - 깨닫고 나서 엄청 감동먹음orz

value 말고도 function(index, value) 함수도 가능한듯. (자세한 예제는 http://api.jquery.com/css/ - only 영어)


꼭 이런 경우가 아니더라도 어떤 event가 발생했을 때 style을 바꾸는 아주 단순한 경우에도 쓰인다.ㅎㅎ

(예를 들어 버튼을 클릭했더니 글씨가 커진다던가, 배경색이 바뀐다던가 등)


뭔가 아리송한 건 .css(map) 인데 자세한 예제도, 설명도 없는 것 같아서 일단 PASS -



그리고... 내게 신세계를 열어준 jQueryUI (http://jqueryui.com/) .......

솔직히 UI API 라는 게 굉장히.. 뭐랄까 편리하면서도 제한적이라 좀 찜찜하지만 overwrite 가능하니까

결론은 편리하고 예.... 예뻐~~~~~ 흐흐흐


아코디언 타입의 메뉴 펼침 같은 경우 요렇게. 그 외에 많은 UI를 지원해서 한번 맛들리면 

직접 수작업하기 매우 귀찮아지는 경향이 생긴다는게 단점이랄까.


사이트 들어가서 요리조리 해봤는데 확실히 UI 사이트라 그런지 http://www.w3schools.com/ 보다 

훨씬 Test 하기도편한 것 같고 아기자기(색상, 폰트, 형태 등 전체적으로) 하면서도 예제 코드도 보기 잘해놨당 :D


jQuery 기본기도 없는 상태에서 코드가 굉장히 정신없어서.. 솔직히 처음엔 좀 많이 회의적이었는데

이렇게 또 써보니까 조금씩 재미를 붙이고 있다 ㅋㅋㅋ 한번 시도해 볼 가치가 있는 듯 하다.

게다가 지금 Node.js (한빛미디어) 책을 보고 있는데 온통 jQuery 코드라서 이해하려면 필수인듯 orz


'Programming' 카테고리의 다른 글

Delegate (대리자)  (1) 2013.12.20
[Python, C#]Lambda Form  (0) 2013.12.19
PHP vs. Ruby vs. Python  (0) 2013.12.19
HTML5 Canvas Element 를 사용할 때 주의할점 - drawImage() 관련  (2) 2013.01.11
jQuery : val(), text(), html()의 차이  (2) 2013.01.02
by kelicia 2013. 1. 2. 06:05

 참고 : http://api.jquery.com 


val() : Form Element 의 값을 받아오는데 쓰인다. (주로 input 이나 textarea 정도?)

- 주의해야할 점은 Form Element 이외의 값은 받아오질 못한다는 점.

★ val(value) : value의 경우 string 또는 string의 배열(이 경우 value들의 matching을 잘 시켜야 오류를 피할 수 있다) 

또는 함수(function(index, value) 이런 형태)로 넣을 수 있다.

이 함수 역시 Form Element의 Value 값을 Set할 때 주로 쓰인다.


text() : XML과 HTML 문서에서 둘다 사용될 수 있다. input elements 의 value를 받아오지 못한다(이 경우 val을 사용)

아주 쉬운 예로 <button>1</button> <button>2</button> <button>3</button> : button 대신 li 라던가.

$('button').text() 의 결과는 1 2 3 이다. 이런 식으로 사용된다. 

tag attribute의 value가 아니라(대표적으로 form 요소들) <tag>_____</tag>에서 _____에 해당하는 value를 get한다.

참고 사이트에 의하면 The .text() method cannot be used on form inputs or scripts. 

라고 적혀있다. ( form inputs 의 경우 val()를 말하는 거고 scripts 의 경우 html()을 가르킨다. )

● text(value) : textString 또는 함수(function(index, text) 이런 형태)로 넣을 수 있다. 이 역시 Set 하기위해 쓰인다.


html() : XML 문서는 사용 불가, HTML만 가능. value가 아니라 html code(contents)자체를 get한다.

class 네임이 여러 개 매칭되는 경우 제일 처음 매칭되는 class 안에 속하는 html code만 가져온다.

api 설명에 의하면 IE의 경우 알파벳 문자를 포함하고 있는 속성값들의 경우 " ' " (quote)를 빼먹고 get 할 수도 있다고 한다.

html(value) : htmlString 또는 함수(function(index, oldhtml) 이런 형태)로 넣을 수 있다. 이 역시 Set 하기위해 쓰인다.

class 네임이 여러 개 매칭되는 경우 매칭되는 모든 class 내부에 html code를 삽입.

만약 class 내부에 이미 어떤 code가 삽입되있는 경우, Set 할 html code로 완전히 Replace 해버린다.



by kelicia 2013. 1. 2. 05:37
| 1 ··· 3 4 5 6 |