Role Attributes
- Involvement in discussion of product demands, including but not limited to composing volatile & persistent storage design, end-to-end API/protocol design and UX drafts. We value the patience to achieve consensus with colleagues of different expertise.
- Involvement in the backend service development of games and social apps, including but not limited to account/payment system of multiple roles, high-framerate state synchronization, statistical utilities and automated testing of some critical cases.
Key Competencies & Requirement
The growth of number of programming languages, automated testing tools and devops tools makes it impossible for us to name everything we need for this role exhaustively. Though a few tools will be emphasized in this section, we hope all candidates understand that "soft skills" such as communication and scientific methodology are most critical here -- especially when you need help in learning new skills and reporting a development conundrum.
We expect you to be extremely interested in developing high-framerate synchronizing games, e.g. a multiplayer shooting arena with 25fps(or above) server- >client "downsync" rate.
Please highlight in your resume or make a focus in interview presentation if any of your experience will tell us about
- how you model the performance of your codes, e.g. profiling and your interpretation of it,
- how you select the tuning knobs for comparison of different approaches/algorithmes/solutions
or alike. Experience in Quake engine or Source engine will be a plus.
Here are a few key competencies we find useful for the role.
- Familiarity with a specific programming language, regarding its syntax, garbage collection mechanism, remote debugging, performance profiling and some other compile-time/runtime characteristics. We use Golang for most backend service development.
- Familiarity with RFC1122 (https://tools.ietf.org/html/rfc1122, the 5-layer-model) or OSI 7-layer-model, especially the likes and differences between TCP and UDP, how one can be preferred over the other in certain use cases.
- Familiarity with Linux concepts and simple devops tools, such as logging utilities, process/kernel-thread inspection tools e.g. "ps", "top", "sar", "pidstat", "prlimit", and network inspection/tuning tools e.g. "ifconfig", "tcpdump/tshark", "netstat", "tc", "iptables", "ip", "route".
- Familiarity with a specific virtual-hosting/reverse-proxy tool such as "nginx", "haproxy", "apache". We're using mostly "nginx".
- Familiiarity with 2 or more persistent storage engines, e.g. innodb for RDBMS(SQL) and/or one of the KV/Column/Document/Graph type databases(NOSQL).
- Familiarity with distributed system concepts, such as "full ACID across shards" and "session-persistent (in terms of load-balancing)".
- Familiarity with automated testing, including but not limited to unit testing and integration testing. Experience with rigorous edge cases design will be a plus.
- Experience in programming contests such as ICPC or the events held by Topcoders, CodeForces or Hackerrank. We don't have a hard requirement for this but you're suggested to practice in https://leetcode.com/problemset/algorithms/ or similar sites for a review of fundamental data structures and algorithms.
Job Type: Full-time
Salary: 12,000.0元 to 20,000.0元 /month
Education:
- Bachelor's (Required)
Get email alerts for the latest"Software Engineer (Backend) jobs in Shenzhen"
