In fact, every engineer hates bugs, untidy code, poor performance, user interface and so on. These are some technical details, which can be gradually realized and improved, and can always find the answer to improve. But what technology should I learn and use at work? Why automate tests? How to build a product that looks reliable? How do I choose a job? If I work for a large company, how do I move to a startup? How can I negotiate for a higher salary or bonus? What are stock incentives? These problems are trickier, and this article provides some introductions and tools.
The Whitepaper on Interviewing Programmers is a book I wish I had read in college. In me when I was in college, just like many students also through many detours, difficult to chew the compulsory course for computer, vertigo, caused by the inside of the pointer and object of i++ and + + difference anyway I don’t understand, crazy for the operating system scheduler, it is difficult to interested in professional books, just want to deal with examinations and credits. When we graduate, we still don’t know what we want most, even though we have a degree in computer science and actual work experience. I had a plot that I wanted to work for the best company, such as Google, because I heard that there were the smartest people, with the best treatment and benefits, doing the most influential things. When I plucked up the courage to try, I failed and went into a 6 month cold period (losing the chance to continue interviewing for a period of time). However, I found that my performance in the interview was so immature and terrible. I began to feel upset, reflect on myself and prepare again. Only in this way could I have my next interview opportunity and other offers. Of course, if I could do it all over again, I would be more confident and give full play to my ability, and maybe the ideal company would Offer me an Offer.
The recruitment process is as follows: Apply for a position at a company you are interested in and submit your resume. HR selects suitable resumes from the resume library and arranges interviews. The interview is divided into telephone interview and on-site interview. If you do well in the interview, the HR will discuss with you the specific information such as salary, benefits and starting time. For the above process, let’s analyze the key links one by one.
resume
A resume is the first step in a job search, and while it may not be the deciding factor, a well-structured, informative and targeted resume can give you valuable interview opportunities. This section will explain how to create a resume that is attractive to HR in terms of format, content arrangement, and presentation techniques. It’s okay to change some of your resume based on the job description, but it’s not advisable to have too many different resumes that you might make mistakes with. If you really need so many resumes for so many different positions, you should consider your strengths and narrow your target accordingly. Note that the following description focuses on the resume structure for north American applications. Most of the points are generic, but some may need to be changed if you are applying for a job in China.
1.1.1 format
Unless you’re interviewing for a user experience or design position, try to keep your resume brief and clear. Use bold or larger font for important information such as title and name, and use the same font size for other descriptions. Choose one font. It is not recommended to use different fonts to highlight different content: different fonts will clutter the layout and make typography difficult. Calibri is a suitable font for English resumes, while Song Typeface is acceptable for Chinese resumes. Resumes can be written in Word, Latex, Pages, or InDesign, but be sure to export them to a PDF to ensure that the format is consistent across different platforms.
1.1.2 Content arrangement
A resume is a platform for providing information and presenting yourself. For those who have just graduated and have no work experience, the resume should be limited to one page. If you are a PhD, you need to list some relevant articles to publish information, so the resume can be extended to two pages. Here’s an example that neatly describes the candidate’s education, internship, skills, and professional background in one page, as shown in Figure 1-1.
Figure 1-1 a one-page resume
The most important thing in a resume is to get people to know you and get in touch with you, so don’t leave out your name, email, phone number, address and other basic information. In particular, zip codes are important for those seeking jobs in the United States, as online application systems tend to classify applicants by zip code. For many companies, they give preference to local applicants. So if the company you are applying to has a local headquarters/branch, be sure to include the local zip code.
Here’s a little tip: Since most of the tech companies are based in California, especially around Silicon Valley in northern California, you might want to write down your friends’ addresses if they are in California. This does increase your chances of being selected for an interview, and some small companies may even skip a round of phone interviews and invite you directly to the company. The vast majority of the interview process is now done by phone or email, and other than the final Offer, the middle part of the recruitment process does not provide you with an address to send any documents. If the company decides to make you an Offer, you have every opportunity to confirm/update your physical address with HR. The downside of this is that you may have to arrange your own flight and accommodation for the interview, and if you do get there, you can just buy it.
Beyond basic information, the most important information for a recent graduate includes the school, major, and degree. Grades are just a plus for most companies, and if your GPA is lower than 3.3, consider excluding grades. Of course, if your GPA is one of your highlights, it’s perfectly acceptable to include this information. In this respect, Oracle is famous for its elite schools. If you have a high GPA and graduated from an elite school, you have almost half your foot in Oracle. Other companies, by contrast, do not have such requirements. In addition, students can list some relevant courses they have learned in school. You only need to list the name of the course, and the number of contents should be about five. Try to choose the name of the course that you are familiar with, such as algorithms, data structures, operating systems, etc. If it is a graduate course, you can add the keyword “advanced”.
Another key part of your resume is the description of previous projects, including work experience, internships or course projects. The purpose of this section is to show that you have the relevant experience and technical skills to work with a team on a complex project. Here, we’ll focus on how to choose the right project, and in the description tips section, we’ll go further on how to make your project more interesting by describing it. In terms of project content, you should prioritize projects that are relevant to the job description. Relevance includes similar knowledge, the use of the same software or development environment, the use of similar programming languages or programming patterns, the implementation of similar functions, etc. These are the programs that most value you and make you stand out from the other applicants. If you don’t have similar experiences, you can highlight your comprehensive skills by listing complex projects. These can include: graduation projects, term assignments for courses, open source projects for online collaboration, etc. The main purpose of this list is to highlight your technical excellence and ability to cooperate with others. In terms of the type of program, you should give priority to internships in the industry you are seeking, as long as they are broadly in the same industry as the job description. After all, having actual work experience communicates that you have an understanding of the industry, are familiar with its development patterns and cycles, and can adapt to the company’s work environment.
The last part of your resume should be used to list your skills, including familiar programming languages, development environments, technical strengths, etc. The purpose of this section is to enable the HR to match your information from the resume library. Usually, there are some technical requirements for each job, and HR will search for keywords to select a good match from the resume library. This section can greatly increase your chances of being a match. The principle of listing is that you don’t need to be particularly familiar with it, as long as you have actually used it. Note that if you are lucky enough to get an interview, always go back to this section and make sure you can answer at least some of the basic questions and don’t seem fake. Often, the HR doesn’t know if the description in your project section matches the job requirements, so you need to use industry-standard language for the skills listed in this section.
1.1.3 Description Skills
Description skills are mainly reflected in project description. The project description highlights what you did and what you achieved. Project titles should generally give the reader an idea of what you did, and then use the following template, “By… Development methods (or technologies) that do… In the end… “, describing the specific content of the project. When it comes to English resumes, they usually start with the past tense and begin with a verb to describe what you have done and what you have achieved. Examples are as follows:
Software Engineering Internship, XX Company, 6/1/2014 — 9/1/2014
Interned with the server team.
Implemented a distributed access control algorithm in C++, which improved login time by around 50%.
Another common problem with English resumes is how to translate proper nouns, such as honors earned at Chinese universities. At this point, be sure to refer to online sources to make sure the reader understands what you are trying to say. You can even use a one-sentence description of what the honor is, or use a percentage to show that only the top students receive the honor. Examples are as follows:
Excellent Student Award
Granted to recognize overall outstanding performance.
Another great way to learn is to check out the profiles of great people on LinkedIn, especially engineers at the company you want to work for. They will clearly outline their goals and past experience. It doesn’t need to be copied, but it will give you an idea of what will be appreciated when you apply to these companies.
The interview
Depending on who you’re interviewing with, you may have to face HR, technical interviewers, and bosses during the hiring process. You should prepare different interview styles for different roles. Figure 1-2 shows the detailed analysis.
Figure 1-2 Interview instructions
1.2.1 HR
HR is your connection to the company. Typically, HR is responsible for scheduling and coordinating interviews, mostly via email. The HR may also call you directly to get basic information about you, including who you are, when you graduated/quit, etc. The HR will usually introduce the job requirements and the company, and will meet you on the day of the interview to see if you have other interview schedules or offers from other companies. In addition, HR is responsible for interviewing you for your communication skills and providing feedback on your personality fit with the team and interest in the company. Therefore, every communication with HR needs to be enthusiastic and professional. Suitable information to learn from HR includes: the overall atmosphere of the company, the interview process, the recent turnover of the company, etc.
1.2.2 Technical interviewers
The technical interviewer is mainly responsible for measuring your skill level and judging whether you are qualified for the job. In general, technical interviewers’ opinions are the most important for tech companies. Technical interviews can range from phone interviews, which tend to be conceptual questions, to in-person interviews, which can include direct coding via a collaborative website. On-site interviews often involve whiteboard coding, solving an algorithm problem or design problem, etc. The main purpose of this book is to help you get through this interview.
Some interview tips are as follows: Be sure to communicate first, make sure you understand the question, don’t over – or under-consider. First, a relatively easy to think of, but not the optimal solution can be given, and then gradually optimize. When you are thinking, you should also speak out, even if it is not a mature plan. If you encounter difficulties, try to solve them on your own first. If you don’t have ideas for five minutes, ask the interviewer for help. The right cues will not affect the outcome of your interview. When starting to write programs, pay attention to syntax, variable naming, etc., avoid pseudo code, as close to real code as possible. After you’ve written it, check for any obvious mistakes. You can list a few simple tests and review the process with your interviewer.
Interview is a collaborative problem solving process, and communication must be key: you need to demonstrate your logic, understanding and presentation skills through communication. At the end of the interview, you’ll usually be given a chance to ask questions about: what technology the team uses, typical work stress and hours, what’s exciting about the company; How many years have you worked in your current position and how your previous experience compares with your current one.
The basic skills of interview examination include the following aspects:
Program style: Indent correctly, parentheses should be aligned, variable names should make sense;
Coding habits: exception check, boundary processing;
Communicate: Keep your intentions clear to the interviewer. Don’t write with your eyes closed. Because your algorithm may not be right. Oh, you might not be able to write that either. The slightest hiccup in the middle, and you fail. For the interviewer, he has no idea where you are in solving the problem;
Testing: Actively write reasonable Test cases, some common use cases, such as null checks. Usually if you don’t write, the interviewer will ask you to write, but if you take the initiative to write, you have good habits, easy to score points.
The technical interview process is usually as follows for reference.
When you are given a specific question, follow this procedure:
1. Define the task: Identify the questions that need to be answered by communicating with the interviewer. This part is designed to put yourself at ease and impress the interviewer that you are a good team player and a good communicator.
2. Describe the general idea: Describe what algorithm and data structure you plan to use. The main purpose is to give the interviewer a sense of your thought process and to correct your answers if they deviate too much from what he or she is looking for. Also, describing ideas gives you the opportunity to think for yourself.
3. Implementation algorithm: first deal with the boundary conditions. For important algorithmic modules, add some notes or talk to the interviewer. The goal is to keep the interviewer in touch with what you’re doing and what the algorithmic framework is.
4. Run a test: Walk through your program with a test case. The goal is to work with the interviewer to make sure that your algorithm is effective and that you can find and correct your mistakes along the way. Also, give the interviewer a good impression that you are in the habit of writing unit tests.
5. Describe the complexity of the algorithm and answer the interviewer’s questions.
1.2.3 the boss
The team’s boss is usually the last to show up for the interview or accompany the candidate to lunch. The boss is responsible for collecting everyone’s feedback and deciding whether to send an Offer or not. In general, your boss may not ask too technical questions, but will focus on your ability to collaborate and communicate. Your boss’s questions might include how you deal with problems/pressures at work, previous projects, why you fit into this position, etc. Communicating with your boss requires showing your enthusiasm for their team and trying to explain why you’re a good fit for the position in your answers. The interview is a mutual process, and through the interview with the boss, you need to understand the composition of the team, how projects are typically assigned, what the boss expects of you, and what the boss sees in the development of the team within the company.
Also, prepare some common behavior questions: have you ever failed, what do you do if your boss gives you tasks you don’t like, what kind of person do you envision becoming? On the one hand, you can combine your own energy, on the other hand, pay more attention to the company’s introduction page, including the company founder’s background, corporate culture, recruitment requirements. Do your homework ahead of time and try to show your passion, responsibility, hard work and other good qualities.
Offer
If it comes to that, congratulations, you’ve made it! At this stage, you’ll need some negotiating skills to get more for yourself. The first thing you should do is check your information with HR, including your address, time of entry, etc.
Usually, HR will give you a brief description of your benefits, and when you confirm that they are correct, HR will generate a formal document for you to sign. At this stage, you can ask HR to explain the parts of the Offer treaty that you don’t understand and negotiate your Offer. The most common way to negotiate is when you have an Offer from another company and you want the company you want to work for to match their highest Offer. Note that the HR is on your side at this stage: they don’t want you to turn down their Offer easily. Therefore, you have every reason to make your own claim. In general, when you have offers from other companies, HR can strive for some more benefits. In terms of difficulty, signing bonus on entry is the easiest to win, while stock and base salary are more difficult to improve. Of course, salary is an important aspect, but when you decide whether to accept an Offer, you should take into consideration the company’s growth prospects, the status of the team in the company, how you feel when the boss communicates with you, and the atmosphere of the team.
For most companies in the US, there is no time period on the Offer, which means both parties can terminate the contract at any time. Usually, large companies are reluctant to lay off employees, and even if they do, there will be some compensation. On the other hand, it means that you can leave your job at any time, even before you start. In general, this is not recommended: it makes more sense to try to communicate with HR that you have other interviews/offers and need to postpone making a decision for a while. If you have no choice but to have a better option, you need to communicate with HR as soon as possible and hope that they can understand. Don’t wait until the end to tell someone you’re not going. It’s unprofessional and impolite.
When you accept the Offer, ask your boss for some materials to prepare yourself so that you can start the job faster. When you’re new to a company, you’ll have weeks or even months to get started, and the team will have someone to help you understand their project. A new journey begins! But this is just the beginning, and the future may be a bigger challenge, whether I can fit into the team, whether I can resist pressure, whether the work content is in line with my interests, these are unknown. So we say that there is no absolutely right choice, as long as you use your talent and sweat to pay has practical significance!
Q&A
Question 1: How do I know some reliable companies?
First, find out what companies the hotshots are working for. If the company is not well known, look at traffic rankings to see where it stands, whether it has gone public, how much it has raised, and Linkedin to see if it has a good staff.
In Silicon Valley, people talk enthusiastically about entrepreneurship and opportunities. Through our own observations and accumulation, we have seen many hot startups that have emerged in recent years. I’ll give you a list, This is Wall Street site start-up financing scale selection around the world (dollar – club / [http://graphics.wsj.com/billion-] dollar – club/(http://graphics.wsj.com/billion-)
). Its original title was “Billion Startup Club”. In less than a year, as of January 17, 2015, its ranking and scale have changed a lot, as shown in Figure 1-3.
First, there are seven companies valued at 10Billlon ($10 billion), up from none a year ago. Second, the first is Xiaomi, a household name in China. Third, most of the top 20 (80%) are in the United States, in California, in Silicon Valley, in San Francisco! Uber, Airbnb, Dropbox, Pinterest. Fourth, there are many successful companies with similar models. Flipkart is taobao in India, and Uber and Airbnb are both in the sharing economy. So you can still find big opportunities in mobile (Uber), Big data (Palantir), consumer Internet, messaging (Snapchat), payment (Square), and O2O apps.
Figure 1- $3 billion startup club
Question 2: What is the technology solution of Startup in Silicon Valley?
The categories are described as follows, as shown in Figure 1-4.
Programming languages: Python, Scala, Swift for iOS, C/C++, Java and other mainstream development languages;
Front-end: Play, video.js, Jade, HTML5, etc.
Framework containers: Docker, Mesos, Vagrant, etc.
Log monitoring: Datadog, Sumologic, Akka, Kafka, etc.
Background data processing: Hive, Scalding, EMR, Big Query, etc.
Figure 1-4 Common technology matrix in Silicon Valley
Vm: Cloud services such as EC2;
Server: Nginx, etc.
Configuration tools: NPM, Zookeeper, Puppet, Gradle, etc.
Signal notification: SQS, etc.
Code hosting: Github, SVN and other version control tools;
Data storage: Cassandra, MySQL, S3, Redshift, etc.
Internal tools: Phabricator, Slack, Google Docs, RelateIQ, Jira and other collaboration tools.
Take Coursera, a startup that strives to be agile and efficient. Technically, everything is being developed in AWS, so you can imagine launching a cloud service at will and doing some experimentation. The company is roughly divided into product groups, architecture groups, and data analysis groups. Because the company is relatively new, there are no legacy migration issues. We boldly use Scala as the main programming language and Python as the script control. For example, the product group provides course products, which use a lot of Play Framework and Javascript Backbone as the control center. The architecture group maintains the underlying storage, common services, performance, and stability. Part of the author’s data group is to monitor, mine and improve commercial products and core growth indicators. The other part is to build a data warehouse to improve the seamless data flow with various departments, which also uses a lot of technology. For example, using Scalding to write MapReduce programs, some people also do AB testing framework and recommendation system, and try to do influential things with the least manpower. In addition to the open source world, Coursera also actively uses third-party products such as Sumologic for log error analysis, Redshift for big data analysis, and Slack for internal communication. The goal of all of this is to free up productivity and focus on user experience, product development and iteration.
Question3: When will you know you are ready for an interview?
It can be measured from the following aspects.
Whether the algorithm passes, whether can write recursion and dynamic gauge;
Whether Coding passes, whether Bug Free can be written in the compiler;
Whether Design passes, whether Tradeoff can be given;
Organize project experience, be able to speak fluently about structure, difficulties and own contribution;
Bonus: Github, Blog, participation in Open Source.
Question 4: How do I get a visa to work in the US?
To work in the US you generally require H1B (work visa) status, and obtaining this status requires an employer to apply to the Bureau of Labour. According to the current situation, every year the number of places is sold out, so it needs to be decided by lottery. Apply before April 1, and draw lots after April 1. If you have obtained a master’s degree or above in the United States, you can have priority and the probability of drawing is higher. According to the situation this year, the probability of winning the ordinary drawing is 50%. Even if you don’t, if you have a master’s degree from the United States, you can still work with OPT and save on Social Security Tax. For overseas degrees, the lottery will have to wait until next year.
For global companies like Google and Facebook, they also offer opportunities to work in other countries. After one year of employment, you can continue to work in the US through L1 or H1B. In addition, if you won the H1B lottery, then if you change jobs in the future, you can transfer to the previous quota without drawing lots again. H1B can be renewed every 3 years for a maximum of 6 years. If you have already applied for a green card by the time your H1B expires, you can extend your H1B period until your green card becomes effective.
Question 5: I am not an algorithm genius or a member of ACM. I heard that Google and Facebook have many talents who can enter, so how can I get a good Offer?
First of all, have confidence that the algorithm is not as difficult as you think. The reasons are twofold:
First, because there are only a few common interview algorithms. As long as you try to summarize and group similar topics, and do only a few questions, you can learn a lot of questions by analogy. Don’t focus on the numbers. The quality of the problem is very important. The criterion is: you have done a problem, ask you to do it again, you can “perfect solution.”
Second, even if you know the solution to a problem, you may not be able to write it well. Because every time you write a program, it will be haphazard, and it will be full of bugs. Programmer is a very meticulous occupation, if you can find the template of these topics when summarizing the topic, the template refinement, encounter similar topics, you can write the template, while thinking about how to do a little simple change in the template. This saves time and ensures no mistakes.
Question 6: What should I do to prepare for the change of computer science major from other majors?
1. Make yourself more professional. For example, your resume should only include computer-related content and nothing else should be useful (e.g., student body president). If your resume is still empty, work on more projects. If there is no project, rewrite the non-computer major project more closely.
2. Achieve engineer strength in a certain field. If you’ve done anything with Data before, apply for a Data Analyst. If you already know some basic skills, you can do the front end, using JavaScript, HTML and CSS, to really make your own blog. If you’re interested in a product, play with web frameworks like Django and Ruby on Rails to learn how a site is built. If you’re interested in mobile development, write several apps for iOS or Android. The advantage of this is that your resume is not empty, and if asked, you can make it easy. If it’s not relevant, be honest and say I’m not familiar with it because I’m a new career and can try it. I’m interested in computers. I’ve done a number of projects. So the interviewer won’t ask you hard questions. In fact, you are already prepared to exceed the expectations of the interviewer and score a great score!
Question 7: How do you show your communication skills in an interview?
The first step is to put yourself in the interviewer’s shoes. The interviewer wants to hire you as a colleague. What do you expect from your colleague?
You can iterate your ideas over and over again before you start writing. Talk about how you came up with this idea. Show your ability to communicate. Remember, you’re not trying to convince him of your idea, you’re trying to explain it to him. First, don’t assume the interviewer doesn’t know anything (he’s just checking to see if you really do). Second, the interviewer is much more experienced than you, so it’s very likely that you made a mistake.
Question 8: What if there is a Bug in the interview?
Avoiding bugs is very important, which requires us to practice constantly at ordinary times, according to the above method of preparation, or can avoid some “pit”. But if you happen to be out of your element, write a Bug and the interviewer points it out, do you hang up?
First of all, don’t worry. Bugs are very common. Maybe the interviewer is debugging you before they come to interview you. The measure of a programmer’s ability is not how many great algorithms he can come up with, but how well he can analyze and solve problems when he encounters them. It’s time to show that you’re a good programmer!
The Debug process is as follows:
1. Locate bugs through test cases;
2. Don’t immediately change the code, rehash the logic. Because there are likely to be other bugs;
3. After all the logic, know how to change, and then begin to change;
4. Walk through the new code again with the test case;
5. Throughout the process, keep telling the interviewer what you’re doing (as long as it doesn’t interfere with normal programming).
This way, not only will you not lose points for successfully solving bugs, but you will be rewarded for your excellent debugging and simultaneous communication skills.
Question 9: How to make the final Offer?
Before considering an Offer, do some research on the company, such as what size the company is, what its products are, what Glassdoor employees say about it, and do you like your position? It’s like choosing a school. If you get it wrong, there are a lot of detours. Our personal reference is that first of all, the company is on the rise, whether the product has love, whether the team is strong, whether it can learn things. The classification of companies, such as Hortonworks, is purely technical and enterprise-oriented, which may not be known by many people, while Uber is a mass consumer and many friends have used it. Now the hot spot is mobile Internet, we can also consider this piece.
If you’re a public company, you’re going to give restricted stock, and you’re going to exercise options over three or four years, and startups are going to give options, but the difference is that restricted stock is given away, you don’t have to pay for it, you have to buy options, and the price is different over time, but the tax on stock is very high, and some options are tax-exempt for a long time. Finally, you should also consider your interest and risk tolerance, if you go to a big company to do a screw, to achieve a communist life is not wrong. Working for a small company is stressful and leads to rapid growth. But be prepared to fail, as Zynga did.
Programmer interview whitepaper“
By Dong Fei and Yichao
The author of this book comes from a leading SILICON Valley IT company. The book contains his personal experience, questions collected from interviews shared on the Internet, online programming site Leetcode, and some well-known interview references.
This book is suitable for professionals and students who want to work as regular programmers, architects and related IT companies, especially for those who are seeking jobs in front-line IT foreign companies or Internet companies.