BQ for Job Interviews

. . .

LD refers to Little Dinosaur.

Self - Introduction

requirements:

  • Prepare a fluent self-introduction and a detailed summary of work/project experience.
  • Familiarize yourself thoroughly with your resume.Be ready to elaborate on your roles, achievements, and
    technologies/tools you used.

Hey there! I’m Leo Hu.

I’ve been working as a Java fullstack developer for over ten years now, and I have experience building scalable,high-performance backend services and dynamic frontend web pages to solve real business problems.

I’m good at Java, JavaScript, Spring Boot and React. I used them to create many RESTful APIs. These APIs have detailed documentation, and I used these APIs to make backend services and frontend applications communicate with each other, and also make many different micro services communicate with each other in a distributed environment.

  • In backend development:
    • For security, I use Spring Security, OAuth2, JWT to implement authentication and authorization, to make sure
      everything is secure.
    • For data processing, I also work with Apache / əˈpætʃi / Kafka for real-time data processing, to build
      event-driven architectures that handle high-throughput data streams and scalable messaging systems.
    • For database, I mainly use MySQL and MongoDB and redis, I’ve got plenty of experience with Hibernate and JPA for
      data persistence. (I design complex schemas, optimize queries, and ensure data integrity)
    • For cloud platforms, I worked with many AWS services. I use EC2(Elastic Compute Cloud) to deploy and manage virtual servers, ECS(Elastic Container Service亚麻自带的类似k8s的东西一般给小公司用, 还有个EKS是兼容k8s的容器编排管理服务, 大点的公司一般用EKS) to orchestrate / ˈɔːrkɪstreɪt / Microservices in containers,RDS to handle relational databases, S3 to handle scalable storage, I use CloudWatch to track performance, monitor logs, metrics, and system health.
  • In frontend development:
    • for state management, I use Redux for complicated state management, and use useReducer + useContext for simpler state management.
    • for responsive UI, I use Material UI to provide a consistent user experience no matter what device or browser people use, they’ll have a similar experience.
    • for testing, I use Jest for unit testing and React Testing Library for behavior driven testing.

Work/Project Summary

requirements: Prepare 1-2 examples of past projects or jobs where you made a significant impact. Use the STAR
method (Situation, Task, Action, Result) to structure your responses. DO NOT READ, we can tell!

  • and next let me talk about my work experience:
  • Project 1:
    • Situation: First, let me talk about the company I’m currently working for. its name is Costco, it’s a retail and e-commerce company,
      • I’m a senior java fullstack developer there.
      • I was in a e-commerce team.
      • the project was a e-commerce platform.
      • I’m mainly responsible for developing and maintaining the core modules, like retail data processing and system integration and optimizing the performance and handling some business logic like: e-commerce platform, order system, payment system, delivery system and so on.
      • Because the number of transactions was growing very fast, but their old systems couldn’t keep up with new features and increasing user activity, so we needed a some stronger systems.
    • Task: So I used Java/Spring Boot/kafka/redis/PostgreSQL/aws services/kubernetes to build a more scalable backend architecture and developed some microservices, and use JavaScript/React to build some responsive single-page application, and optimize the database-related parts and enhance security.
    • Action(unnecessary, should skip): So I had to take some actions to finish my task. so First,(根据从处理数据一点点到部署的顺序记忆)
      • to handle scalability, I used springboot to developed a modular microservices architecture and designed plenty of RESTful APIs. Each service handled a specific function, like user management, poll management, and data analysis.
      • to handle security, I used Spring Security and OAuth2 for authentication and authorization.
      • to handle data processing, I used Kafka to make data analysis much faster.
      • to handle database, I used Redis caching to reduce database load and speed up responses. I also optimized database queries by adding indexes, removing redundant joins.
      • to handle storage, I integrated AWS RDS to enhance data management. , integrating third-party analysis tools.
      • to handle deployment, I used Docker and Kubernetes to handle it.
    • Result(optional): as the result, The new microservices architecture made the system more flexible and easier to maintain. and the e-commerce platform also became more scalable, and its frontend also became more efficient, beautiful and easy to use, like: the web page loading time was reduced by 30%, our API response times improved by 30%, our system handled 20% more daily transactions, and user engagement went up by 25%.
  • Before that, I spent three years at Netflix, where I built high-throughput, low-latency backend services to support real-time content recommendation and consumer engagement across platforms. and I spent two years at Adobe, I developed backend microservices using Spring Boot to support video conferencing, chat, and collaboration features. And I’ve also got experience in the financial industry directly, when I was at Robinhood, I developed real-time market data pipelines, designed secure APIs for stock platform.
  • that’s pretty much what I did, I read very carefully about this job description, I think this position is a perfect match for me .

