Zoox
OA
Math & Logic
13 Apr 2018
Q1: Cal Perimeter of hexagon... given area
Divide the aread into 6 equal pieces... each are equaliteral, find x, then perimeter
Q2: expected number of days of black friday a year
probability a day is Friday.. 1/7
a year has 12 13th day,
so 13 * 1/7
Q3: estimate the earth moon dist:
suppose you know the moon diameter... 1) use an object to block your sight...
2) the diameter of the obj and diameter of the mon, and height1, height2 form similar triangle
https://www.khanacademy.org/partner-content/nasa/measuringuniverse
Q4: tic tac toe you have 8 ways to win
for a 3d tick tac toe, how many ways to win??
Q5: there is a boat and a lake... a stone was on the boat, when you throw it to the lake... will water level rise or drop...?
Suppose stone density is higher than water... when it is on the boat, the gravity force on it cause it to raise up more water level...
but when it is throw to the lake, it just occupy the vol amount of water which is less...
Q6: throw 6side and 8 side dices, pro of getting 3
You get a number 3, what is the probability that the throw was 6 side dice?
(1/2*1/6) / (probability of getting a 3)
Q7:
System Design
19 Apr 2018
Some Java and Programming Language Basics:
- Static typing and Dynamic typing (ML, type inference)... what's Java then? what are the pros and cons
- What's compiled language and what's interpreted language? Diff and benefits
- Java pass by value of pass by reference? pass value of ref to objects, except primitive types
- Metioned JVM bytecode, so he asked what is bytecode...
- How JVM does memory management? Garbage collection
- Give one way of how garbage collection works: ref counting or heapify...
- 题目是设计一个图像处理的pipeline, 当然不是写图像处理的函数。假设有一个文件,文件里面都是一些描述图像处理的操作的字符串,如convertgrayImage什么, resize 大小,blur 多少, blendwith 另外的图像, 那么如何来优化这个pipeline, 当然包括一些额外的图像处理操作,假设我们有个图像处理的库,里面有些函数,但是还有些功能没有,未来要扩展,所以文件中的操作有可能目前没有的操作,那么如何处理。 题目信息就这么多了
Input: a text file with command and params
convertToGrayScale
resize 3 4
blur 3
blendWith https://abc.com
Using pipeline pattern to add ImageHandlers:
public interface ImageHandler {
void process(Image img);
ImageHandler getInstance(String[] args);
}
public class ImagePipeline {
private List<ImageHandler> handlers;
public ImagePipeline() {
this.handlers = new ArrayList<ImageHandler>();
}
public ImagePipeline(ImagePipeline other) {
this.handlers = new ArrayList<ImageHandler>();
this.handlers.addAll(other.handlers);
}
public ImagePipeline addHandler(ImageHandler handler) {
this.handlers.add(handler);
return this;
}
public ImagePipeline addHandler(ImagePipeline pipeline) {
this.handlers.addAll(pipeline.handlers);
return this;
}
public Image transform(Image inputImg) {
for (ImageHandler handler : handlers)
{
handler.process(inputImg);
}
return inputImg;
}
}
Using interface and factory approach to create an instance of handler upon text command. It has to leverage hashmap of cmd string to class obj.
public class PipelineDriver {
public static void main(String[] args) {
BufferedImage buffered;
Image image;
Image transformedImage;
image = null;
String[] cmds = {"convertToGrayScale", "resize 40 50", "Blur 3"};
Map<String, ImageHandler> cmdMap = new HashMap<>();
cmdMap.put("convertToGrayScale", new ConvertColorHandler());
cmdMap.put("resize", new SizingHandler());
cmdMap.put("Blur", new BlurHandler());
ImagePipeline pipeline = createPipeline(cmds, cmdMap);
pipeline.transform(image);
}
public static ImagePipeline createPipeline(String[] cmds, Map<String, ImageHandler> cmdMap) {
ImagePipeline pipeline = new ImagePipeline();
for(String cmd: cmds) {
String[] args = cmd.split(" ");
ImageHandler handlerType = cmdMap.get(args[0]);
pipeline.addHandler(handlerType.getInstance(args));
}
return pipeline;
}
}
Manager Interview
Apr 24, 2018
Preparation:
Why Zoox?
Create autonomous mobility; explore the universe
Tim Kentley-Klay Co-Founder and CEO; The founder and CEO is a designer and creative entrepreneur from Melbourne.
Zoox is a robotics company pioneering autonomous mobility as-a-service.
assume self-driving abilities from the get-go, no steering wheel; add Uber-like service for requesting rides and managing a fleet of cars; dense urban dynamic driving
"We actually see ourselves as a robotics company, not an automotive company. And I think when you look at mobility through that lens, you start thinking differently."
ROS
Robot Operating System (ROS) is robotics middleware (i.e. collection of software frameworks for robot software development). Although ROS is not an operating system, it provides services designed for heterogeneous computer cluster such as hardware abstraction, low-level device control, implementation of commonly used functionality, message-passing between processes, and package management. Running sets of ROS-based processes are represented in a graph architecture where processing takes place in nodes that may receive, post and multiplex sensor, control, state, planning, actuator and other messages. Despite the importance of reactivity and low latency in robot control, ROS, itself, is not a real-time OS (RTOS), though it is possible to integrate ROS with real-time code.[2] The lack of support for real-time systems is being addressed in the creation of ROS 2.0.[3]Robot Operating System (ROS) is robotics middleware (i.e. collection of software frameworks for robot software development). Although ROS is not an operating system, it provides services designed for heterogeneous computer cluster such as hardware abstraction, low-level device control, implementation of commonly used functionality, message-passing between processes, and package management. Running sets of ROS-based processes are represented in a graph architecture where processing takes place in nodes that may receive, post and multiplex sensor, control, state, planning, actuator and other messages. Despite the importance of reactivity and low latency in robot control, ROS, itself, is not a real-time OS (RTOS), though it is possible to integrate ROS with real-time code.[2] The lack of support for real-time systems is being addressed in the creation of ROS 2.0.[3]
Some basic C/C++ question (refer to below)
如指针引用区别,虚函数,virtual memory, cpu caching, 等等
Large scale compute: Hadoop
Experience handling large data set
AWS, S3, EC2
Familiarity with networking, TCP/IP, and sockets programming
What you'll need
- Currently working towards a BS, MS, Ph.D. or advanced degree in a relevant engineering program
- Experience in systems software or algorithms
- You must be self-managed and committed to working in a fast-paced environment
- Professional and positive communication skills
- Ability to relocate to the Bay Area, California
Bonus points
- Proficiency with C/C++
- Publications in your field
- Experience with autonomous robots
- Experience with realtime sensor fusion (e.g. IMU, lidar, camera, odometry, radar)
- Knowledge of computer vision techniques and machine learning
- Solid understanding of ROS
Questions to ask: (Ethan Dreyfuss)
We'd like to put you on the phone with someone from the Infrastructure team so you can get a better idea of the role and expectations for the intern this summer. You can also use this opportunity to ask any more detailed and technical questions you have about Zoox, or the role.
Why zoox?
- excited by what the company is doing
- growing start-up, ample challenging opportunities which I can learn a lot
Challenging project:
Parallel BF & QF in multicore systems using openMP. parallel programing is inheriently hard and ...
But kind of excited when you see the speed up, impossible -> possible
What are the focus/main responsibilities of your team? Or, could you tell me more about the day-to-day responsibilities of this internship? (if he didn't introduce his team)
What are some of the technology stacks in the Software Infrastructure Engineering area?
What's the development methodology for Software Infrastructure Engineering? Is there any difference than traditional software development?
How’s the team structure? I mean what are some of the teams in Software Infrastructure Engineering and what are they responsible for?
What are your expectations for the intern during the first month, mid of internship and at the end of internship?
What do you think the company is heading to in the next 5 years? (target to launch the automous mobility service in 2020) Does the company has any idea/plan about connected vehicles (Internet of Things)? For both fleet management and individual drivers, IoT can revolutionize the way vehicles function, making for a safer driving experience. Private cloud platform or using Amazon?
What are the biggest challenges facing the company / software infrastructure in the company now?
- What do you like best about working for Zoox?
- What are some of the important skills that you learnt from working at Zoox? Or, what are some of the skills / important qualities to succeed in working environment in Zoox?
- How does the team train up new recruits to full speed?
- What are some of the skills/areas that I could prepare before the internship start?
Ring Buffer
Can bus 的interface
Q2: 设计一个 Can bus 的interface, 如果sensor 爆炸了怎么办呀,以后要升级成其他interface 怎么办,
ECU? and its real time usage
题目是设计一个图像处理的pipeline, 当然不是写图像处理的函数。假设有一个文件,文件里面都是一些描述图像处理的操作的字符串,如convertgrayImage什么, resize 大小,blur 多少, blendwith 另外的图像, 那么如何来优化这个pipeline, 当然包括一些额外的图像处理操作,假设我们有个图像处理的库,里面有些函数,但是还有些功能没有,未来要扩展,所以文件中的操作有可能目前没有的操作,那么如何处理。 题目信息就这么多了
linear pipeline vs non-linear pipeline
说的是设计图像处理的pipeline,但是不让你写具体的图像处理函数,只是从软件设计的角度来考虑,封装,继承啥的,和以后的扩展
- 国人学长 纸上写了四道题 具体记不清了 基本都是原题 都问了multithreading的扩展
前二十分钟聞C++和archetecture的知识,如指针引用区别,虚函数,virtual memory, cpu caching, 等