Current location - Training Enrollment Network - Mathematics courses - How to Prepare for Internet Company Interview (Algorithm Related)
How to Prepare for Internet Company Interview (Algorithm Related)
Books: Introduction to Algorithms is a big book that many people can't finish reading. I haven't finished reading it myself. It's been with me for so many years, and it's completely a book I've been reading. Every time I look at it, I find that there will be new gains. For example, there is no known algorithm to find the number of k digits or the median with an average complexity of O(n). I didn't know there was a special section in the Calculation Guide until I saw the reference materials in other places. Undergraduate course is basically intensive reading, and the first year of research is also intensive reading, which belongs to rough reading. But in fact, many theories and graph theories have not been completed. Personal recommendation, from a simple start, select some familiar knowledge about data structure as the starting point. The exercises in this book are very important. If you have time, it will be amazing if you can finish it all. In fact, I focus on the second part (sorting), the third part (data structure), the fourth part (advanced design, I basically look at dynamic programming and greed), the fifth part (advanced data structure, B-tree and binomial heap, union and difference), and the sixth part (graph algorithm, the maximum flow part is difficult, I can master it according to the situation). These parts can start with the algorithm itself, and all pseudo-code can be understood. Because the introduction of the algorithm is very detailed and contextual, it will not be too difficult. Mathematical proof is recommended for everyone to master, but you can look at it selectively when you are surprised or for the first time. I read it again and again before I saw the proof. I basically skipped it when I first saw it. However, proof and practice are the essence! I hope I can make it up sometime. The book "The Beauty of Programming" and "Challenge Programming" is definitely a magic book that will upgrade the interview question bank of all domestic enterprises or some lazy enterprises. When Baidu met my brother, my brother came up with the best answer to a question directly. But the interviewer obviously doesn't know the optimal solution and has been guiding my brother to answer the fourth solution in this book. Ha ha. This book is very good. It's not difficult to read it all. Say something unpleasant, you can recite it, and believe me, it's basically absolutely useful! Like n! How many zeros are there after it? I believe you will also encounter this problem in this year's interview or written test. "Challenge programming" can be considered by yourself. This is all about acm competition, but the topic is not bad. Programming Pearl is a magic book in the industry. Just finish all the exercises. In fact, it's all trivial matters, but it's basically a step-by-step examination of your problem-solving ability. Personally, bitmap is the most commonly used to sort or copy, and the extension is bloom filter, which I saw in this book at that time. The book "Handbook of Algorithm Technology" doesn't seem to appear much. The book is very thin and the code is well written. In fact, it is basically the realization of basic algorithms and data structures. However, it is awesome because the code is so well written. Basically, after reading it, you can definitely recite it. The basis of the interview is very important. Basically, every written test or interview will be a small program of 100 lines. For example, given a tree and one of its nodes X, it is non-recursive to find the subsequent nodes of X in the middle traversal sequence of the tree. This kind of question is very simple, but there are not many really correct ones. STL source code analysis and C standard library are not thick. It's very comfortable to see it once. In particular, look at each data structure iterator type of STL and how the red and black books are realized. C standard library, the most common, such as strcpy () and memcpy (), what's the difference? STL, in particular, can still have some understanding of generics after reading it. C expert programming the first book, effective C++ and c++ object model depth exploration is relatively simple, can be read as a gossip book. In fact, there is nothing to say about the last two books. In fact, it is recognized by the industry. I don't need to repeat it. But, in fact, the survey is basically about things in these books. Basically, the last two books are mainly about c++ objects, especially those related to polymorphism. In fact, both concrete mathematics and combinatorial mathematics can be regarded as self-cultivation books. I finished reading it when I had enough time. Pure assault, you can skip it. However, it is really useful after reading it. For example, you can tell the interviewer about the structure of Joseph ring (I think this problem will be encountered in 80%), and directly deduce the formula, so you don't have to write simulation code. So is "Combinatorial Mathematics". Many written tests generally have some small puzzles. However, in fact, ordinary problems can be solved without reading this book. So these two books are for reference only. You can flip through it when you are interested. "Linux kernel source code analysis" and "advanced programming in Linux environment" ... if there is an opportunity, you'd better take a look. Because many companies will examine the knowledge related to Linux. Know at least some scripts, some simple Linux commands and regular expressions. If you can talk about kernel source code or driver development, the interviewer will definitely like it better. Knowledge: C &;; C++ must first know the difference between C and c++. Always test the usage of const and some uncommon keywords, such as extern and static. The difference between structure and class. The word alignment of a class means how big a class is. And how big the empty class is. Virtual function and polymorphism are obviously the key points. For example, when the destructor needs to be written as a virtual function, and whether the constructor can be a virtual function. int a[ 10]; A and&; A. the difference between Java, I am not familiar with Java. But basically, you will definitely get some knowledge about virtual machines and GC. Then, the general recruitment of java programmers will ask many questions about multithreading and hadoop! This is definitely the key point, Taobao is definitely asking this. The operating system depends on the actual requirements of the work. Basic process thread difference = = will definitely be asked. If the requirements are higher, you will ask a lot of questions about multithreading programming. Some basic knowledge such as competitive deadlock, some process scheduling algorithms, and recently the kernel seems to use CFS scheduling algorithm. Shell programming, how to read the program stack, write some core dump readers and so on. The data structure should basically be able to write all kinds of. All tree-related operations should have some non-recursive versions. There are not many pictures in the general exam. Flood filling algorithm and so on. Find the median. B-trees and red and black books are the best to master. You don't have to be able to write, just be able to lay the foundation. KMP, this is likely to be tested! And it's really, really hard to understand. If it really doesn't work, recite it. Ha ha. The network is actually quite basic. My personal network knowledge is not good. But the basis of various protocols, several handshakes, whether the api implementation of some operating systems is simplex or duplex, TCP or UDP. My personal network is purely based on RP. Database. Database is very important. Basic SQL is definitely a must. The most common problem is the difference between inner connection and outer connection. MySQL is the key point, and basically many companies will ask. Then, Baidu pulls more things that will pull MySQL engine with you. I don't quite understand these. If you can prepare, or if you really do, you can focus on preparing more. Large-scale data processing is definitely the focus! It is not a systematic branch of discipline. However, basically several big companies will ask this question. I suggest reading those papers on Google first. Page ranking, and then map reduction seems to have several articles. Recommend a website with a big table or something. This article seems to be reproduced. I can't find the source address I found before. The basic ideas of dealing with this kind of problems are hashing, mapping reduction and bitmap. By the way, I suggest looking at the outer sort and the related loser tree. These are some typical problems in large-scale data processing. Mastering these is actually enough. This piece feels a bit like the Dragon Slayer, especially for students, and almost no one has the opportunity to implement these codes. But, no way, these companies just like exams. After reading that blog, and then find some information by yourself, it is basically enough. Everything changes, and besides, these things can't be so difficult to test. Recommend a blog, the author collected interview questions of 100+, and gave all the codes. After reading these, basically many written interviews are these original questions. It was several years ago that I recommended today's Top Language thinking series. It is helpful to watch Daniel's thinking process. I hope I can think more and see the answer. Note that Google Groups sometimes seem to be blocked. I also scanned the question bank part of Germination Network. There are still many that I can't remember at the moment.