Interviews

From Foreignliving

(Difference between revisions)
(Others)
(Google)
Line 87: Line 87:
===Google===
===Google===
-
(Contributions needed)
+
How do you think orkut keeps track of your friends lists.
 +
ANS: Using graphs.
 +
 
 +
How do you find the shortest path in your friends list to some one.
 +
ANS: Use dijkstra.
 +
You actually have to tell them how dijkstra works.
====Selection Process===
====Selection Process===

Revision as of 20:26, 10 February 2007

The article below generally concerns itself with job/internship interviews. Some of the advice is specific to the first-interview, also called the screening interview.

Contents

General Interview Tips

(someone should take the time and re-order the following in order of relevance or importance)

  • Prepare a 30-second introduction. The first question you'll get in most cases is "Tell me about yourself."
  • Be relaxed, but confident and professional in your behavior. Avoid using words like "um..." and "like..."
  • Keep a check on non-verbal actions. Some people get carried away with hand waving and gestures and don't notice it due to nervousness.
  • If the dress code is not specified, be conservative and wear a business suit, especially if you are in the US and the interview is for a full-time position. Otherwise a business-suit is not needed when the dress code is specified as business casual or casual.
  • Avoid close-ended answers like just a "yes" or "no".B
  • Be formal when using written communication with the hiring manager. e.g. don't start emails with "Hey, "
  • Know what kind of interview you're in for. Is it a panel interview? A one-on-one interview? Mentally prepare yourself for it ahead of time.
  • Know your interviewer, his/her position/role/responidibilities. Is it the PM, or the director, or the sysadmin.
  • Know the company from a business and technical perspective. You can get questions like "So what do you know about our company..." to see how enthusiastic the candidate is and how much research he has done on the company. This kind of research is easy to do, most company have this info on their websites.
  • If you plan to send a thank-you letter as a followup (see job search letters), then it is ok to do so by email. Don't wait to send by post, decisions are made quickly.
  • Hone your analytic and problem-solving skills
  • Ask relevant questions

Technical Interview Tips

  • Technical interviews provides a means to the employer to gauge what do you really know, how much have you really done.
  • Talk through your thought process (think aloud) so that they can see how you diagnose the problem. The answer is not what's most important to them.
  • Make sure you understand the question before you start answering. You can say "let me make sure I understand the question..." to confirm.
  • Don't be afraid to say "I don't know" when you really don't know.
  • Refer to your resume if you get the opportunity.
  • Learn from experienced interviewees, ask them what would they do differently.

Advice from Gayle Laakmann's website (weblink)

General Tips

  • There are five basic types of questions that I see: fluffy questions, terminology, coding, algorithm and data structures
  • Start talking as soon as you get a problem... show your thought process. Never give up on a problem
  • All the stuff you learn in algorithms and datastructures and computer architecture really is important...
  • Ask for clarifications when you need to. Some interviewers will purposely give you a vague question to see if you'll just try to blindly solve it without understanding the entire problem
  • Be talkative and friendly.

Fluffy questions

  • Example: What's the most challenging project you've worked on? What would you differently?
  • Here is where good communication skills matter the most
  • Just be prepared for this
  • Know your projects well... Be prepared to talk about what you specifically did

Terminology:

  • Example: What's the difference between a binary tree and a heap? When is one better than the other?
  • Example: What's the difference between recursion and iteration? (aka, in terms of computer architecture)
  • Example: What's the time and memory usage for inserting something into a binary tree?
  • Make sure binary trees, heaps, linked lists, arrays, etc are fresh in your mind. Linked lists can be double linked or singly linked
  • Be prepared to say when lists are better than arrays and come up with examples
  • Refresh your memory on stacks... Talk about things in terms of computer architecture when possible
  • Recursion through a linked list uses O(n) memory because of the stack
  • Running time can be discussed in terms of max time or average - offer both. Insertion time into a binary tree is O(n) for max time, but O(lg n) for average

Coding

  • Example: Write code that inserts a node into a binary tree
  • Example: Write atoi
  • Example: Write a function prime(n), that finds the nth prime number. And how would you test it?
  • Talk about and work out your algorithm before coding... Even if you don't know how to do it, just start talking about your various ideas and why they wouldn't work
  • Practice ahead of time by writing code on a piece of paper, then typing it up and running it and see how you do. Practice in particular problems with string manipulation
  • Be prepared to answer what the running time is and what the memory usage is
  • Offer to do a problem either recursively or via iteration, if possible... If they don't say anything, do it via iteration, since it uses less memory
  • Be prepared to have to code on a white board
  • Check: did you do the appropriate bounds checks? Did you check if things are null? Run through a couple steps of your code to verify that it works

