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 Forum】_Baidu Tieba.
This article is a reformatting of the content from the forum, aimed primarily at computer science students who are interested in undergraduate employment.
Origin#
Tomorrow is November, and my autumn recruitment will likely come to an end. Looking back over the past year, I have felt anxious, anxious, and still anxious.
I am not a technical expert who has harvested numerous offers, but the most regrettable aspect of my difficult job search this year is that I did not have a senior with work experience to share insights and point me in the right direction. I could only rely on myself and the information I gathered online, stumbling through the process.
So, with the thought that since I have been through the rain, I would try to help those who come after me by sharing my insignificant experiences and reflections.
What Employment Directions Are There?#
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 as well.
However, it is important to note that in the interviews I attended, especially at large companies, they really liked 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 that is just a 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 advance further, I realized that I needed to learn Spring Cloud and microservices, which are designed for high concurrency. Yet, I lacked practical scenarios; although I could simulate them with scripts, it still felt somewhat absurd. So, I turned to front-end development.
Front-end development felt more direct to me, and performance optimization was more targeted. Overall, I found the sense of achievement to be higher in real-time. So, I chose this path.
The above is based on my personal interests. If we compare it to the employment market situation I have observed:
Domestic small and medium-sized companies generally view front-end roles as a bonus; simple pages can simply use low-code solutions or let back-end developers handle them. Therefore, there are fewer front-end positions compared to back-end, and significantly fewer.
However, large companies still have a relatively high demand for front-end developers. Moreover, due to biases and later development, the educational requirements for front-end positions are not as strict as for back-end roles.
For undergraduates graduating from major universities, at least in large domestic companies, front-end positions generally allow you to get an interview just by submitting your resume. 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 and silver October," but this year it is relatively more competitive. Companies started opening early recruitment in August, and some outstanding individuals could even finish their autumn recruitment by early September.
Autumn recruitment mainly 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 failed in postgraduate entrance exams or civil service exams will join in spring recruitment), and is relatively less anxious (at least not immediately facing graduation).
Therefore, I strongly recommend students interested in undergraduate employment to seize the autumn recruitment opportunity.
Spring Recruitment#
Spring recruitment starts in March every year and lasts until April or May. I haven't really participated in it, so I don't know much.
However, spring recruitment serves not only to target that year's graduates but also has an important purpose: recruiting summer interns. Summer internships mainly target students who are in their third year during the first half of the year.
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 are often too lazy to ask standard questions, but the prerequisite is that the projects and internships listed on your resume are meaningful to them.
However, one frustrating aspect is that summer internships generally take place from June to September. By September, you will have to 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 internship experience is definitely beneficial, but each internship should ideally last at least three months.
Generally, having one internship during autumn recruitment is sufficient to meet the threshold. Based on my own experience, our school's courses in the first semester of junior year are so numerous that unless you skip them or take a short one or two-month winter or summer internship, it is quite difficult to find time for an internship in the first semester. 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 in June, July, and August, and with the experience from the previous internship, you might be able to enter 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 individuals.
How to Find Internships#
The computer science and software engineering programs at Southeast University have internship duration requirements. Computer science and human-computer interaction require one month, while software engineering requires three to six months.
The school will help connect with some companies in the second semester of junior year, but in reality, most companies still require further interviews; it’s not just a click-and-send situation. Moreover, the number of companies and positions that the school connects with 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 on their own? I recommend applying through official websites; every year during the spring and autumn recruitment seasons, companies will open a batch of internship positions, and there are also regular internships available almost year-round.
One piece of information is that during the period before the Chinese New Year each year, companies tend to be short-staffed, making it easier to find internships.
Additionally, there are two platforms that I use quite often.
One is Niuke.com, where many people looking for jobs, especially in the internet sector, share their experiences and complaints. If you have some free time, you can browse Niuke.com to increase your anxiety a bit. There are also some HR personnel on Niuke; once you complete your resume, you can wait for HR to reach out to you.
Then there is Boss Zhipin, but I haven't used it much because the quality of companies varies. Moreover, if you really use it, you will find that most of the HR personnel there are from Huawei.
Some forum 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 internship experience there helped me improve a lot.
But I still advise everyone to be cautious when looking for jobs and to be wary of scams.
Job Fairs#
Every year, the school organizes two large job fairs: 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. But coincidentally, it clashed with the MyGo!!!!! concert in Shanghai.
So, without thinking, I went to the concert, and fortunately, I do not regret it.
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 that there were only three or four front-end positions, which is quite disappointing, haha.
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 will expire.
- Thank You Letter: Some companies will send you an email after the recruitment process ends to inform you that the process has been terminated.
- Pooling: This is a particularly common phenomenon this year. It refers to the recruitment evaluation stage after you have passed all interviews. There will be multiple candidates who have passed the interview, and the company ranks them based on interview performance, educational background, etc. Those with higher rankings are contacted first. However, often those with higher rankings also have multiple offers, so it may go to the next candidate, or even continue cycling through. Some companies may even experience situations where no one accepts offers from the pool. This is actually a lose-lose situation: interviewees cannot get a definite intent and can only interview multiple times, while companies cannot determine whether candidates are willing to join, so they can only interview more and bring more people into the pool. The popularity of pooling is not beneficial for either side.
- Salary Negotiation: "a" is an abbreviation for "argue." Exceptional candidates may have this stage. HR generally asks 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.
A Standard Job Search Process#
Process#
- Submit resume
- After resume screening, you will be notified to take a written test and assessment (not always required)
- Two to three rounds of interviews (technical or HR; the number and type of interviews vary by company)
- Pooling (not always required)
- Intent (not always required; some companies directly give you a final offer with salary details)
- 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 due to two main reasons:
- I procrastinated and felt a bit fearful of autumn recruitment.
- Some of my internship projects were still incomplete.
So, I ended up submitting my applications in late September.
At first, I thought I would submit them in waves, but later I got anxious and concentrated on submitting to all possible options, totaling around sixty applications.
I don't know if it was because I submitted late or just coincidentally, but in October, companies seemed to be afraid of being ghosted, so they scheduled many interviews.
However, the cost was that I spent about twenty days after the National Day holiday in high-pressure written tests and interviews, so everyone should not follow my example.
Still, the saying goes: prepare early, submit early, and confirm offers early.
Technical Interviews#
General Process#
- Self-introduction
- See if the interviewer is interested in your project; if they are, 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 terminology explanations, where the interviewer asks and you answer, then move to the next question. However, some skilled interviewers will dig deeper based on your answers, which tests your understanding of the knowledge.
- Coding challenge. Depending on the company, some will have this. Coding challenges are generally not too difficult, around LeetCode easy level; if they ask for hard problems, it usually means 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 + interview round. If I can find out the department, that would be even better. Searching on Niuke or Google will likely yield results.
One major reason for searching for interview experiences is that most interviewers tend to pull questions, especially coding challenges, from a question bank. The question bank prepared by a company or department is actually limited, making it 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 finds them meaningful and thus asks them, while the interviewee remembers them after being tested, leading to documentation.
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 audio, 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 documenting interview experiences is that you can refer back to them later and review which areas you did not 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 solidify and deepen your understanding of the project through repeated questioning.
Another point to note is that for standard questions or coding challenges that you did not answer well, it is best to reinforce 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 did not 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 well, but I couldn't articulate it the first time, and then I reflexively said I didn't know it in the following two interviews. This resulted in missing out on several interviews that could have had good outcomes.
Standard Questions#
Why Memorize Standard Questions?#
I used to think that memorizing standard questions was an exam-oriented behavior and felt resistant to it. I believed that when I truly needed this knowledge, I could just look it up online. 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 these concepts. Standard questions do 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 indicates that I lack knowledge of certain standard concepts.
So, I reconciled with standard questions; I must memorize them.
How to Answer Standard Questions#
Looking at Technical Interviews from the Interviewer's Perspective - Why "Memorize Standard Questions"_Niuke.com, I further realized that if asked a standard question, I should proactively extend my answer to grasp some control over the interview.
When asked standard questions during an interview, they can generally be divided into two situations:
- One is that you know the answer. In this case, the priority is to answer the interviewer's question clearly and then appropriately elaborate. Especially if you have practical experiences related to the question, expanding on that will be a good bonus point. Just remember not to stray too far off-topic, and it's best to circle back to the main point at the end; otherwise, it may seem like you are rambling.
- The second is that you do not know the answer. In this case, I generally have two approaches. Both start with directly saying that I do not know. Then, depending on the interviewer's response, if they want me to elaborate further, I will try to reference related knowledge and share my reasoning. If the interviewer moves on to the next question, I will follow suit.
The Significance of Standard Question Responses#
Answering standard questions is not necessarily a bonus point. Given the current job market situation, 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, I particularly like to supplement the classic front-end standard question "Cross-Origin Issues and Their Solutions" with Problems I Have Encountered | EuDs's Blog.
So, does not being able to answer a standard question count as a negative? It might not. Because an interview can last anywhere 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 us not being able to answer a standard question. Therefore, quickly moving on instead of rambling seems to be a better approach.
Algorithms (Coding Challenges)#
Importance#
After discussing standard questions, it naturally leads to algorithms.
Compared to memorizing standard questions, I dislike practicing algorithm problems even more. Although I resolved to solve one problem every day last year, I gave up after less than a month because I couldn't find the meaning in it.
However, algorithm problems are directly related to two important stages in the job search process: written tests and the coding challenges at the end of interviews. Written tests are generally just a basic threshold, but the coding challenges can be quite damaging. This is because they occur towards the end of the interview, and the time allocated is usually at least ten minutes. The impression you leave on the interviewer during this time can be quite significant. Thus, it is often said that whether you can perform well in the coding challenge directly determines whether you pass the interview.
Content Being Assessed#
Fortunately, the algorithm problems posed during interviews are generally around the easy level on LeetCode; asking for harder problems usually indicates that the interviewer is not very interested in you.
Moreover, many of the coding challenges for front-end positions are implementation scenarios, 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, it is also important to clarify the purpose behind the coding challenges. I personally believe there are several 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 during an interview is during the coding challenge. Coding ability does not require you to get the code running perfectly on the first try; it is more about the details: 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 problem? This can reflect your true coding ability in real situations.
What to Do If You Can't Write It Out#
If you genuinely cannot write it out, what remedial measures can you take?
This is something I excel at because I cannot write out about fifty percent of the coding challenges in interviews, let alone write optimal solutions.
In such cases, I will first try to use the simplest brute-force method to pass the test cases, and then see if I can find an optimized solution.
Alternatively, there is a somewhat sneaky method. When you find a problem that you have no idea how to approach, you can ask the interviewer to switch to another question, citing reasons such as having encountered this question in a previous interview, etc.
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 attending more interviews, I naturally figured it out. Here are my subjective thoughts; feel free to critique.
Questions That Are Not Necessary to Ask#
Some questions are unnecessary to ask, such as:
-
How do you think I performed? Will I pass?
Interviewers generally avoid directly answering the results of the interview and will just give a vague response; asking this is essentially pointless. -
Do you have any suggestions for me?
Some say this question is asked when one feels that the interview did not go well, indicating a lack of confidence. I have indeed done this, especially when I felt that the interview was likely unsuccessful, and I would ask this question to at least gain some insight from the experience. However, after multiple interviews, I found that I rarely received valuable suggestions after asking this question. -
Questions about salary?
Specifically for technical interviews. When it comes to salary negotiations, HR will naturally ask about your expected salary.
Questions That Are Worth Asking#
Some questions are worth asking:
-
Regarding a specific technology, first present your thoughts and then ask the interviewer's opinion.
I particularly like to ask questions like this; for example, I often ask interviewers about their views on JS or front-end development. Interviewers usually have more experience than I do, and their deeper understanding of the technology often leads to valuable insights that I can learn from. Just gaining these new perspectives makes the interview worthwhile. -
Specific business of the department.
In most cases, the department where your interviewer works will likely be the department you join. Therefore, you can gain first-hand information about the department's business. Remember, interviews are a two-way selection process, and 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 attentiveness in their responses.
- Questions that interest you.
This varies from person to person and company to 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 was disappointed to find that the web version was hardly maintained, with numerous error messages, and I asked what was going on. Another time was during an interview with 4399, as 4399 has brought me a lot of joy over the years, and I asked if there would be opportunities to work on those mini-games.
Should You Pursue Undergraduate Employment?#
Actually, this section should have been placed at the beginning, but I found it too subjective, filled with my own opinions, and not very meaningful for reference. So I decided to place it later.
If readers have the patience to read 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 studies.
Here, I will only state my own views, or rather, 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 that came with it. Thus, I confirmed the path I wanted to take: I would pursue employment.
I believe this is the most important point. If what you do aligns with your interests, and you find it fulfilling, then it won't feel too torturous, and you won't regret it. Or 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 more than one person complain that if they had not pursued a master's degree, it would have been much better because they found it harder to get into companies that were accessible before pursuing a master's degree. Three years ago, it was like this; what about three years later? I do not see signs of improvement. The series of issues that led to the downturn have not been resolved.
However, this can also serve as an argument against undergraduate employment. Since the future may be worse, having a higher degree would give you a stronger competitive edge. And as for work experience, there are plenty of people with three years of experience. I believe this argument is valid.
- I fear the sunk cost of failing the postgraduate entrance exam.
Since my senior year of high school, I have realized that spending a year repeatedly practicing existing content is unbearable for me; I find it boring and feel like I am wasting valuable time. Therefore, I spent a lot of time during my senior year finding ways to make my tedious review more enjoyable.
Thus, it is foreseeable 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 have seen online has frightened me.
Salary#
In A Few Things About Undergraduate Employment_Baidu Tieba, a forum 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 the companies and positions you are interested in on offershow. The information there tends to be more authentic.
What to Do If You Are Laid Off#
Some may say I am being overly pessimistic, worrying about being laid off even before officially starting work. However, I have read 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. 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 job in HarmonyOS development, but with significantly lower pay and a longer commute. By the end of the video, he could no longer 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 a healthy physical condition and have some savings.
If I get laid off, I will look for the next job; if I truly cannot find one, then I will go home. At least surviving should not be a problem.
My Own Experience#
Preface#
Next, I will talk about my own experiences, mainly reflecting on the past few years. This can only serve as a reference; feel free to read if you don't mind.
My Programming Learning Journey#
- I had no exposure to programming before college. I started using computers quite early, in kindergarten, and spent a lot of time playing on them. However, it was all just play. 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 a significant regret for me.
- When filling out my 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, I only had one programming-related course in my freshman year: Basic Programming, which was C++. I spent my freshman year in a daze, and the course content did not pique my interest in computer science. By the end of my freshman year, the final project for Basic Programming required us to write a small program, similar to a basic grade management system. This was when I began to develop some interest.
- The summer between my freshman and sophomore years was the busiest summer for me. 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, I could not postpone my summer school courses. 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 got started with MySQL and eventually wrote a simple Minesweeper game based on Qt. If you're interested, you can check it out at EuDs63/myMineSweeping: A simple Minesweeper game based on 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, specifically 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. Since my code needed version control, I naturally started using Git, and GitHub became a website I visited daily (I realized from my commit history that I had also started learning front-end development that semester, but it was still limited to the basics).
- 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 had 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 did not succeed. However, I gained a lot from this project because I practiced using Spring Boot and tried Vue3. Additionally, to deploy the website, I also learned to use Nginx. This project helped me develop my full-stack abilities.
- In the second semester of my sophomore year, I also took a course that I found very interesting: Operating Systems. The instructor taught very well, making pure theory engaging. I often saw recommendations for 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 solidly, but I also developed a stronger interest in computer science. At the same time, I was introduced to Linux. Since the textbook was an original English version, Professor Jiang also encouraged reading documentation, which improved my English skills. I used to be intimidated by long English texts, but now I found I could read them with reasonable 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, which later became a habit. The blog does not play a significant role in job searching because interviewers are usually busy, and there are many candidates; they rarely have time to check it out. Out of all the interviews I attended, only one interviewer mentioned that they had read my blog (this interviewer happened to be a senior of mine, which was a coincidence). I believe the blog provides a space for you to express your thoughts. If you are interested in my blog, please search for "euds' blog."
- Following that was the summer between my sophomore and junior years. There was only one course in summer school: Professional Skills Training. In short, it was another group project to build a website. Over the course of a 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 previously used Vue, and unexpectedly, I fell in love with React at first sight, relying on it for my future 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 that time, I did not produce any major projects, 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 preferences.
- In November of that year, I attempted to submit my first resume, going through my first written test, HR interview, and group interview. The long wait did not yield any results, which dampened my initial desire to find 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 discussed with my classmates that those of us interested in employment should look for summer internships. At that time, I did not take it seriously, thinking 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, primarily to demonstrate cross-platform capabilities.
- After completing the project, I started submitting resumes in March, and by this time, I needed to determine my direction. I chose front-end development because I felt that back-end development required deeper learning, involving microservices and performance optimization. However, I lacked practical environments, making learning back-end development 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 applying 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 continued until the end of September. During the internship, because the company was a startup, the biggest challenge was traffic. When I finally managed to drive traffic to the site, the importance of the front-end pages became evident. This internship experience further confirmed the significance of front-end development for me.
- By the end of August, I realized that autumn recruitment had begun. However, I was still procrastinating, partly out of 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 applying for jobs seriously, the autumn recruitment would end soon. So, I hurriedly submitted applications, probably around seventy in total. After the National Day holiday, the consequences of my mass applications became apparent; I was almost overwhelmed with written tests and interviews every day, running around in a frenzy. My anxiety reached its peak; I felt nauseous every morning and had little appetite in the cafeteria (though that might also be due to the cafeteria not changing its menu for a long time).
- The first few interviews were almost all failures. Because I hadn't interviewed in a long time, I was unprepared. The three most important parts of an interview are: standard questions, project discussion, and coding challenges. However, I hadn't memorized many standard questions. I was unwilling to practice coding challenges, and I didn't articulate my project well. As a result, I missed many opportunities. Fortunately, I had some luck and interviewed with Honor. Their interview process is known for not eliminating candidates, which allowed me to pass the first round and achieve my first breakthrough. The hardest part is always the beginning. After passing one interview, I gained confidence; I started memorizing standard questions by organizing my notes, and for coding challenges, I could only try to practice commonly asked ones. As for projects, since I had genuinely worked on them, I became clearer in my explanations. Thus, I continued interviewing until the end of October, having completed over thirty written tests and interviews, and I achieved some good results.
TL;DR#
I wrote too much at the beginning, as it turned into a reflection on my own experiences. 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 becoming interested in computer science around this time.
- The courses at Southeast University are reasonably designed; they cover what is necessary (except for some reason, my cohort did not include computer networks as a compulsory course, but the next cohort has fixed that bug). If you do well on the major projects, the gains 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 proactively learn new knowledge. If you choose a computer science major but have not discovered the joy of learning it, I suggest you check out Jiang Yanyan's Operating Systems course or try other methods to spark your interest. If you truly have no interest, changing majors early might be a wise path.
- Failing one or two, or even multiple interviews is not a big deal. Interviewing is heavily influenced by luck. Whether you succeed or not depends on your state at the time, the interviewer's mood, their interest in you, whether they have enough candidates, and many other factors. 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 to learn and experiment with various technology stacks. No one can guarantee that the technology you are most interested in is the one you first encountered. Exposing yourself to different technologies has its benefits; I have encountered C++, C, Java, Python, Rust, JavaScript, and Go. While it is true that "too much can be overwhelming," these experiences have made me less intimidated when approaching new technologies because I know that the fundamentals remain the same, and I understand how to learn a new technology stack.
Recommended Reading#
- From Giving Up on Computer Science Graduate School to Entering a Major Internet Company During Autumn Recruitment, How Did I Do It? 【Autumn Recruitment Sharing Post】【Northwestern Polytechnical University Forum】_Baidu Tieba There are some details in this post that I did not cover.
- Senior Year LD Records Computer Science Employment Post 【Hefei University of Technology Forum】_Baidu Tieba This poster focuses on employment in state-owned enterprises, which is also a very good direction.