Introduction#
One day I attended an event that was long and boring. Reflecting on the past year, I felt a mix of emotions, so I wrote A Few Things About Undergraduate Employment【Southeast University Bar】_Baidu Tieba.
This article is a reformatting of the content from the Tieba post, primarily aimed at computer science students who are interested in undergraduate employment.
Background#
Tomorrow will be November, and my autumn recruitment will likely come to an end. Looking back over the past year, I have felt anxious, anxious, and more anxious.
I am not a technical expert who has harvested numerous offers, but the most regrettable part of my difficult job search this year is that I did not have a senior who has already started working or has relevant experience to share their insights and point me in the right direction. I had to rely on myself and the information I gathered online, stumbling through the process.
So, with the idea that since I have been through the rain, I will try to help those who come after me by sharing my insignificant experiences and reflections.
Employment Directions#
Generally, undergraduate computer science graduates have several job directions: front-end development, back-end development, followed by testing and embedded systems. From my personal understanding, there are not many opportunities to engage with embedded systems in Southeast University's undergraduate courses, and I am not very familiar with testing either.
So I will focus on front-end and back-end development.
Front-end Development#
I chose front-end development. A basic learning path is to first learn the trio of HTML, JS, and CSS, and then choose a framework like Vue or React to continue learning.
During interviews, questions will likely revolve around JS and CSS, with some questions about the framework.
However, it is important to note that in the interviews I attended, especially at large companies, they really like to ask about computer networks. Unfortunately, my cohort did not have a proper compulsory course on computer networks, which made me quite passive when asked about it in the early stages.
Back-end Development#
In China, the main technology stack for back-end development is primarily Java, with some using Go or Node.js, but those are in the minority. After learning Spring Boot, you can supplement your knowledge with MySQL and Redis, and then you can start applying for internships.
Choosing Between Front-end and Back-end#
Now let's talk about the choice between front-end and back-end.
Personally, I initially learned back-end development. After following Spring Boot Development - Java Tutorial - Liao Xuefeng's Official Website to learn Spring Boot, I also wrote a small project.
However, when I wanted to go further, I realized I needed to learn Spring Cloud and microservices, which are designed for high concurrency. Lacking practical scenarios, I felt that even though I could simulate with scripts, it still seemed a bit absurd. So, I turned to front-end development.
Front-end development felt more direct to me, and performance optimization was also more targeted. Overall, I found the sense of achievement in real-time to be higher. So I chose this path.
This is based on my personal interests. If we compare it with the employment market situation I have observed:
Small and medium-sized companies in China generally view front-end positions as supplementary. Simple pages are often built using low-code solutions or handled by back-end developers. Therefore, there are significantly fewer front-end positions compared to back-end ones.
However, large companies still have a relatively high demand for front-end developers. Due to biases and the later development of the field, the educational requirements for front-end positions are not as strict as for back-end roles.
For undergraduate students graduating from a car-related major, at least in large domestic companies, front-end positions generally mean that if you submit your resume, you will likely get an interview. This is also a gap in information.
Two Key Time Periods#
Autumn Recruitment#
In previous years, there was a saying about autumn recruitment: "Golden September, Silver October," but this year it is relatively more competitive. Some companies started early recruitment in August, and some impressive individuals could even finish their autumn recruitment by early September.
Autumn recruitment primarily targets students who are in their senior year and will graduate the following year.
Compared to spring recruitment, autumn recruitment has more positions (some say even ten times more), less competition (because those who fail their postgraduate entrance exams or civil service exams will join in spring recruitment), and is relatively less anxious (at least you are not about to graduate immediately).
Therefore, I strongly recommend that students interested in undergraduate employment make the most of the autumn recruitment.
Spring Recruitment#
Spring recruitment starts in March each year and lasts until April or May. I haven't really participated in it, so I don't know much.
However, every year's spring recruitment serves not only to target that year's graduates but also has a very important purpose: to recruit summer interns. Summer internships primarily target students in their third year during the second semester.
The importance of a summer internship is very high. It directly relates to whether you can pass the initial resume screening and can help you have something to discuss during interviews. From my personal experience, interviewers often prefer not to ask standard questions, but the premise is that the projects and internships listed on your resume are meaningful and can be discussed.
However, one frustrating aspect is that summer internships generally take place from June to September. By September, you will face the choice of whether to convert to a full-time position or focus on preparing for autumn recruitment.
Internships#
How Many Internships Are Good#
Having multiple internship experiences is definitely beneficial, but each should ideally last more than three months.
Generally, having one internship during autumn recruitment is sufficient. Based on my own experience, our school's courses in the first semester of junior year are quite heavy, making it difficult to find time for internships unless you skip classes or take short internships during the winter or summer breaks. However, the second semester of junior year has fewer courses and more opportunities.
So I personally feel that an ideal situation would be: doing the first internship in March, April, or May of junior year at a small company as a stepping stone; then starting the second internship in June, which would be from June to August, and with the experience from the first internship, you might be able to get into a medium or large company. By September, you can see if you can convert to a full-time position; if not, you can use these two internships for autumn recruitment, which should be sufficient.
Of course, I have seen some people start interning as early as their sophomore year, but those are not ordinary cases.
How to Find Internships#
Southeast University's computer science and software intelligence majors have specific internship duration requirements. Computer science and human intelligence require one month, while software requires three to six months.
The school will help connect some companies during the second semester of junior year, but in reality, most companies still require further interviews; it's not just a click-and-go situation. Moreover, the number of companies and positions contacted by the school seems to decrease year by year (this is just my personal observation comparing last year and this year). Therefore, most people still have to rely on themselves.
So how should one find internships independently? I recommend applying through company websites, as companies will open a batch of internship positions during the spring and autumn recruitment seasons, and there are also regular internships available almost year-round.
One piece of information is that during the period before the Chinese New Year, companies tend to be short-staffed, making it easier to find internships.
Additionally, I have two platforms that I use frequently.
One is Niuke.com, where many people looking for jobs, especially in the internet sector, share their experiences and interview tips. If you have some free time, you can browse Niuke.com to increase your anxiety a bit. There are also some HR representatives on Niuke; once you complete your resume, you can wait for them to reach out to you.
Then there is Boss Zhipin, but I haven't used it much because the quality of companies varies. If you really use it, you will find that most of the HR representatives are from Huawei.
Some users recommend Internship Monk for reference.
However, my first internship was actually found on Boss Zhipin, and surprisingly, it was with a great company. My experience there significantly improved my skills.
But I still advise everyone to be cautious when job hunting and to watch out for scams.
Job Fairs#
The school organizes two large job fairs each year: one in March and one in September.
I attended last year's autumn recruitment and the spring recruitment job fairs without submitting resumes, just to feel the atmosphere.
I remember the date of this year's autumn recruitment job fair very clearly: September 21. Unfortunately, it coincided with the MyGo!!!!! concert in Shanghai.
So without thinking, I went to the concert, and I don't regret it afterward.
The job fair did not seem to help much for computer science students because most internet companies still rely on online resume submissions.
Furthermore, I checked the position list for this year's autumn recruitment job fair, and it seemed there were only three or four front-end positions, which is quite disappointing.
Terminology Explanation#
- Intent: Refers to the letter of intent, indicating that you have passed all interviews and the company is willing to hire you, but specific terms still need to be discussed. Most companies will not revoke the intent.
- Offer: Refers to the employment notification letter, which includes salary details and requires you to send back a tripartite agreement within a specified time; otherwise, it becomes invalid.
- Thank You Letter: Some companies will send you an email after the recruitment process ends, stating that the process has been terminated.
- Pooling: This is a particularly common phenomenon this year. It refers to the stage of recruitment assessment after you have passed all interviews. Multiple candidates who have passed the interview will be ranked based on interview performance, educational background, etc. Those with higher rankings will be contacted first. However, often those with higher rankings also have multiple offers, so it may go to the next candidate, or even continue to rotate. Some companies may even experience situations where no one accepts an offer from the pool. This is a situation that harms both sides: interviewees cannot secure a definite intent and must continue interviewing, while companies cannot determine whether candidates are willing to join and must also continue interviewing to fill the pool. The prevalence of pooling is detrimental to both parties.
- Salary Negotiation: "a" is an abbreviation for "argue." Particularly outstanding candidates may have this stage. HR will generally ask about your expected salary, and if you have multiple offers to choose from and the company recognizes your performance, you can use this as a basis to negotiate for a higher salary. I wish all readers the opportunity to negotiate their salary.
Standard Job Application Process#
Process#
- Submit resume
- After resume screening, you will be notified to take a written test and assessment (not always applicable)
- Two to three rounds of interviews (technical or HR; the number and type of interviews vary by company)
- Pooling (not always applicable)
- Intent (not always applicable; some companies directly provide you with a final offer that includes salary)
- Offer confirmation
Should You Submit Many or Few Resumes?#
When I was looking for a summer internship, I was quite picky, looked at many options, but didn't submit many applications, resulting in very few interviews.
During autumn recruitment, I submitted my applications too late, mainly for two reasons:
- I procrastinated and was somewhat afraid of autumn recruitment.
- I had not completed some of my internship projects.
So I ended up submitting my applications in late September.
At first, I thought I would submit in waves, but as I got anxious, I concentrated on submitting all I could, totaling around sixty applications.
I don't know if it was because I submitted late or just coincidentally, but in October, many companies seemed to be eager to schedule interviews to avoid being ghosted.
However, the cost was that I spent about twenty days after the National Day holiday in high-pressure written tests and interviews, so don't follow my example.
Still, the advice remains: prepare early, submit early, and confirm offers early.
Technical Interviews#
General Process#
- Self-introduction
- See if the interviewer is interested in your project; if so, they will ask you to introduce it and then inquire about project details (this highlights the importance of having a good project or valuable internship experience)
- Standard questions. Some interviews will resemble a terminology explanation where the interviewer asks and you answer, moving on to the next question. However, some skilled interviewers will dig deeper based on your answers, which tests your understanding of the knowledge.
- Coding challenge. This varies by company; some will have it. Coding challenges are generally not too difficult, around LeetCode easy level, and if they ask for hard problems, it usually indicates they are not interested in you.
- Questions for the interviewer. This part is also quite meaningful.
Preparation Before the Interview#
Before an interview, I generally like to search for interview experiences, using keywords like the company + position + round of interview. If I can find out the department, that's even better. Searching on Niuke or Google usually yields results.
One major reason for searching for interview experiences is that most interviewers tend to pull questions, especially coding challenges, from a question bank. Since a company or department's question bank is limited, it is easy to encounter questions that have appeared in interview experiences.
Moreover, questions that appear in interview experiences have essentially gone through two rounds of filtering: the interviewer found them meaningful enough to ask, and the interviewee retained them after being tested.
In summary, if you feel that memorizing standard questions is too broad and difficult to prepare for, looking at interview experiences is always a good idea.
What to Do After the Interview#
One of my habits is to take a short break after the interview, walk around, and then write down my interview experience. I have tried recording my thoughts, but I found it embarrassing and was reluctant to listen to my recordings, which led to procrastination. So, I prefer to take notes on the spot.
The benefit of recording interview experiences is that you can refer back to them later and review which areas you didn't answer well.
Especially for projects, since the projects on your resume are limited, the questions the interviewer asks about those projects are also limited. You can use the repeated questioning to reinforce and deepen your understanding of the project.
Another point to note is that for the standard questions or coding challenges you didn't answer well, it's best to solidify your understanding on the same day.
I have personally suffered from this. I have been asked about "the specific principles of HTTPS" more than once. The first two times, I thought it was just a coincidence and didn't take it seriously, or I thought I wouldn't be asked again. It wasn't until the third time that I decided to study it, only to realize that I actually knew it quite well, but I didn't articulate it the first time, and then I reflexively said I didn't know it in the following two interviews. This resulted in missed opportunities that could have had good outcomes.
Standard Questions#
Why Memorize Standard Questions#
I used to think that memorizing standard questions was a test-taking behavior and was somewhat resistant to it. I believed that I could easily find this knowledge online when I needed it. GPT remembers better than I do.
But one night, while troubleshooting an issue with EuDs63/postkid, I realized I needed to fully understand it, so I spontaneously searched for React's lifecycle.
At that moment, I realized that many of the standard questions are actually quite common. To write good code, you indeed need to know them. Standard questions have their significance; they condense the knowledge you need to master in daily work. When I encounter tricky bugs and have no idea where to start, it often reflects my ignorance of a certain standard knowledge point.
So I reconciled with standard questions; some things need to be memorized.
How to Answer Standard Questions#
Looking at The Technical Interview from the Interviewer's Perspective - Why Memorize Standard Questions_Niuke.com, I further realized that if asked a standard question, you should learn to extend your answer proactively, thereby gaining some control over the interview.
When asked a standard question during an interview, you can generally categorize it into two situations:
- One is that you know the answer. In this case, the priority is to clearly answer the interviewer's question and then appropriately elaborate. Especially if you have practical experiences to share, that would be a great bonus point. Just remember not to stray too far from the topic; otherwise, it may seem like you're rambling.
- The second is that you don't know the answer. In this case, I generally have two approaches. Both start with directly saying that I don't know. Then, depending on the interviewer's response, if they want me to elaborate, I will try to reference related knowledge and share my reasoning. If the interviewer moves on to the next question, then I will follow suit.
The Significance of Standard Question Answers#
Answering standard questions is not necessarily a bonus point. Given the current job market, an interviewer will likely meet numerous candidates during the recruitment period. Standard questions are relatively easier to prepare for, meaning that most candidates can answer them unless they are particularly obscure. Thus, the real bonus point lies in whether you can express your own thoughts clearly.
For example, when discussing the classic front-end standard question "Cross-Origin Issues and Their Solutions," I like to supplement it with problems I have encountered in practice | EuDs's Blog.
Is it a disadvantage if you can't answer? It might not be. In a typical interview lasting from half an hour to over an hour, unless specifically noted, interviewers may forget the questions they asked.
What we can do is to avoid reinforcing their memory of your inability to answer standard questions. Therefore, quickly moving past it rather than rambling seems to be a better approach.
Algorithms (Coding Challenges)#
Importance#
Having discussed standard questions, it naturally leads to algorithms.
Compared to memorizing standard questions, I dislike practicing algorithm problems even more. Although last year I resolved to solve one problem every day, I gave up after less than a month because I couldn't find the meaning in it.
However, algorithm problems directly relate to two important stages in the job application process: written tests and the coding challenges at the end of interviews. Written tests are generally just a basic threshold, but the final coding challenge can be quite damaging. This is because it occurs near the end of the interview, and it usually lasts at least ten minutes. The impression you leave on the interviewer during this time can be significant. Hence, it is said that whether you can perform well in the coding challenge often directly determines whether you pass the interview.
Content Assessed#
Fortunately, the algorithm problems posed during interviews are generally around the easy level on LeetCode; asking more difficult questions usually indicates that the interviewer is not particularly interested in you.
Moreover, many front-end coding challenges are scenario-based implementation problems, and with some preparation, you can usually handle them quite well.
- Common Handwritten Code Problems in Interviews (Part 1) - Juejin
- Sunny-117/js-challenges: ✨✨✨ Challenge your JavaScript programming limits step by step
Purpose of Assessment#
In addition to the specific content, understanding the purpose behind the coding challenges is also important. I believe there are several key points:
- Logical thinking ability: Specifically, how you think through problems and how you break them down. This is directly reflected in the thought process you describe before writing code.
- Coding ability: The only time your coding ability is truly assessed in an interview is during the coding challenge. Coding ability does not require you to get the code running perfectly on the first try; rather, it looks at details such as naming conventions, appropriate comments, and familiarity with commonly used APIs.
- Debugging ability: The platforms provided during interviews generally support running code. When you finish writing your code and find that it doesn't run, how do you troubleshoot? Furthermore, when test cases fail, how do you debug to find the issue? This can reflect your real-world coding ability.
What to Do If You Can't Write It Out#
If you genuinely can't write the solution, what can you do to remedy the situation?
This is something I excel at because I can't write out the solution for about fifty percent of the coding challenges in interviews, let alone find the optimal solution.
In such cases, I try to first use the simplest brute-force method to pass the test cases, and then see if I can find an optimized solution.
Alternatively, there's a somewhat sneaky approach. If you find that you have no idea how to tackle a problem at first glance, you can ask the interviewer to switch to another question, citing reasons such as having encountered this problem in a previous interview.
What you must avoid is sitting there in silence or appearing flustered.
Questions for the Interviewer#
Most interviews will have a question-and-answer segment. Initially, I didn't know what to ask during this segment, but after going through many interviews, I naturally figured it out. Here are my subjective thoughts; please be gentle.
Questions That Are Not Necessary#
Some questions are unnecessary to ask, such as:
-
How do you think I performed? Will I pass?
Interviewers generally avoid directly answering about the interview results and will just brush it off; asking this is essentially pointless. -
Do you have any suggestions for me?
Some say this question is asked when one feels the interview did not go well, indicating a lack of confidence. I have indeed done this, especially when I felt the interview was likely unsuccessful, as it at least allows me to gain something from the experience. However, after multiple interviews, I found that I rarely received valuable suggestions after asking this. -
Questions about salary?
This specifically refers to technical interviews. When it comes to salary discussions, HR will naturally ask about your expected salary.
Questions Worth Asking#
Some questions are worth asking and should be asked:
-
Regarding a specific technology, first present your thoughts and then ask for the interviewer's perspective.
I enjoy asking this, such as inquiring about the interviewer's views on JS or front-end development. Interviewers often have more experience and deeper insights into the technology, and they may share valuable viewpoints worth learning from. Just understanding these new perspectives makes the interview worthwhile. -
Specific business of the department.
Most of the time, the department where your interviewer works will be the same as the one you will join. Therefore, you can gain firsthand information about the department's business. Remember, interviews are a two-way selection process; you also have the right to choose the company, department, and business. If the department's business interests you or you find it valuable, you will find your future work more meaningful.
Additionally, you can gauge your chances of passing the interview based on the interviewer's level of engagement in their answers.
- Questions that interest you personally.
This varies by person and company and is somewhat serendipitous. For example, I have only asked two such questions:
Once during an interview with Baidu, I mentioned that I particularly liked Baidu Tieba, but I regretted that the web version was hardly maintained, with numerous error messages, and I asked what was going on.
Another time during an interview with 4399, I asked if I would have the opportunity to work on those mini-games, as they had brought me a lot of joy throughout my life.
Should You Pursue Undergraduate Employment?#
Actually, this section should have been placed earlier, but I found it too subjective, filled with my own opinions, and lacking reference value. So I decided to place it later.
If readers have the patience to reach this section, it indicates that you are indeed considering undergraduate employment and have a certain level of patience. So let me share a few more of my thoughts.
I believe that only by walking the path you choose will you not regret it, so I do not advise readers on whether to choose employment or further study.
Here, I will only state my own perspective, or how I convinced myself to choose employment.
There are three main reasons.
-
Interest
I have tried what is called research. During my sophomore and junior years, I participated in two SRTP projects, one at the university level and one at the national level. Both projects were completed successfully and received good ratings, but I realized that I did not enjoy the process.However, during my six months of internship, I truly experienced the joy and sense of achievement. So I decided that I would pursue employment.
I believe this point is the most important. If what you do aligns with your interests and you find it fulfilling, it won't feel too torturous, and you won't regret it. To put it more dramatically, listen to your heart; if you find a path you enjoy, then go for it.
-
My pessimism about future trends.
I have seen multiple people complain that if they hadn't pursued a master's degree, it would have been much better because they found it harder to get into companies after graduation than before. Three years ago, it was like this; what about three years later? I don't see any signs of improvement. The series of issues that led to the decline have not been resolved.However, this can also serve as an argument against undergraduate employment. Since the situation may worsen in the future, having a higher degree could give you a stronger competitive edge. And as for work experience, there are plenty of people with three years of experience. I think this argument is valid.
-
I fear the sunk cost of failing the postgraduate entrance exam.
I realized during my senior year that spending a year repeatedly practicing existing content would make me restless; I find it boring and feel it's a waste of precious time. So, during my senior year, I spent a lot of time finding some enjoyment in my tedious review.This also suggests that I would not be able to endure the review process required for the postgraduate entrance exam.
Furthermore, even if I were lucky enough to succeed in the exam, would I encounter a good mentor? The news I read online has scared me.
Salary#
In A Few Things About Undergraduate Employment_Baidu Tieba, a user asked about salary expectations.
I can only say that salary is a sensitive topic, and it varies from person to person; asking for an average is not very meaningful.
If you are genuinely curious about salaries, you can search for your interested companies and positions on offershow. The information there tends to be more authentic.
What to Do If You Get Laid Off#
Some may say I'm being overly pessimistic, worrying about being laid off before even starting a job. However, I have seen too many posts from experienced seniors who were laid off.
One video left a deep impression on me: Long time no see, I want to share the biggest good news of the past six months with everyone. The uploader previously worked in front-end development, was laid off, then started a business, which failed, and after a long job search, he finally found a contract job in HarmonyOS development, with a significantly reduced salary and a much longer commute. Yet, by the end of the video, he couldn't control his emotions and cried.
My current thought is to work hard on self-improvement, not only in coding skills but also in other soft skills, such as communication and problem analysis. Additionally, I need to ensure I maintain good health and have some savings.
If I get laid off, I will look for the next job; if I truly can't find one, then I will go home. At least I can be sure that I will survive.
My Own Experience#
Preface#
Next, I will talk about my own experiences, mainly reflecting on the past few years. I can only say that it has some reference value; if you don't mind, you can take a look.
My Programming Learning Journey#
- Before college, I had no exposure to programming. I started using computers quite early, in kindergarten, and spent a lot of time playing on them. However, I only played games. The computer classes in primary and secondary school did not cover programming, let alone spark my interest in it. Therefore, not being exposed to programming earlier is one of my biggest regrets.
- When filling out my college application, my interests leaned more towards the natural sciences. I chose biology and geography as my subjects, and I found them easy to learn while achieving good grades. However, I was also inclined towards employment. So I chose computer science.
- Although I was in the computer science field, in my freshman year, I only had one programming-related course: Introduction to Programming, which was C++. I spent my freshman year in a daze, and the course content did not ignite my interest in computer science. In the second semester of my freshman year, the final project for Introduction to Programming required us to write a small program, similar to a basic grade management system. This sparked some interest in me.
- The summer before my sophomore year was my busiest summer. Due to some well-known reasons at the time, my military training was postponed to that summer, and I trained with the class of 2022. However, my summer school courses could not be postponed. There were two courses in summer school: Professional Reading and Writing, and Language Course Design. The Language Course Design required us to write a small program using Qt. So I had to balance military training and summer school, which further ignited my interest in programming. Interest is indeed the best teacher; while self-studying Qt, I also learned MySQL and eventually wrote a simple Minesweeper game based on Qt. If you're interested, you can check out EuDs63/myMineSweeping: A simple Minesweeper game implemented in Qt, including a simple login and registration using MySQL.
- Once I became interested in programming, everything else fell into place. During my sophomore year, I mainly focused on back-end development, which was essentially Java, relying on Liao Xuefeng's tutorials to complete the basics and Spring Boot code. I also learned a bit of Python because I wanted to write a bot, haha. Additionally, since I needed version control for my code, I naturally started using Git, and GitHub became a website I visited daily (I later realized that I had also started learning front-end development during this semester, but only at a basic level with the front-end trio).
- A significant event occurred at the end of 2022: the release of ChatGPT. With its help, self-learning programming became much easier; I could just ask it questions.
- In the second semester of my sophomore year, I took a course called Introduction to Software Engineering. The major project for the course was to build a small website as a group. We aimed to create a website similar to Qwerty Learner — A word and muscle memory training software designed for keyboard workers, but due to poor time management, we didn't succeed. However, I gained a lot from it because through this project, I practiced Spring Boot and also tried Vue3. Additionally, to deploy the website, I had to learn to use Nginx. This project helped me develop my full-stack capabilities.
- In the second semester of my sophomore year, I also took a course that I found very interesting: Operating Systems. The instructor taught it very well, making pure theory engaging. I often saw recommendations for Professor Jiang Yanyan's course from Nanjing University online. Out of curiosity, I watched one of his lectures and found it to be more practice-oriented. Combining both approaches, I gained a lot. Not only did I learn Operating Systems very solidly, but I also developed a stronger interest in computer science. I also got exposed to Linux. Furthermore, since the textbook was an original English version, Professor Jiang encouraged reading documentation, which also improved my English skills. I used to find long English texts daunting, but now I could read them and even at a decent speed. I can say that the second semester of my sophomore year was the fastest progress I made in my programming learning journey. I am grateful to my past self and the teachers I encountered.
- Another noteworthy event in the second semester of my sophomore year was that in March 2023, I deployed my own blog, and over time, it became a habit. The blog doesn't significantly impact job hunting because interviewers are usually busy, and there are many candidates; they rarely have time to check your blog. Out of all the interviews I attended, only one interviewer mentioned that they had looked at my blog (and that interviewer happened to be a senior of mine, which was a coincidence). I believe the blog serves more as a space for you to express your thoughts. If you're interested in my blog, please search for "euds' blog."
- Then came the summer before my junior year. The summer school had only one course: Professional Skills Training. In short, it was another group project to build a website. In one month, we went through the entire software development process. Our project was a book recommendation system. The back-end was developed in Python using the Flask framework. At my suggestion, we used React for the front-end because we had used Vue in the previous project, and I unexpectedly fell in love with React, which I would later rely on for my career. I also uploaded this project to GitHub: EuDs63/BookRecommend_Front: Book Recommendation System.
- In the first semester of my junior year, I spent a lot of time learning Rust out of interest. At this time, I didn't produce any major projects; I just wrote some small tools for personal use. I also explored WebAssembly technology and followed tutorials to create EuDs63/game_of_life. Additionally, I switched the framework used for my blog from Hexo to Hugo because, after working on two projects, I had reached an introductory level in front-end development, so I modified the theme according to my ideas.
- In November of that year, I attempted to submit my first resume and went through my first written test, HR interview, and group interview. The long wait yielded no results, which dampened my enthusiasm for seeking an internship. Looking back, I regret that if I had gained some internship experience during my junior year, it would have made things easier later on.
- Time flew by, and the leisurely days passed quickly. As soon as the winter break of 2023 ended and I returned to school, I chatted with my classmates, and we realized that those of us interested in employment should start looking for summer internships. At that time, I didn't take it too seriously. I thought I should first work on a project to make my resume look better. So, I wrote EuDs63/postkid: A lightweight tool offering key functionalities inspired by Postman., using the Tauri framework to showcase cross-platform capabilities.
- After completing the project, I started submitting resumes in March, and it was time to determine my direction. I chose front-end development because I felt that back-end development required deeper learning, including microservices and performance optimization, but I lacked practical environments, making back-end learning seem absurd. Front-end development was different; I could receive real-time feedback and perceive performance optimization immediately.
- Finding a summer internship was also quite a challenge, but it was far less torturous than autumn recruitment. I started submitting applications in March, and by early April, a startup company was willing to take me in, and the boss valued me highly. I indeed improved my skills and understanding during the internship. This lasted until the end of September. During the internship, because the company was a startup, the biggest challenge was traffic. When I successfully brought in traffic, the importance of the front-end pages became evident. This internship experience further confirmed the significance of front-end development.
- By the end of August, I realized that autumn recruitment was starting. However, I was still procrastinating, partly due to fear and partly because some of my internship projects were not yet finalized. It wasn't until the end of September that I suddenly realized that if I didn't start submitting resumes properly, autumn recruitment would end. So, I hurriedly submitted applications, totaling around seventy. After the National Day holiday, the consequences of my mass submissions became apparent; I was almost overwhelmed with written tests and interviews every day, running around in a frenzy. My anxiety peaked like never before; I felt nauseous every morning and had little appetite in the cafeteria (though it might also be due to the cafeteria, which hadn't changed its menu in a long time).
- The first few interviews were almost all failures. Having not interviewed for a long time, I was unprepared. The three most important parts of an interview are: standard questions, project discussions, and coding challenges. However, I hadn't memorized standard questions. I was unwilling to practice coding challenges, and I didn't explain my projects well. As a result, I missed many opportunities. Fortunately, I had some luck and interviewed with Honor. They emphasize not screening out candidates during the interview stage, allowing me to pass the first round and achieve a breakthrough. The hardest part is always the beginning. After passing one interview, I gained confidence and started organizing my notes to memorize standard questions. I couldn't quickly master coding challenges, so I focused on commonly asked ones, and since I had hands-on experience with my projects, I became clearer in my explanations. I continued interviewing until the end of October, and after over thirty written tests and interviews, I had some good outcomes.
TL;DR#
I wrote too much at the beginning because it turned into my own memories. So here’s a summary:
- Readers should have confidence in themselves, especially if you are reading this shortly after starting college or just entering your sophomore year. There is still plenty of time. I only started developing an interest in computer science at that time.
- Southeast University's curriculum is reasonably designed; it covers what it should (except for some reason, my cohort did not have computer networks as a compulsory course, but the next cohort rectified this issue). If you do well on the major projects, the rewards can be significant.
- Personal interest is crucial. Only when you are genuinely interested in computer science will you be willing to spend time coding and self-learning new knowledge. If you choose a computer science major but have not discovered the joy of learning it, I suggest you check out Professor Jiang Yanyan's Operating Systems course or try other methods to ignite your interest. If you truly have no interest, switching majors early might be a wise path.
- Failing one or two, or even multiple interviews is not a big deal. Interview outcomes are heavily influenced by luck. Success or failure depends on your state at the time, the interviewer's mood, whether they are interested in you, and whether they have filled their hiring quota. Failing an interview is not your fault; the key is to learn from it and prepare for the next one.
- If you have time, try learning and experimenting with various tech stacks. No one can guarantee that your most interesting technology will be the first one you encounter. Being exposed to different technologies has its benefits; I have worked with C++, C, Java, Python, Rust, JavaScript, and Go. While it’s true that spreading yourself too thin can be detrimental, these experiences have made me less intimidated when encountering new technologies because I understand the underlying principles and know how to learn a new tech stack.
Recommended Reading#
- From Giving Up on Computer Science Graduate School to Landing a Job in a Big Internet Company: How I Did It? 【Autumn Recruitment Sharing Post】【Northwestern Polytechnical University Bar】_Baidu Tieba contains some details that I did not cover in this post.
- Senior Year Employment Record for Computer Science Majors【Hefei University of Technology Bar】_Baidu Tieba This poster focuses on employment in state-owned enterprises, which is also a very good direction.