Algorithms

  • Example: If you have a bunch of points on a graph, how would you find the line which crosses through the most points? (you actually want to return the set of points though, not the line)
  • Start talking immediately and talk your way through a problem. Offer any solution you can think of, even if it's not right. Algorithm questions are not just about getting them right or wrong - it's about employers learning how you think

Sample algorithm questions:

1.) You are given a m X n maze with a given start and end position and also some blocks of unreachable cells. You are also given the start and end condition. Your job is to find the shortest path.

Ans: Depth or breath first search. Or convert maze in to a graph and apply Dijkstra. A follow up question could be which is better DFS or BFS. A possible answer could be that dfs is better when only the right path is deep and the others bump against dead ends quickly. If you have high branching , then BFS is better.


Data Structures

  • Example: What are the classes and data structures you would use for a file system
  • Example: What kind of data structure would you use to implement a map (not a location map... But rather a mapping from a key to a value)
  • When you're supposed to come up with the classes, start with the major ones and then go into what their members and functions are. Explain if it may be appropriate - and why or why not - to make, say, an application class a subclass of a file class
  • Scan through each of the main data structures (binary tree, array, sorted array, linked list, double linked list, heap) and figure out which ones may work. Typically more than one could work, but one may be better than the others depending on the solution. For example, for the map, if you pretty much know the range of possible values for the keys, a hash table may be good. Otherwise, it may be best to use a tree. But, if you're going to be accessing elements a lot and rarely inserting elements, maybe an array would be best.

Company Specific

Info needed: what is the typical procedure, how many interviews are held? What to expect at screening interviews, and on other on-site interivews?

Amazon

(Contributions needed)

Selection Process

  • 90 minute screening interview
  • ...

Google

How do you think orkut keeps track of your friends lists. ANS: Using graphs.

How do you find the shortest path in your friends list to some one. ANS: Use dijkstra. You actually have to tell them how dijkstra works.

=Selection Process

  • Initial screening interview either at your university campus or via telephone.

Microsoft

From the Microsoft website (http://www.microsoft.com/college/int_overview.mspx):

Once your recruiter has had a chance to review your resume and gotten to know you a little better through brief chats or e-mail, they may wish to schedule an initial interview with you. These interviews are very casual and are usually held over the phone or on your campus. They are intended only to give us a general idea of your skills and interests and are usually not for specific open positions or teams.

Some things to keep in mind:

  • Be prepared to discuss your strengths, expertise, and any experience or previous jobs that appear on your resume.
  • If you're interested in one of our core technology positions-Software Design Engineer, Software Design Engineer in Test, or Program Manager-you may be asked some general problem-solving, design, or algorithm questions.
  • If your passions run to other disciplines such as sales, finance, or user assistance, be prepared to answer general questions in your field.
  • Ask your own questions. After all, this isn't just about Microsoft learning about you, but you learning about us, too.

Selection Process

  • 30 min screening interview either at your university campus or via telephone.
  • subsequent interviews take place at Microsoft campus

Others

            • For Hardware Related companies *****

http://www.softwareinterview.com

Check this website for some questions repository. Go through as many questions as possible.


They give a simple problem. You have to solve it using a state machine. Then they ask you to make a mealy and moore (you should know the difference). Also ask you to implenet using D,T or J-K Flip Flops.


Difference between Flip flops and latches.

Setup hold-time, their violations and solutions.

Clock skew. How to avoid. How dual clock helps?

What do you mean by CMOS?

Make a 3 input NAND using CMOS.

Make a stick diagram of it.

Define Elmore delay?

Input that changes last should be tied closest to the output or not in CMOS? Explain?

What are keepers in designing latches?

Pulsed latches vs clock edged ones?

Can you have negative hold, setup...make come circuit

Whats are static 0 and 1 hazards..How to avoid?

Tell in detail about meta-stability and how to avoid it?

Use of buffers? How do they help in noise?

How can buffers reduce elmore delay?

Use verilog to make a MUX, Priority enocer, Decoder and memory.

Difference in combinational and sequential...How to make combinational and sequential in verilog?

They give a simple circuit and you have to make into multi level...or into NAND NOR circuit.

When does verilog imples latches? How to avoid them?

State table reduction method should be known.

Logical effort, stage delays, electric effort etc and their formulas

Basic Domino , dynamic and skewed gates. Their functionality and principles.

P-transistor and n-transistor and their ability to pass strong or weak 1's or 0's..

Make inverters, NAND gates etc that reconstruct signals rather than operating on the input..

Links

Personal tools