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++
- 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.
- 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