Profile picture

Data Structures And Algorithms Q&A and Videos

About Data Structures And Algorithms

How to navigate career after layoffs

Mid-Level Software Engineer at Taro Community profile pic
Mid-Level Software Engineer at Taro Community

I recently got laid off working as a developer working within an agency. I currently have around 5 years of experience working in the agency setting utilizing React, Next js, Vue, Liquid, and the Shopify API to create custom eCommerce sites. During my time at these agencies, I also had the opportunity to act as a lead, interact with clients, set timelines, and cross collaborate with designers/projects managers to meet deadlines.

I have been looking for new opportunities since January and I've been able to secure a couple of interviews, technical challenges, and one onsite. Most of my interviews have been coming from agencies, but my preference is to join a tech startup or maybe more on the brand side of things within the Shopify niche. Below are a couple of questions:

  1. Will working at another agency hurt my career in the long run? My ultimate end goal is to work for a bigger tech company if possible.
  2. If an agency does want to hire me right now, should I take the job for now or just wait for one of my preferences?
  3. I notice a lot of developers within the agency space freelance after their 9-5. Does studying for interviews or future jobs provide a higher ROI instead of freelancing?
  4. Lastly, I just finished (super helpful!). It seems like the best course of action for me is to apply a lot, work on side projects instead of grinding leetcode, and study system design. Does this seem correct?

Thanks in advance!

Show more
Posted a year ago
380 Views
3 Comments

Should I tell my interviewer I've seen a question? Also, should I study Glassdoor/Leetcode Premium questions for a company?

Data Engineer at Financial Company profile pic
Data Engineer at Financial Company

Have my first interview coming up with a big tech company and want to do some leetcode-prep to get my problem-solving muscles warm before the interview. I've gone on Glassdoor and seen some of the questions people have posted that theyā€™ve gotten from the company in the past year. Should I practice these questions? The obvious answer would be ā€œyes, youā€™d be crazy not to!ā€, but I can think of 3 reasons not to:

  1. if I am asked if I have seen the question before, many people advocate answering truthfully, in which case, I kind of negate the advantage of studying-company specific questions. There are actually 2 reasons people have for telling the interviewer you've seen a question. One, because they want to know. This is the principle-based reason. Two, because they can tell if you're pretending not to have seen it. This is the pragmatic reason for disclosing that you've seen the question.

  2. thereā€™s an argument to be made against studying for any one-specific company and instead beefing up my DS&A skills in general ā€“ this would argue for studying questions that are the most common across all (big tech) interviews, not specific to the one Iā€™m interviewing with.

  3. This company is very big, and Glassdoor combines questions from multiple teams and departments. The chance that I'll see a question from the team I'm interviewing with is small.

Thanks!

Show more
Posted 2 years ago
362 Views
2 Comments

Does coding language matter in interviews?

Mid-Level Software Engineer at Twitch profile pic
Mid-Level Software Engineer at Twitch

Just curious about opinions here. My main language is JavaScript, and I know people probably assume I am a front-end developer / full-stack (reasonable biases). In reality, I've been primarily backend for several years now. Throughout my experience at Microsoft and Twitch, I've used a fair amount of Node.JS / vanilla JS, then a bit more TypeScript for the CDK constructs we all know at Twitch (our team was primarily responsible for building and debugging Amazon Builder Tools things). I've done the majority of my interviews in JavaScript and it has been mostly OK, since I've used it for so long, but just wondering if it matters.

I used to do my interviews in C++, but then I got burned during a Google interview when my interviewer talked about the inefficiencies of emplace_back vs push_back (I had no idea). After that point, I just decided to do JS because I was reasonably proficient at it, and it is actually faster to write than C++ in a lot of cases (less boilerplate).

The top LeetCode answers / YouTube explanations and such are usually in Java or Python, so sometimes it's also hard to find a good JS answer. I'm leaning towards Python, because it is more like JS and with less boiler-plate like Java, but I'm worried about something throwing out some random trivia about Python that I have no idea about, because honestly I haven't used it much in my career thus far.

Show more
Posted 2 years ago
197 Views
3 Comments

Discussing Projects in Interviews

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

Iā€™m a Data Engineer at a slow-moving finance company whoā€™s looking for my next job in Big Tech. I just had a recruiter from Stripe reach out about scheduling an interview, which happened because I had a buddy who works at stripe refer me to the role. The position is for backend engineer.

The recruiter says the call will be 20 minutes and I should come prepared with ā€œthe most technically complex projectā€ Iā€™ve worked on, and talk about my role, duration, number of engineers, and stakeholders.

Iā€™m nervous about this because my current role is something of a hybrid between data engineer and data analyst and I do a fair bit of data-analyst type work. Itā€™s not that I donā€™t have projects I can talk about, itā€™s just that Iā€™m insecure about them and I feel like they are unimpressive to a ā€˜realā€™ software engineer and this becomes apparent under sustained scrutiny. So maybe I can get by the 20 minute intro call, but there will surely be an hour-long session later where they want to go into excruciating detail. I do have some experience with backend as well, but itā€™s already almost 3 years ago now.