questions about your resume

  • Costco
    • Costco has an office on Morena Blvd /mɔːˈreɪnə ˈblʌvd/. in San Diego /sæn diˈeɪɡəʊ/.

Netflix

  • Yeah, they’ve got an office in Midtown Manhattan /mæn'hæt(ə)n/, New York City.
  • I was part of the recommendation team.
  • the project was a consumer engagement platform.
  • Netflix was doing research to predict what users will like based on their age and their gender and some kinds of their personal information.
    • And we also used a large model to make these predictions. For example we use their location data subscribe information and watch history as input and then the model will decide what should be shown to the user.
  • And my job was to develop some services to handle the user data in real time. We wanted to make sure the personalized content immediately whenever a user’s actions changed.
  • We also developed a microservices architecture to handle millions of users and tools like Kubernetes to ensure its scalability.

Adobe

  • Their main office is in San Jose /sænhəu'zei/, California.
  • (optional) i was remote in Adobe,
  • I was in a Collaboration Services Team.
  • the project was a Collaboration Platform.
  • we developed backend microservices using Spring Boot to support video conferencing, chat, and collaboration features.
    • like Users can start or join scheduled video meetings with a single click,
    • and Users can send direct messages or participate in group chats while in a meeting
    • During a video chat, users can edit documents together at the same time using the collaboration features
  • My main responsibility was designing and building RESTful APIs to handle session management, user presence, messaging, and collaboration events.

Robinhood

  • They have a tech team in Denver /ˈdenvər/, Colorado /ˌkɑːləˈrædoʊ; /
  • I was in an online trading team.
  • the project was a stock trading platform.
  • We used Kafka to handle the data streams, and I focused on making sure the pipeline was low-latency and reliable, because any delay could affect trading decisions.
  • I also helped design secure APIs for the trading platform, like for showing real-time prices, historical charts, and user portfolio data.
  • and for a financial company, Security and stability were a big deal, so we built in access control, authentication, rate limiting, and monitoring to make sure the system ran smoothly.

TOP 15 behavioral questions

1. Why did you leave your last job?

  • Personal experience:
    • Because I wanted something more challenging and a job that fit my career plans better. I wanted to find a
      place where I can use my skills to really make a difference.
    • That’s why I’m really excited about this job at your company. I researched your company and your project, Your
      company’s job description is a total match for my work experience. I can really get things done. And there’s
      also new stuff to learn.
    • For example, I really like Kafka. in this new job, I’ll have the opportunity to deeply explore Kafka, so i think This new job seems super suitable for me, I’m really excited about it.
    • and I really think I can use the stuff from my old company to help your project succeed.

2. Describe a major conflict within or outside your team and how you handled it, or how you dealt with a difficult team member.

  • General approach: Usually, I first figure out what’s causing the issue, then have a one-on-one chat to talk
    with the team member. We consider the goals and find a way to reach a compromise, especially when deciding on
    different approaches.I will also try my best to understand his idea. We will discuss and keep it transparent and try to choose the best solution. It does not matter who comes up with that solution, because our goal is to make best product for customers. If we cannot really agree on each other, we will escalate to manager and let manager decides, we should all agree on the final decision.
  • Personal experience: for example, At my previous company, I remember once I disagreed with a frontend
    developer on the API design. He wanted something simple, but I knew we needed something more scalable. And then we discussed it, his idea is easier to implement and easier to use, but it’s not scalable; however, my idea is more complicated to implement but it’s more scalable. so After discussing the issue and considering the advantages and disadvantages, we found a compromise, that is, I create a simple version that the frontend can use right away, and also supported optional parameters to let the frontend get extra data. as the result, it worked well, and both of us were happy about it.

