Recent Posts
Recent Comments
Link
관리 메뉴

NaggingMachine

구글 인터뷰 본문

TechnoBabbler

구글 인터뷰

naggingmachine 2006. 11. 22. 11:39
1차 구글 인터뷰 문제들
1) Stack을 구현하라
--> dynamic array나 linked list 모두로 구현할 수 있음
2) Stack을 이용하여 Queue를 구현하라. 시간은 O(1) 이어야 한다.
--> 두 개의 스택을 사용하면 queue를 구현할 수 있음
3) 숫자를 포함하고 있는 배열에서 두 개의 숫자를 뽑아서 X라는 숫자가 나올 수 있는 숫자 두개를 찾아라.
--> 정렬해서 양 끝부터 하나씩 가운데로 이동하면서 비교
4) struct와 class의 차이에 대해서 말하라
--> class와 struct는 모두다 동일하나, 기본으로 private인지 public인지만 다르다. C++에서는 하위 호환성을 위해서 struct 지원
5) copy constructor와 생성자와의 차이점에 대해서 말하라
--> 객체를 생성하고 초기화하기 위한 것과 기존의 다른 객체로부터 데이터를 복사하기 위해서 만든것의 차이.

2차 인터뷰 질문들
1) 정렬된 두 배열 a와 b(크기는 각각 N과 M)가 있다. 두 배열의 교집합 c를 만들어라. a는 새로 들어오는 b 데이터의 합집합으로 계속해서 크기가 증가한다. b는 새로운 입력값으로 매번 배열의 크기와 값이 달라진다.(내 생각에 검색 문제인것 같음).
--> 일반적인 순차적인 검색과 크기가 큰 배열을 binary tree로 생각함으로써 log(n) 시간에 해결하도록 하여 문제를 해결하였음. 인터뷰어가 놀라는 상황
--> 문제의 크기에 따라서 서로 다른 알고리즘을 사용하면 됨
if ( (N+M) > N*log(M) )
  순차 비교
else
  바이너리 비교
2) int 형의 숫자가 있을 때 그 숫자의 순서를 바꾸는 함수를 작성하라.
예) 53721 --> 12735
--> 원래의 숫자를 끝에서부터 가져온 다음, 매번 반복할 때마다 10을 곱해서 더하면 됨
--> 간단하게 문제 해결
3) 스택이 메모리 상에서 위에서 아래로 자라는지, 아니면 그 반대인지 확인할 수 있는 방법은?
--> 배열을 선언하고 확인하든지,
--> 두 변수를 선언하고 확인하든지,
--> 변수 하나를 선언하고 ESP 값을 확인하든지,
--> 쉬운 문제 였음

3, 4, 5차 인터뷰 질문들
1) Regular Expression을 이용하여 숫자만 찾아내도록 해라
2) 웹 브라우저에서 특정 주소를 입력하여 HTML을 받아오는 모든 과정을 설명하라.
- 쿠키는 어떻게 작동하는가?
3) EMail 클라이언트를 만든다고 했을 때, Spam 필터링을 위한 컴포넌트를 구현하라.
4) 어떤 돈을 지불해야 하는 총 경우의 수를 구하는 알고리즘을 작성하라.
5) Computer Science 책 중에서 가장 좋아하는 책이 무엇인가? 제목과 저자 이름을 말하고 그 책이 좋다고 생각하는 이유를 말해보라.
6) 스크립트 언어를 사용할 줄 아는가?
7) 달걀 2개가 있다. 달걀을 떨어뜨렸을 때 달걀이 깨지는 가장 낮은 층을 찾아내는 가장 빠른 방법은 무엇인가?
8) anagram을 찾는 알고리즘을 작성하시오

관련 링크들
http://asimjalis.blogspot.com/2004/05/software-interviews.html
http://www.tekpool.com/
http://www.winapi.co.kr/clec/cpp2/cpp2.htm
http://devendersarangdevot.blogspot.com/2005/11/puzzleelelee.html

ALGORITHM 2 Select (k, L): Select k largest elements of L.
http://comjnl.oxfordjournals.org/cgi/content-nw/full/49/3/358/TBL2

