C/C++ basics: memory alignment, endianness, pointers, scope, usage and pitfalls of common containers in STL. . .
Data structure algorithms: various linked lists, trees, hash tables, addition, deletion, modification, sorting, reversal, various sequences. . .
Design patterns: Just be familiar with the commonly used ones, but you need to be clear about the differences and applicable scenarios of similar patterns
Multi-threaded programming: comparison between threads and processes, communication, synchronization, and comparison of various locks. . .
Public basic services: usage and comparison of various open source and closed source basic services and tools, such as Redis, MongoDB, Kafka, Thrift, Hadoop, MySQL, Oracle, Postgres, ICE, Protobuf, Nginx , Apache, LVS, Keepalived, HAProxy. . .
Various Linux tools: commonly used network tools, various troubleshooting, debug tools, and various security tools. . .
Various scripts: Shell, Python, Perl. . .
Architecture design: various high-availability, distributed, clustering solutions, tools, principles, various optimization solutions, various tracking solutions, automatic deployment and upgrades, and various security solutions. . .
We will be asked to write an HTML Parser on the computer, input an HTML file, and output a tag tree.
Then some candidates write things that cannot be compiled, some candidates write things that can only process standard XML, some candidates write things with built-in memory leaks, and some candidates ask us what a tree means. @_@
1) Compilation principles 2) Effective C++ 3) OS 4) Algorithms + data structures 5) For other scalable knowledge, you can check out CSAPP if conditions permit
It depends on the position. If it is a development position in a Linux environment, the shell will simply ask As a fresh graduate, the basics of algorithms, data structures, and operating systems should be good, and more importantly, the ability to self-study
First is the basic inspection: At the operating system level, knowledge about deadlocks and process threads Knowledge about file systems, architecture, storage and cache, etc. In short, the more solid the foundation, the more popular it is
You can read "Self-cultivation of Programmers". Dynamic linking and static linking are extremely important for C++ programmers This is internal strength
C/C++ basics: memory alignment, endianness, pointers, scope, usage and pitfalls of common containers in STL. . .
Data structure algorithms: various linked lists, trees, hash tables, addition, deletion, modification, sorting, reversal, various sequences. . .
Design patterns: Just be familiar with the commonly used ones, but you need to be clear about the differences and applicable scenarios of similar patterns
Network programming: TCP, UDP, HTTP(S), three-way handshake, four-way breakup, state transition diagram, protocol design. . .
Multi-threaded programming: comparison between threads and processes, communication, synchronization, and comparison of various locks. . .
Public basic services: usage and comparison of various open source and closed source basic services and tools, such as
Redis, MongoDB, Kafka, Thrift, Hadoop, MySQL, Oracle, Postgres, ICE, Protobuf, Nginx , Apache, LVS, Keepalived, HAProxy. . .
Various Linux tools: commonly used network tools, various troubleshooting, debug tools, and various security tools. . .
Various scripts: Shell, Python, Perl. . .
Architecture design: various high-availability, distributed, clustering solutions, tools, principles, various optimization solutions, various tracking solutions, automatic deployment and upgrades, and various security solutions. . .
C++ language basics (STL required, Boost extra points)
Basic Linux knowledge, you may ask about Shell, Vim, etc.
Computer network knowledge
etc.
We will be asked to write an HTML Parser on the computer, input an HTML file, and output a tag tree.
Then some candidates write things that cannot be compiled, some candidates write things that can only process standard XML, some candidates write things with built-in memory leaks, and some candidates ask us what a tree means. @_@
1) Compilation principles
2) Effective C++
3) OS
4) Algorithms + data structures
5) For other scalable knowledge, you can check out CSAPP if conditions permit
It depends on the position. If it is a development position in a Linux environment, the shell will simply ask
As a fresh graduate, the basics of algorithms, data structures, and operating systems should be good, and more importantly, the ability to self-study
First is the basic inspection:
At the operating system level, knowledge about deadlocks and process threads
Knowledge about file systems, architecture, storage and cache, etc.
In short, the more solid the foundation, the more popular it is
You can read "Self-cultivation of Programmers". Dynamic linking and static linking are extremely important for C++ programmers
This is internal strength