3. Describe a time when you had difficulty completing a task or making progress.

  • Personal experience:
    • ST: I remember when I was At Costco on Black Friday, I had trouble dealing with slow database queries for our inventory system.
    • A: first I used explain to inspect those slow queries, and then I checked JOIN types and their efficiency, and then I reviewed index usage, finally I found some unoptimized joins. so I researched MySQL optimizations, and I asked for some advice from some database experts. then I created indexes on frequently joined columns, changed some LEFT JOINs to INNER JOINs .This way, we stop getting data we don’t need.. I also added Redis caching for the popular products.
    • R: As the result, the query execution time was reduced by 50%. inventory lookups became much faster.. This whole thing really helped me understand more about databases optimization. i feel it was a great experience to me because I gained all the SQL experiences.

4. If your manager asks you to change something that you think is already good enough, how would you handle it?

  • General approach: Usually, I listen to my manager’s reasons and then I share my view and show some data to
    support it. If needed, I think we could come up with a compromise …
  • Personal experience: for example, I remember once I used Memcache to do the caching. but my manager wanted to
    switch to use Redis. So we discussed it, I thought Memcache’s data structure was pretty simple so it’s very easy to use and it fully met our needs at that time. We just needed to cache some key - value values then. But he told me that our project will become more complicated, and Redis had more features and it was more powerful to handle future changes and redis had better performance. so we ran some tests to compare their performance and we found that redis was better, and we found that Redis was also better than Memcache in many other ways. like:
    • for data processing, redis can handle different kinds of data, like lists, sets, and hashes. but Memcache can only deal with key - value pairs.
    • for data persistence, redis can store data on the disk, but memcache can not.
  • so finally, we decided to use redis to handle changes in the future, because redis is way better than Memcache.

5. Why do you want to join our team?

Same as 1.

6. Are you familiar with Agile / ˈædʒ(ə)l / processes and Waterfall methodology / ˌmeθəˈdɑːlədʒi /?

  • General approach: Agile works in an iterative / ˈɪtəreɪtɪv/ way. It breaks work into small cycles. This way,
    you can get feedback all the time and make changes as you go. Waterfall is different. It’s sequential. That means
    you have to follow the steps one by one.
  • Personal experience: In my experience, Agile is really good for projects that are fast - paced and need to be flexible. for example, At my previous company, we used Scrum. We had two - week sprints and daily stand - up meetings. This helped us change things fast based on what users said. But for smaller projects where everything is clearly defined, like a school project, I use Waterfall, When you have a clear plan from the beginning to the end,it’s easier to get the work done. Both methods are useful in their own ways, but I like Agile better because itcan adapt to different situations.

7. What does a typical day look like for you?

  • We follow Agile methodology, we have 2 weeks sprint.
    • So at beginning of each sprint, we have a planning meeting which we sit together to discuss all the tickets we need to work in in the whole sprint, and after that we have grooming meeting which is for developers to get familiar their own tickets.
    • Then in each day, we have daily standup meeting in the morning at around 10am when we discuss our progress on each ticket and any blockers (need to wait on others work) we have. After meeting, we go back to work on our tickets and sometimes, we have meeting with business team to discuss the detailed problems, we also have design meetings for each big stories and we also have developer meetings to discuss our common issues.
    • AT the end of each sprint, we have retrospective/retro meeting to review what we have done.
    • Percentage of daily time: 60-70% on coding including development and test cases, 10-20% on meetings, 10-20% on leading junior people or system design meeting