추가로 살펴볼 사이트들
http://otherthingsnow.blogspot.com/2005/10/google-interview-questions-they-are.html
http://discuss.joelonsoftware.com/default.asp?jobs.10.119676.5
http://www.drizzle.com/~jpaint/google.html
http://scobleizer.com/2006/11/01/first-google-interview-google-reader-team/
http://alien.dowling.edu/~rohit/wiki/index.php/Google_Interview_Questions
http://paulm.com/inchoate/2006/03/google_interview_questions.html
http://www.shmula.com/31/my-interview-job-offer-from-google
http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_cs;action=display;num=1159428586
http://www.ninjapirate.com/google-interview.html
http://www.hawaiistreets.com/seoblog/?itemid=779
http://meems.imeem.com/mcKJhxdl,google_interview_questions
http://reddit.com/search?q=google+interview+questions&s=controversy
http://work.tinou.com/blog/2006/02/google_intervie.html
http://alien.dowling.edu/~rohit/wiki/index.php/Talk:Google_Interview_Questions
http://www.allinterview.com/company/Google/interview-questions.html
http://www.damox.com/2006/01/google-interview-questions-they-are.html
http://improvedexperience.typepad.com/want_better_hires_recruit/2006/06/word_of_mouth_a.html
http://www.simpy.com/user/imsaar/tag/interview/p=0,50
http://memo.isloco.com/624
http://kldp.org/node/58570
http://jbpark.tistory.com/tag/%EC%9D%B8%ED%84%B0%EB%B7%B0

------------------------------------------

here is some stuff from Mr. MS....

i have tried some….

Left others for later…. If you will be able to find the hyperlinks in this, you will find how dazzling the place is !


1) Roman Numerals

Write a C function, int rtoa(char* s), that converts roman numerals such as XIX to integers.

2) Permute Array

Write a C function that permutes an array, int* a, in place without allocating any more memory, so that every permutation is equally likely. Prove that every permutation is equally likely.

3) Maximize Sub-Array Sum

Suppose you have an array of N random integers (can be positive, negative or zero), int a[N]. Find the indices i, j <>

4) Implement Queue Using Stack

Suppose you are given a stack implementation with the normal stack operations (create, delete, push, pop). How would you implement a queue using these stacks? All the queue operations (create, delete, enqueue, dequeue) should take O(1) time.

5) Find Smallest Without Sorting

Given N integers find the 10 smallest in O(N) time.

Suppose you have N points in 2D coordinates (each point is made up of x and y, which are both floats). Find the 10 points closest to the origin. The algorithm should take O(n) time. O(n*log n) algorithms are not acceptable, but you may want to try that first

as a way to warm up to the problem.

6) Print Tree by Levels

Suppose you have a binary tree containing N nodes. Each node has a Name, a LeftChild and a RightChild. Describe an algorithm to print the tree by levels. Print the root first, then all the children of the root, then all the grandchildren of the root. This is not as easy as it sounds. Your algorithm must take O(N) time.

7) Implement an algorithm to sort a linked list.

8) Reverse a string

9) Given a linked list which is sorted, how will you insert in sorted way.

10) Write a routine that prints out a 2-D array in spiral order.

11) Write a routine to draw a circle given a center co-ordiante (x,y) and a radius (r) without making use of any floating point computations.

12) Write efficient code for extracting unique elements from a sorted list of array.

13) Print an integer using only putchar. Try doing it without using extra storage.

14) Write a funtion that finds repeating characters in a string.

15) Write a routine to reverse a series of numbers without using an array.

16) Write a function to find the nth item from the end of a linked list in a single pass.

17) Find the first common ancestor of two given nodes in a tree, find complexity, if it's a binary tree or if it is not.

18) Tell fastest method to multiply with 7.

19) Binary tree traversal without recursion.

20) Find if two given strings are anagrams or not, with least complexity (i.e. nlogn).

21) You are given a matrix and you have to print it in a spiral way e.g.

1 2 3 4

5 6 7 8

9 10 11 12

Now, the output should be 1 2 3 4 8 12 11 10 9 5 6 7 and, similarly generalize for large matrices.

22) Suppose you are given a sentence then you have to print it but the words should be reversed.

e.g.

This is a very good college.

<span style="font-size: 100%; color: black; font-family: Times New