程序员基本功

哪些是基本功呢?我觉得包括:

  • 数据结构和算法:链表、队列、栈、堆、树(RBT, B/B+)、跳表、哈希、图;查找(二分、bst)、排序(冒泡、插入、快排、归并、堆排、希尔)、递归、归并、回溯、贪心、分治、动态规划、分支界定、bfs、dfs、dijkstra等。

  • 编程基础和概念:oop、gp、函数式编程、并发、并行、分布式、进程、线程、协程、阻塞、非阻塞、同步、异步、线程安全、锁、睡眠锁、自旋锁、读写锁、锁的粒度、无锁编程、条件变量、原子操作、信号量、轮询、事件驱动、消息机制、rpc、cas、cow、shm、RAII。

  • 设计:23种设计模式、高内聚低耦合、SOLID原则、单一、开闭、里氏替换、接口隔离、依赖倒置、控制反转、迪米特法则、不跟陌生人说话、对象关系(依赖、包含、聚合、组合、泛化)等。

  • 系统命令和工具:Linux命令,特别是跟性能相关的,top、ps、netstat、strace、ltrace、iotop、iostat、vmstat、lsof、tcpdump、free、sar、iptraf、pidstat、perf、gcc、gdb、nm、readelf、strip、taskset、cgroup等各种选项和骚操作。

  • 性能优化相关:perf、gperf、产生可视图的gprof2dot.py+graphviz、以及valgrind、tcmalloc等各种手段优化内存、io、cpu。

  • 系统:sys/usr model、virtual memroy、interrupt、exception、signal、page fault、cache miss、branch prediction、context swap等等等等等概念。

摘取自我是如何成功伪装架构师的?

猜你喜欢

转载自blog.csdn.net/shepherd_dirk/article/details/85328765
今日推荐