8. What do you think are the most important factors for a successful team ?

  • General approach: Good communication, clear goals, trust, and a positive learning attitude are key for a team to succeed.Some points to mention:
    • Good team culture, nice working environment
    • Good skills and new technologies used in the team
    • You feel you can grow in the team, someday you may become a senior or leading some juniors
    • You feel being important to the project, you can make contributions and be needed by others as well.

9. If you are working on a sprint and your manager suddenly assigns you a new task that needs to be finished as soon as possible, what would you do?

  • General approach: This is really normal for me. First I will connect with manager to get an idea on the
    priority / praɪˈɔːrəti / of the task, and reorganize my priorities. ( in the middle say something like gotta
    be a reason manager made the choice)
  • Personal experience: for example, I remember once I was working on a ticket to implement a new API
    endpoint, suddenly manager assigned a new ticket for me, it’s related to the production issue, which was about
    the delays in order processing, and the manager thought I have the ability to do that. Finally, manager is
    really happy about how quickly I solved the issue.

10. Tell me something about yourself that is not on your resume.

  • Personal experience: I like to develop some productivity tools, like shell tool, I once developed a zshell
    plugin that can search everything very quickly with the key tab, and I once developed a chrome plugins, which can
    show the table of content for the web pages, so we can navigate to the chapter whatever we want very quickly, it’s
    very helpful to read the long technical articles, and I introduced these tools to my team members, which helped
    them complete their work more efficiently and also enhanced my coding skills.

11. Tell me about a difficult project or challenge you faced and how you handled it.

  • same as 3

12. Share a time when you made a mistake in a team setting, how you resolved it, and what you learned from the experience.

  • Personal experience:
    • Situation: I remember once I made a mistake and let some sensitive user data show up in an API. It was a
      security issue.
    • Task: I needed to quickly solve the problem to protect user data and make sure this kind of thing didn’t
      happen again in the future.
    • Action: I took some actions to fix the security problem. I reproduced it in our local environment, I added checks and controls to limit data access
      to those who could access the data. Then I held a meeting and made a presentation about this problem. and we
      discussed how to prevent this kind of problem from happening again in the future.
    • Result: After that, I’m always careful about user data and always review my code before I push my code. our code review process became better and we added stricter security checks and more
      reviews.

13. Do you have on-call experience, and are you comfortable with overnight on-call duties?

  • Personal experience: this is very normal for me, I’m totally comfortable with overnight on-call duties. I
    remember when I was at my REI, I was on call during busy times. and there was a problem with the database, I fixed
    it quickly and got the service running again.

14. Do you know what pair programming is, and what are your thoughts on it?

  • It’s like There are two developers and they are working together for tickets and they will share the idea to each other who is each other and they will learn something from each other.
  • its advantages is like:
    • Good to learn from the leader and good for new members to get familiar with project
    • Good to trigger new ideas, when you discuss, new ideas come out more often then you just think by yourself
  • and the disadvantage is like:
    • Bad: coding is very slow.
  • as for Work independent: I am experienced, so I can solve most of the tickets just by working on my own.
  • But I also did pair programming with team members, like when we have Demo or Design meetings, or when I do knowledge transfer for some new team members, I do pair programming to help them.

15. If you are mentoring a junior colleague and they propose a new idea to the team, how would you handle it?

  • General approach: Usually, I listen to the idea, I think about it if it’s a good solution, and I help them
    show it to the team.
  • Personal experience: I remember many years ago ,once I was mentoring a junior colleague ; and he came out with an idea that we should use a new API testing tool named postman to replace our old API tester, I checked how it would work with our project, and and it’s much easier to
    integrate into our CI/CD workflow. I encouraged them to show it to the team, and the team agreed to use the idea.as the result, it was very popular and we all like that very much

16. Describe your code review process. What do you focus on during a code review?

  • General approach: Usually, I focus on making code easy to read, and check if it has security risk and some
    performance problems, and make sure it follows our coding standards.
    • Syntax error
    • Possible duplicate logic
    • Method possibilities to split to reusable methods.
    • Make sure having unit test that covers the part
    • Check performance improvements, like try to improve the time and space complexity.
    • Check performance, like try to use cache or eliminate duplicate database calls.
  • Personal experience: For example, when I was doing a code review, I found variable names that were not clear,
    or a security problem like some colleagues didn’t check the access permissions in their APIs, or some performance
    issues like redundant for loops to search something. We fixed those things, and the code became better and more secure.

