/autumn_recruitment_2024

记录自己2024秋招的过程

Apache License 2.0Apache-2.0

公司投递参考

简历

复习网站

算法

算法题解

刷知识点

C/C++ 八股文

前端

linux

github

gitee

项目

c++

linux

其他文章

秋招经验

参考链接

书籍

c

  • c 语言程序设计现代方法
  • c 专家编程
  • c 和 指针

c++

  • 深度探索 C++ 对象模型
  • 提高C++性能的编程技术

算法

  • 剑指offer

设计模式

  • 大话设计模式
  • 图解设计模式
  • 大规模 C++ 程序设计
  • C++ API 设计

编译

  • 程序员的自我修养:链接、装载与库
  • 老码识途:从机器码到框架的系统观逆向修炼之路
  • 汇编语言
  • C++反汇编与逆向分析技术揭秘
  • Linux 二进制分析

Linux

  • 《Linux 就是这个范儿》
  • 《鸟哥的 Linux 私房菜基础篇》
  • 《鸟哥的Linux私房菜服务器架设篇》
  • 《Linux 系统编程》
  • Linux 高性能服务器编程

mysql

  • 《高性能 MySQL》
  • 《MySQL 排错指南》
  • 《数据库索引设计与优化》

网络编程

  • C++ 服务器开发精髓
  • TCP/IP 网络编程
  • Linux 高性能服务器编程

网络

  • 《网络是怎样连接的》
  • 《图解HTTP》
  • 《图解TCP/IP》
  • 《计算机网络自顶向下》

代码风格与习惯

  • 代码整洁之道
  • 程序设计实践
  • 重构 改善既有代码的设计
  • Google C++编程风格指南

简写

LDD3 Linux Device Driver 3rd LKD3 Linux Kernel Development 3rd ULK3 Understanding the Linux Kernel 3rd PLKA Professional Linux Kernel Architecture UML User Mode Linux Intel V3 Intel? 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A, 3B & 3C): System Programming Guide

**

计算机**

  • 分层:抽象,分层通常是从上到下的,下面的层次为上层提供服务,这些服务是一些约定好的的接口规范
  • 加速大概率事件远比优化小概率事件更能提高性能
  • 通过并行性提高性能
  • 通过流水线提高性能
  • 通过预测提高性能:局部性原理
  • 局部性原理:局部性原理的意思是计算机处理器经常执行的指令和操作的数据通常会聚集在一个较小的连续区域。时间局部性,空间局部性,顺序局部性。
  • 缓存:存储器层次
  • 通过冗余提高可靠性
  • 提供机制,而不是策略: 机制是接口,策略是数据流,“机制” 回答的是 what,“策略” 回答的是 how。暴露给外部的是 what,具体的实现是 how。
  • 高内聚,低耦合
  • 递归和归约

编程算法**

枚举、递推、递归、分治、贪心、试探法、动态迭代和模拟

语言掌握

对一门语言的掌握程度可简单分为: 了解、熟悉、熟练、精通四个层次。

  • 了解。相当于在大学学过这门课程,做过一些小练习,但没完成过大作业的程度。
  • 熟悉。相当于独立完成过大作业,或参与过真实商业项目,累计有效代码量1万行以上。落到知识点上就是对c++的语法了然于胸并且都动手实践过。
  • 熟练。独立或带团队完成过真实商业项目,且自己为团队里的核心开发人员,熟悉完整的软件开发流程,累计有效代码量10万行以上,最好在github上有自己的开源项目。落到知识点上除了c++的语法了如指掌外,数据结构与算法、设计模式、软件工程等关联学科得到熟悉层次。
  • 精通。如果熟练层次的工程师一个月没能解决的技术难题你用一个小时解决了我就承认你精通。落到具体知识点上除了阅读过C++标准文档,理解各版本增减的特性及其背后的原理外,系统结构(如CPU指令集、cache局部性)、操作系统(如linux内核对互斥锁的实现)、编译原理、架构设计、平台工具(如gcc、ld)编译特性,这些可能影响到软件性能的领域到熟悉层次。

学习新知识有两个关键:快速上手、完整的知识体系

计算机科学的宏伟格局,理论、算法、应用,三位一体,缺一不可。

  • 计算理论研究各种计算模型、可计算性、计算的复杂性等计算的固有性质,是计算机基础理论研究的核心
  • 可计算性所回答的问题是什么是计算?以及哪些问题是可计算的、哪些问题是不可计算的?内容包含了丘奇-图灵论题、通用机、停机问题、归约、递归定理。
  • 程序理论研究的主要内容包括算法设计与分析,形式语言与自动机理论、形式语义学、程序逻辑、程序验证、以及程序设计自动化的理论基础。
  • 由于大多数求解最有解算法的困难性,研究各种启发式搜索算法,以及与之相适应的概率分析方法。从本质上说这是牺牲完全性来换取高效率。
  • 并行算法是并行处理技术的核心。现有两种不同类型的并行算法,分布式算法和紧藕合算法。并行计算机发展带来的基本问题是:那种问题适合于并行处理,即可以从并行中得到实质的好处,如何设计并行算法才能最大限度的得到这些好处。
  • 逻辑与代数是计算机基础理论的两大基础: 器证明、模型论、各种非经典逻辑和范畴论