- Definitely have some experience with reading and writing code. - Practice explaining what you're writing/thinking. As a part of the technical interview, you are evaluated on how well you are able to convey your ideas to the interviewer. - The best approach to nailing the technical interview the following: 1. Clarify the question make sure you completely understand what is being asked before proceeding. 2. Come up with examples etc. 3. Think of any edge cases that may occur and either account for those or ask the recruiter if you even need to account for those 4. Talk about ways to solve the problem before writing any code. Pick one and explain why its better than the others 5. You can also go and solve using a brute force approach and talk about the first solution that comes to mind, but be prepared to talk about how you could've improved you solution at the end of you interview (in actual software engineering interviews you will be asked about runtime complexity afterwards, but not for EP) 6. Write commented code about what you need to do before you write any actual code 7. Write the code to do what you commented
Any tips that apply to other interviews apply for Google as well!! Know your data structures very well, as well as all the basic algorithms. Think out loud and don't be afraid to ask for hints. Communicate as much as you can! And finally. Practice!! Mock interviews are probably the best way to practice, as opposed to doing leetcode problems by yourself. Definitely try to get a study group together and help each other out!
In a technical interview, they usually ask algorithmic problems and give you time to work on it and solve it. Then you have to write (an approximation of) an implementation in a language of your choice. In the next phase, project managers (your potential host/mentors) will discuss their work and see if you are interested. You can discuss any related works that you have done or familiarity with a relevant tool.
In terms of technical skills, be very familiar with at least one production language (something like Java, C, C++, Go, etc), e.g. have done a large scale project, something on the scale of CIS380. Get a general feel of how things are done in industry, such as code review and internal tools. If you've TA'd 120 or 121 you probably have a good idea of what this is, if not, talk to a TA! Have general knowledge of how things are made/powered, from the ground up. A good exercise for this is to run through a (very) rough idea of how a service such as Netflix is made. Start from a personal computer visiting the website, and see how far you can go. Classes such as NETS212, CIS505, and CIS555 can help you fill in gaps. That being said, production vs school is a huge difference, don't expect to know everything when you start an internship, it's OK! Your team won't expect you to know everything either, you're there to learn.