My question is this: how can I go about improving my situation? Iā€™m applying for entry-level roles (IC1) and was under the naĆÆve assumption that I just had to get very good at DSA/Leetcode. Obviously, this is not the case.

In order to better handle these project walkthroughs going forward, I see a number of potential approaches, which are not necessarily mutually exclusive:

  1. Get better at discussing projects in my current toolkit. Ditch the imposter syndrome and spend more time thinking about what I already have.
  2. Invest more in my current job to create better projects with ā€˜scopeā€™ that are more impressive in interview rounds. Right now, Iā€™m not very committed to my work and coast, doing whatever is assigned to me but in a minimalist way. My current manager has told me how he wants me to be more active in getting things done and taking on a larger role, but as a Tier-3 company, there is no expectation or requirement for me to do so (i.e. very low chance of me being let go), and furthermore, I tell myself I will be leaving soon, so why take on more responsibility? This might ironically contribute to it being harder for me to move since I donā€™t do the kinds of things that make it easier to interview.
  3. Do side-projects outside of work that I can discuss. But here I run into the issue that Iā€™m not working with anyone (unless itā€™s open source) and this is probably not the best approach unless my side-project is really good with users. Iā€™ve heard Alex and Rahul say this a number of times.

Happy to hear anyoneā€™s thoughts about how I can improve my situation. I probably have the wrong attitude towards my current role, as Iā€™ve been wanting to leave it for over a year. Iā€™ve thought about quitting a lot so I can have more time for interviewing, side-projects, networking, learning, and prep, but everyone says thatā€™s a bad idea (especially in the current climate), so itā€™s easier to just muddle on in my current role.

Thoughts are welcome!

Show more
Posted 2 years ago
186 Views
1 Comment

How do I prep for Frontend job interviews? Do I apply for Fullstack?

Mid-Level Software Engineer at Mastercard profile pic
Mid-Level Software Engineer at Mastercard

Hello!

So, my job's getting outsourced this summer, and I'm deep into figuring out my game plan for interviews. I'm mostly a frontend engineer, working with Angular, SCSS, and ngRX for our app. I've dabbled in backend too, even went full-stack in my team, but my backend skills aren't great. My manager supports me marketing myself as a full stack person, but I'm wondering if going all-in on full stack jobs is worth the effort during the interview prep, especially since I'm not a big fan of backend work.

Then I wonder if the downside of applying for frontend jobs is that there are not that many and the barrier for frontend is lower (maybe because of coding bootcamps and it can be self-learned) so competition will be higher.

Now, I'm drowning in prep work - data structures, algorithms, frontend know-how, and system design. Recently got hit with a surprise system design coding round in an interview (an internal position I arrogantly thought I had in the bag) I thought was all about frontend and DSA. Did okay, but not stellar, and now I'm feeling unprepared for every interview. I feel crippled to even apply to positions. It's a bit of a mess.

So questions:

  1. Any tips on tackling system design questions, especially the coding part? Most online resources seem to focus more on design rather than coding specifics.
  2. How should I balance DSA, system design, frontend prep? What topics and how much time should I commit to each of them?
  3. Also, am I on the right track leaning towards applying for just frontend roles?

Appreciate any & all feedback!!

Show more
Posted a year ago
143 Views
2 Comments

Learn About Data Structures And Algorithms

Data structures and algorithms (DSA) are fundamental concepts in computer science and software engineering. These concepts are essential for solving complex problems and are often used in technical interviews at big tech companies like Google, Meta, and Amazon.
Data structures are a way of organizing and storing data so that operations can be performed efficiently. Common data structures include arrays, linked lists, stacks, queues, trees, and graphs. Understanding data structures is crucial for designing efficient algorithms and optimizing the use of memory and compute.
Algorithms are procedures or formulas for solving problems or performing tasks. Algorithms are used to manipulate data stored in data structures, and they are essential for tasks like searching, sorting, and graph traversal. The efficiency of algorithms is measured in terms of time and space complexity, which determines how quickly an algorithm runs and how much memory it uses.
Data structures and algorithms are closely related because the choice of data structure can significantly impact the performance of an algorithm. Choosing an appropriate data structure is crucial for optimizing the efficiency of an algorithm. Itā€™s also true that choosing the right algorithm can maximize the data structure that gets used.
Doing well in data structures and algorithms problems means you have developed the critical thinking skills required to solve technical challenges as a software engineer. As a software engineer, you encounter many challenges, and the ability to choose and implement the right data structure and algorithm is fundamental to coming up with efficient and scalable solutions.
Many companies assess their candidates based on their ability to solve algorithmic based problems during an interview. Learning how to solve these problems effectively can be the difference between getting hired and not getting hired. Make sure you work on coding exercises that let you apply your data structures and algorithms knowledge before you go into your technical interview, so you can be prepared to answer any technical question during your interview.
In summary, data structures and algorithms form the backbone of computer science and software engineering, enabling engineers to develop efficient solutions to complex problems, and they play a critical role in technical interviews for top companies.
Show more