Preparation of Interview
Contents
Self Introduction
My name is Guangqing Chen. I’m now a student in South China Normal University Computer Science Institute.
During my three years’ study, I participated in several ACM regional contests nationwide and won the gold medal last year. It’s one of the highest algorithm competition around the world. So I’m confident in algorithm and data structures.
I’ve read many famous and classical textbook in English and put them into practice. For example, after reading the Computer System: A programmer Perspective, abbreviated as CSAPP, I implements a Web Server with the support of Load Balancing and Reverse Proxy. Although they are toys actually, they do deepened my understanding of knowledge and practiced my programming skills.
I spend much time on solid my basics. But I’m also very interested in the latest technology. For example, two years ago, after I just learned JavaScript, I build a lunar calendar base on Electron, Node.js, React and Material Design, which all the latest technology about JavaScript at that time. And I finished this project in a few days. Last year, when I need to write the official website of ACM in my school, I choose Meteor, a complete platform for building web and mobile apps in pure JavaScript, because of its fascinating new feature.
Above all, because of my solid basics and fast learning ability, I believe I’m suitable for the software engineer position in your company.
Projects
Implements a Language
A toy language played by myself.
Lexer: simply use
if statements.
Parser: Recursive Descent Parsing and Operator-Precedence Parsing
Recursive build LLVM’s IR.
JIT: LLVM ORC API
FAQ
Q: What problems have you encountered? And how did you solve the problems?
A: JIT. CompileOnDemandLayer->IRTransformLayer(OptimizeLayer)->IRCompileLayer->RTDyldObjectLinkingLayer
Implements a Web Server
A toy web server that supports the HTTP protocol.
It’s base on the tinyhttpd. I fixed a problem about multithreaded memory leaks in linux.
And I also added Reverse Proxy and Load Balancing Support.
FAQ
Q: What problems have you encountered? And how did you solve the problems?
A: The Reverse Proxy and Load Balancing. If the server runs with specific arguments, then this server will be the proxy server, and it will proxy requests from the outside to other servers inside with simple round-robin method. To the outside clients, the proxy server is a server, while to the inside servers, the proxy server is a client. When it is a client, it can read the response with
while (read()) {} because the server will close the connection after sending the response which will send a EOF to the client. When it is a server, it can not read the request with
while (read()) {} because the client won’t close the connection after it sending the request. Therefore the server should stop reading the request according to the content-length of HTTP.
A official website of ACM
The official website of the ACM contest in my school.
The Contest Information Pages are pure static pages, written with HTML, JavaScript and Bootstrap.
The Contest Sign up Pages are dynamic pages of course, base on the Meteor platform.
FAQ
Q: What is Meteor?
A: It’s a full-stack framework base on the Node.js. It has some cool features. For example, Database Everywhere and Full Stack Reactivity. It means you can use the same transparent API to access your database from the client or the server. We don’t need to write any code to connect the server-side database to our front-end code — it just happened automatically. Once the client updates data, the UI will update immediately, and if the update is rejected by the server, it will rollback.
Q: What problems have you encountered? And how did you solve the problems?
A: The deployment of Geetest, one kind of captcha. Because at that time, there is no tutorial about how to deploy Geetest on meteor. Fortunately, meteor is base on the Node.js, I can reference the materials about how to deploy Geetest on Express. Firstly, wrote a React Component of Geetest base on the official web side API. Then, wrote the register and validate API ,which are Promise Objects, on server side base on the official Node.js SDK.