Tech Interviews with Sorting Algorithms Workshop
Presentation: https://codebar-shanghai.github.io/Tech_Interviews_Sorting_Algorithms/
Repo: https://github.com/codebar-shanghai/intro-websecurity-workshop.git
Welcome everyone to the Tech Interviews with Sorting
Algorithms Workshop. I’m Lauren Collins, and I’ll be
guiding you through today's session. This workshop is
designed to help you gain a deeper understanding of how
sorting algorithms play a crucial role in technical
interviews and to prepare you for real-world coding
challenges. Throughout this session, we’ll explore
different sorting techniques and practice implementing
them. In addition, we’ll also be introduced to
techniques for practicing soft skills, such as
communication and problem-solving, which are highly
valued by employers.
About Me
Aspiring Full Stack Developer
Focused on web technologies
Passionate about empowering women in tech
B.S. Degree in Teaching and Learning
Work Experience in Middle School Education (Age 11 - 13)
Fun fact: My 4-year-old daughter is the youngest CodeBar member!
I'm passionate about full-stack development, and committed to empowering women in tech.
I'm also preparing to contribute to open-source projects, and my daughter, at 4, is the youngest CodeBar member!
Overview
Introduction (5 min)
Tech Interviews Presentation (30 min)
Intro to Workshop (40 min)
Q&A (15 min)
Break (10 min)
Workshop with Q&A (75 min)
Closing Remarks (5 min)
Today’s session will start with a brief intro, followed by a 30-minute presentation on tech interviews.
Next, we’ll dive into algorithms in the workshop, followed by a Q&A, a short break, and hands-on activities.
We’ll finish with closing remarks.
Takeaways
Learn how to prepare for tech interviews at various
levels
Gain experience with Bubble, Merge, or RSA
algorithms during the workshop
By the end of this workshop, you should have a better
understanding of how to prepare for tech interviews at
different levels, as well as hands-on experience with
sorting algorithms like Bubble, Merge, or RSA. You can
access the slides for this workshop at the provided link
to review the content at your own pace. Let’s get
started!
The Problem with Interviews
Interviews can be unpredictable. This workshop aims to demystify the tech interview process.
Interviews can feel unpredictable, but this workshop will clarify the tech interview process.
You'll learn what interviewers are looking for and how to prepare confidently.
To prepare for this presentation, I interviewed hiring managers. Today, I will share their insights on what they value in candidates.
Expectations Based on Level
I interviewed hiring managers about what they look for in candidates:
All Levels: Publicly showcase your work.
Junior: Highlight soft skills.
Mid-Level: Demonstrate growth and adaptability.
Senior: Show deep knowledge and thought leadership.
I interviewed hiring managers about the key traits they value at each career level.
Across all levels, they expect candidates to showcase their work publicly.
For junior roles, soft skills are critical. Mid-level candidates should demonstrate adaptability
and growth, while senior professionals are expected to exhibit deep knowledge and thought leadership.
Interview Insights
Eddie
Use standard language libraries in interviews.
Start with a docstring to define inputs and outputs before coding.
Follow a "top-down" programming approach.
Develop fluency in idiomatic programming (e.g., by following Python’s design principles and style; refer to bubble sort and merge sort exercises).
Solve problems first, then use AI to refine and learn.
Eddie recommends using standard libraries,
defining inputs/outputs with docstrings, following top-down programming,
and practicing idiomatic code. He also suggests solving problems first, then refining with AI.
Interview Insights
Anonymous
Deep understanding of work processes.
Strong problem-solving skills.
Self-learning and independence.
Knowledge of real-time programming and concurrency.
The interviewer stressed the importance of understanding work processes,
self-learning, and problem-solving, especially in advanced areas like real-time
programming and concurrency.
Interview Insights
Prof. Nath at the University of Colorado Boulder
Focus on adaptability over what you've learned.
Strong fundamentals and problem-solving are key.
Be honest if you don't know something.
In academia, pedagogy and teaching skills matter.
Prof. Nath values adaptability, problem-solving, and honesty.
In academia, teaching skills are also important.
Interview Insights
David
Strong communication skills.
Experience with success and failure.
Commitment to self-learning.
Alignment with current coding practices.
Deep understanding of key language features.
Deliver projects publicly—learn in public.
A degree is not required.
David emphasized that communication skills are just as important as technical
ability in interviews. Candidates should clearly explain their thought process
and decisions. He highlighted the value of experiencing both success and failure,
as resilience and learning from mistakes are key traits employers seek.
Self-learning is essential in the fast-changing tech world, and staying
current with coding practices is crucial. David also recommends "learning in public"
by sharing projects on platforms like GitHub, as it showcases initiative and real skills.
Lastly, he noted that a degree isn't necessary—practical skills and a strong portfolio often matter more.
Learn in Public Using Blogs
Kedasha Kerr : From Social Worker to Software Engineer at Microsoft:
itsthatlady.dev
Dan Abramov : Creator of Redux, shares insights on React and JavaScript:
overreacted.io
Lauren Collins : Markdown files documenting learning on GitHub Pages:
laurencollins.dev
Kedasha Kerr and Dan Abramov are great examples of learning in public.
Kerr transitioned to software engineering and shared her journey,
while Abramov posts insightful blogs on React. I also recommend checking out my
GitHub Pages site for a simple personal site example.
Best Places to Find a Job
Coding communities
User groups (Tech, Agile, etc.)
Conferences
Open source projects
Engaging with coding communities and user groups helps build
connections naturally. Conferences offer networking and insights
into industry trends, while open source projects showcase your
skills and can attract employers.
What Does "Computer Science Knowledge" Mean?
Do I need a computer science degree?
No!
University of Colorado advisor highlighted these
courses as key to landing a job in the tech industry.
Intro to Programming
Algorithms
Data Structures
Data or Information Visualization
Software Development Methodologies
A computer science degree isn't required for software development success.
Employers value skills like algorithms, data structures, and software methodologies,
which can be learned through self-study. My advisor also highlighted these as key for tech jobs.
I recommend starting with Python—it's versatile, widely used, and beginner-friendly.
Pair Programming
Driver: Writes the code
Navigator: Guides the driver
Switch roles every 20-30 minutes
Discuss and explain your thought process
Use feedback to improve
A common interview technique, especially for junior
developers. It assesses collaboration and
problem-solving in real-time.
You are encouraged to pair code during the workshop while completing the activities today.
Pair programming is used in interviews to assess both technical and teamwork skills.
- **Driver:** Writes the code.
- **Navigator:** Guides the driver and reviews the code.
- **Switch roles every 20-30 minutes** to keep both engaged.
**Explain your thought process** as you work to stay aligned.
**Use feedback** to improve your approach.
Try pairing during the workshop to build collaboration skills and reinforce what you’ve learned.
Study Tips Using AI
Do NOT: copy and paste code you should understand
(Ex: algorithms & data structures)
Do: Use AI to quiz yourself on topics.
Do: Create a study plan with AI (e.g., "Learn Python
in 5 hours").
Do: Understand the topics deeply to discuss them
confidently in an interview.
Do: Spend a block of your time using active recall
to write and rewrite code from memory generated by
AI.
Ask AI: "What do I need to memorize, and what do I need to know well about X, Y, Z?"
to help you study effectively.
Tell AI to organize the information into a table or create Cornell notes for you to study from.
Then ask AI: "Quiz me on X, Y, Z."
It's crucial to truly understand code,
especially in areas like algorithms and data structures,
rather than just copying it. Use AI to create self-quizzes
and personalized study plans to reinforce learning. Coders
need deep knowledge to explain concepts confidently in interviews.
Active recall and writing code from memory are great techniques to improve retention.
History of Top-Down Programming and Interviews
Inventor: Harlan Mills and Niklaus Wirth
Year: 1970
Relevance: Top-down programming helps interviewers
assess structured thinking by breaking complex problems into smaller parts.
Invented by Harlan Mills and Niklaus Wirth in 1970, top-down programming
breaks problems into smaller sub-problems. This method
is crucial in interviews, as it highlights problem-solving
and clear thinking.
Top-Down Programming
Start with the Big Picture: Define the overall problem or goal.
Break Down Into Smaller Sub-Problems: Divide the task into smaller, more manageable parts.
Work on High-Level Functions First: Create the main function that outlines the solution.
Develop Sub-Functions: Implement helper functions to support the main function.
Refine Each Function: Focus on implementing the details of each function.
Test Each Part and the Whole: Ensure all components work together seamlessly.
Top-down programming starts by defining the broad problem and then breaking it
into smaller tasks. This approach ensures that the overall structure is clear before
diving into specific implementations. Each function is developed and tested individually,
allowing for modular and organized code.
Q&A
Feel free to ask any questions!
Activity Options
Choose one of the following activities. To get started, break into small groups of two or more:
Activity 1: Learn Bubble Sort – New coders working alone
Activity 2: Learn Merge Sort – Hobby coders working alone
Activity 3: Learn RSA – Professional developers
Please form small groups of two or more and choose an activity:
- **Activity 1**: Bubble Sort – Best for new coders learning basic algorithms.
- **Activity 2**: Merge Sort – Great for hobby coders wanting a challenge.
- **Activity 3**: RSA – For professionals familiar with advanced concepts.
Focus on collaboration, communication, and top-down programming.
Ask questions if you need help.
Setup GitHub CodeSpace
https://github.com/codebar-shanghai/Tech_Interviews_Sorting_Algorithms_activities.git
Work in groups of 2 or more
Fork the Repository
Open the Forked Repository in CodeSpace:
By now, you should be in groups of two or more. In this session, you’ll practice pair programming and top-down design.
Each activity is structured to help you use industry-relevant terminology and collaborate effectively,
turning abstract algorithms into clear, concrete concepts.
We’ll now open the activities in CodeSpace on your computer for a hands-on experience.
Break (10 min)
Feel free to get up, take a break
Fun Facts:
The technologies used to build this presentation are...
Prettier Formatter to make code easy to read
Reveal.js for presentation slides
ChatGPT & HuggingFace.co/chat to speed up workflow
Graphviz for diagramming in Python
As we take a 10-minute break, feel free to get up,
stretch, and recharge. Enjoy your break, and we’ll
continue shortly!
Workshop (85 min)
In pairs, choose and code an algorithm such as Merge Sort or the RSA Algorithm.
Apply what you've learned from Pair Programming, and top-down programming. Focus on clear communication and collaboration as you work through the coding tasks together.
I want to emphasize the importance of communication during this exercise. Make sure both you and your partner understand each step and can clearly explain your thought process. The goal is not just to code, but to work effectively as a team and improve your collaboration skills.
Thank You!
Special thanks to our sponsors, everyone who contributed, and all participants!
I’d like to take a moment to express my heartfelt gratitude.
A huge thank you to our sponsors for their generosity and support,
to all the contributors for their hard work and dedication,
and to each participant for actively engaging and making this event a success.
Your participation and enthusiasm are what truly made this workshop special!