fulltime job BQs

  • ~ 宁可保守表达,也不要踩雷。很多时候,过于强调自己的“领导力”或“功劳”反而让 HM 产生反感。要多用“we”,少用“我一个人搞定”;强调合作,而不是独自英雄主义。
  • ~ 别一兴奋就一直说。面试是双向交流,不是演讲。说多了容易暴露短板、绕远路,反而让人觉得你控制力不足。
  • ~ 倾听,有时候比表达更关键。真正成熟的沟通,往往体现在你能否听懂对方的关注点,并围绕它精准回应。所以,当我们准备 Behavioral、HM 面 或系统设计时,不妨更多地从“对方角度”出发,理解他们在乎什么、担心什么、欣赏什么,而不是一味展示自己。

下面是一些我碰到的面试问题:

  • ~ Tell me about a time you worked on a team project.
  • ~ If your boss tell you 1+1=3 and ask you to continue working on it. What would you do?
  • ~ Describe a situation where you had to work with a difficult teammate.
  • .
  • ~ How do you handle disagreements in a team?
  • .google и
  • ~ Give an example of how you contributed to a team’s success.
  • ~ Tell me about a difficult problem you faced and how you solved it.
  • -baidu 1point3acres
  • ~ How do you prioritize multiple tasks when deadlines are tight?
  • ~ Tell me about a time you worked under significant pressure.. 1point 3 acres
  • ~ Describe a time when you led a project or initiative.
  • ~ How do you handle taking on responsibilities outside your job description?
  • ~ What are you most proud of professionally?
  • ~ Tell me about a time when you set and achieved a challenging goal.

Pilot Training Questions

How to Answer a Corp-to-Corp Vendor’s Call?

Vendor: May I talk with ZhangSan?

You: Yes, this is ZhangSan. What can I do for you ?

Vendor: Hi ZhangSan, how are you today?

You: I’m good, thanks! How about you?

Vendor: I’m [Name] from [Company]. Are you looking for a Java Developer/Full Stack Developer position?

You: Yes! May I know if your position is a Corp to Corp (C2C) position?

(If Vendor says “No, it’s W2”)

You: Does your company have any Corp to Corp opportunities?
• If “No” → End the conversation: I have an employer and I’m only looking for C2C opportunities. Thanks for your time!
• If “Yes” → Continue the discussion

You: Is this position remote or onsite?

Vendor: It’s onsite.

You: May I know the location?

(If the location is your current city)

You: I’m local to that area.

(If relocation is needed)

You: I have no problem with relocation.

Vendor: What visa are you on?

You: [Answer according to mock discussions]

Vendor: What is your expected rate?

You: The rate needs to be discussed with my employer.

Vendor: Understood. I’ll send you the job description/RTR over email.

(If Vendor does not mention email, you ask first)

You: May I know if you have sent an email to my email ID?

(If received, confirm)

You: I received it. I will reply shortly. I will also provide my employer’s phone number and email ID, so please discuss the rate and send rate confirmation to them.

(If not received, request it)

You: Please send it over, and I will reply once I receive it. I will also provide my employer’s phone number and email ID for rate discussion.

Email Follow-Up:
• If they need a Bench Sales Contact, you can provide:
This is my bench sales contact, Edward.
• Phone: 2017246910
• Email: jade@pilottechnologies.net

Leetcode

