Software Engineer, Distributed Systems
Santa Clara Valley (Cupertino), California, United States
Software and Services
Imagine what you could do here. At Apple, new ideas have a way of becoming extraordinary products very quickly. Bring passion and dedication to your job and there's no telling what we can accomplish together. Do you love crafting elegant solutions to highly complex challenges? Can you intrinsically see the importance of every detail? At Apple, our Platform Architecture group is responsible for connecting our hardware and software into one unified system. Join this team, and you'll collaborate with engineers across Apple to build and deploy forward-looking prototype systems that contribute to the development of our world renowned hardware and software architecture. You and your team will confirm that every product we make performs exactly as intended. Together, our work will be the reason millions of customers feel that they can trust our devices every single day. The Software Engineer within the Platform Architecture distributed systems team will be responsible for designing and implementing software for a variety of scalable, reliable, and secure distributed computing systems for Apple’s internal engineering teams.
- Strong understanding of concurrency, parallelism, and distributed systems concepts
- Deep knowledge of concurrency control, data structures, algorithms, distributed system architectures, and networking
- Experience with measuring, analyzing, and optimizing performance
- Familiarity with all aspects of software development from architecture to deployment and maintenance
- Experience developing a large-scale production system
- Fluency in Go (Golang), C/C++, Python, shell scripting
- Familiarity with distributed storage systems (HDFS, Amazon S3) a plus
- Familiarity with Machine Learning and GPU compute workloads a plus
- Familiarity with Kubernetes a plus
Design, implement, and debug core server components of an internal batch compute service including API development and core scheduler behavior Research and implement key technologies, architectures, and standards Work with other engineering teams to ensure that services meet scalability, availability, security, and performance goals
Education & Experience
BS degree in Computer Science or equivalent, MS or Ph.D. a plus.