Base Power Interview

385196 - Device Software Engineering

Base Power Inc - Divisional Office

Role Description:
As a Device Software Engineering Intern at Base Power, you’ll be an integral part of our device team, working on cutting-edge software solutions for our advanced battery systems. This role offers a unique opportunity to gain hands-on experience in hardware control via software, contribute to the management of a distributed fleet, and help optimize and scale our clean energy platform. This internship is ideal for students or recent graduates with a passion for the intersection of hardware and software, distributed systems, automation, and sustainable energy technology.

Key Responsibilities:

  • Contribute to the development and maintenance of on-device software for our distributed fleet of battery systems.
  • Implement and optimize hardware control and telemetry collection processes using Golang.
  • Participate in code reviews, testing, and deployment activities to ensure high-quality, reliable software.
  • Collaborate with senior engineers to diagnose issues and enhance the performance of local and remote devices.

Preferred/Required Skills:

  • Background in programming within a Linux environment and utilizing Docker containers.
  • Familiarity with fleet management principles and tools.
  • Strong understanding of Object-Oriented Programming (OOP).
  • Basic knowledge of electrical engineering principles.
  • Experience with Modbus, CAN, or other communication protocols.

Prep

  • What do you know about Base Power
  • Telemetry?
  • CAN/Modbus communication protocols
  • OOP probably (should be straightforward)
  • Ask about the startup (just things that i’m curious about)

What I’m Looking For

  • I really like working with large-scale backend systems since there’s a large amount of impact available for people to create
  • I want to work in a hard-working culture that is laser-focused on creating a useful product for the world and iterates quickly, high growth companies that are laser focused on creating useful products in the world
  • My next 2 co-ops should be focused on companies that I would join for full-time, as I want to get return offers. (want to try a startup for sure)
  • join a fast-growing company that will push your engineering knowledge.
  • distributed systems?

In hindsight Fall 2024

Thoughts on the interviews:

  • Had a very nice talk with robert in the first round
    • Asked me about drivers, how I would go on about debugging drivers. So I told him what I would do.
    • Asked me about telemtry, CAN, CANdb, Modbus, what kind of experience I had with it, explain what they are.
    • Asked me about a problem they were having and how I would go about solving it. Need to know on how modem works, because issue had to deal with it. I forgot what the exact issue was.
      • I mentioned how I would debug, how to check the logs, power supply, explained how the modem manager works and how to look for network manager issues
    • Follow up to the question: If it’s a driver problem and that the driver problem persist, how would I go about changing the driver, replace it.
      • I explained how I would do it, how to replace a driver, etc.
  • personally I’m interested in their product
  • I want to understand how they make money:
    • Why not use just generators and why us base instead??
    • how is it cheaper?
    • how do they buy from the grid and how they sell it?
    • HOW??
    • there are some really cool interviews with their CEO on this
  • second round: had the pleasure to speak with justin. should’ve done better. i don’t know why i got a bit stuck on like fairly easy questions in my opinion. i had to rely on some hints. i need to adapt faster and practice more. i kinda got busy with school…
    • really liked the question they asked. Not leetcode but it had to do with optimizing a code base, writing functions, constructors, improving the code to make it OOP, etc.
      • i personally don’t like how companies ask some leetcode questions in their interviews about random algorithms that i’ve never personally seen used in company codebases…
      • base power asked a question that we will most likely face on a daily basis. it made solving the problem fun. (stuff like refactoring, improving codebase, leveraging OOP methods, etc.)
    • example: i had to use the Factory method which is a creational design pattern that solves the problem of creating product objects without specifying their concrete classes Factory Method
    • was able to do it in java (code base was given in java), although i prefer c++
  • talked with their current interns: feedback overall positive
  • had an offer with another company but went with base after all
    • wanted to work at a smaller company just to try it out
    • leave canada and try living somewhere else
    • distributed systems battery
    • learn about battery
    • talented people

Why they chose golang: (I also asked during the interview)

Update: 12-17-2024, reneged their offer

Update 01-28-2025: spoke with someone who recently interviewed with them, they asked a graph question Leetcode medium. Closest example would be 399. Evaluate Division