Rest API

  • User Info
    • Given URL: https://jsonplaceholder.typicode.com/users
    • You need to write a REST api to call the given URL and return a user with its “name, username, zipcode”
    • for example, if user id is 1, you should return a JSON file with username “Bret”, email “Sincere@april.biz” and
      zipcode “92998-3874”
      • HINT: use “Rest Template”
    • Result: OPEN a webbrowser and enter: http://localhost:8080/user/1 should return the correct result.
    • Follow-up: id only 1-10, how to handle /user/11 → print in the page “Invalid ID”
    • Solution
  • Movie
    • https://jsonmock.hackerrank.com/api/movies/search/?Title=waterworld
    • GIVEN Above URL. Write a MVC with rest api to fetch this URL and then create new rest APIs to:
      • Show all movies
      • Show all movies sort by year
      • Fetch a particular movie based on its imdbID.
      • Hint: have multiple pages
    • Solutions
      • look at this URL date, it has multiple pages, each page has 10 movies, we need to fetch all pages to get a
        full list of movies and then filter to find the particular movie by imdbID
      • each movie has Title, Year, imdbID three fields, we need to create a model to match them
      • need org.json.simple to parse the json object from the given URL
  • Build a POST API /greetings with below requirements
    • Create a POST API /greetings
    • INPUT – json array: [{“name”:”john doe”, “work”: “engineer”}, {“name”:”jane who”, “work”: “manager”}]
    • OUTPUT - json: {“data”: [“Hello john the engineer”, “Hello jane the manager”], “timestamp”: “$
      {requested_timestamp}”
    • Use postman to call the API and pass input, it should return the correct response.

Knowledge of 12-factor App principles

The 12 - factor app principles are a set of guidelines for building software - as - a - service applications. They were developed by Heroku in 2011 to help developers create applications that are easy to deploy, scale, and maintain. Here is an overview of each principle:

  1. Codebase: There is a single codebase tracked in a version control system, and it is used in multiple deploys. This ensures that all environments, from development to production, are based on the same codebase, reducing inconsistencies.
  2. Dependencies: Explicitly declare and isolate dependencies. This means using tools like package managers to manage all the libraries and frameworks the app depends on, ensuring that the app runs in a consistent environment.
  3. Config: Store configuration in the environment. This allows for easy customization of the app’s behavior based on the environment it’s running in, without changing the code. Configurations can include database connection strings, API keys, and other settings.
  4. Backing Services: Treat backing services like databases and message queues as attached resources. The app should be able to connect to these services using a standard URL or connection string, making it easy to switch out one service for another.
  5. Build, Release, Run: Strictly separate the build, release, and run stages. The build stage compiles the code and installs dependencies, the release stage combines the build with the configuration, and the run stage starts the app in the runtime environment.
  6. Processes: Execute the app as one or more stateless processes. Each process should be independent and not rely on the state of other processes. This makes it easy to scale the app by adding more processes as needed.
  7. Port Binding: Expose services via port binding. The app should listen on a specific port and make itself available to the outside world through that port. This allows the app to be easily deployed to different environments and integrated with other services.
  8. Concurrency: Scale out via the process model. Instead of trying to make a single process handle more and more requests, add more processes to handle the load. This can be done horizontally by adding more instances of the app or vertically by adding more resources to a single instance.
  9. Disposability: Maximize robustness with fast startup and graceful shutdown. The app should be able to start up quickly and be able to handle sudden shutdowns gracefully, saving any necessary data and cleaning up resources.
  10. Dev/Prod Parity: Keep development, staging, and production environments as similar as possible. This helps to avoid issues that can arise when an app works fine in development but breaks in production due to differences in the environment.
  11. Logs: Treat logs as event streams. Collect and analyze logs from all processes and services to gain insights into the app’s behavior and diagnose issues. Logs can include information about errors, user actions, and system events.
  12. Admin Processes: Run admin/management tasks as one - off processes. These tasks can include database migrations, seed data insertion, and other administrative functions. They should be run separately from the regular app processes and follow the same principles as the app itself.

Relevance to Java & Spring Applications:

  • • Spring Boot naturally follows many 12-factor principles, like externalized config (Spring Cloud Config, Environment Variables) and embedded servers (Tomcat, Jetty).
  • • Docker & Kubernetes enable scalability (Factor 8 - Concurrency) and statelessness (Factor 6 - Processes).
  • • Log Aggregation can be done via ELK Stack, Prometheus, Grafana.