5.面经-阿里巴巴

阿里的面试比较全面,也就被我放到最后的面经来写了。然而阿里JAVA的面经,我就不写了,太多了,几乎每个跟JAVA相关的点都会给问到,此次我就总结一下其它的可能被问的知识点吧。本文的知识点基本在博客都有对应的文章讲述,则在此不再给出详细的答案了。

 

第一部分:计算机基础

互联网大厂都相当重视程序员的基本功,也就是计算机基础知识。一个程序员能走多远、爬多高,很大程度上取决于基本功是否扎实。对于应届生而言,大都比较缺乏实战项目经验,虽然会有一定的项目经验,但这些课程设计、实验室项目的质量与公司实际的项目有着巨大的差距。因此,基础知识便成为面试考量的一大重点,而且基础扎实的程序员可塑性比较高,做什么都能比较容易快速上手。

计算机基础包含如下几门课程,相信计算机专业的同学肯定都已经学过。但互联网公司面试的考点可能和你们期末考试的考点有一些不同,我都做了整理。

1. 计算机网络

大学课程中的计算机网络一般都按照OSI七层参考模型介绍,然而由于互联网公司的特性,他们更加关注日常开发所涉及到的传输层和应用层,所以需要重点掌握传输层和应用层中所涉及到的所有知识点。

【考点】

·        传输层的作用

·        传输层和网络层的区别

·        UDP协议的特点

·        UDP协议的报文结构

·        TCP协议的特点

·        TCP协议的报文结构

·        TCP三次握手过程

·        TCP四次挥手过程

·        TCP可靠传输是如何实现的

·        停止等待协议

·        滑动窗口协议

·        TCP的流量控制

·        TCP拥塞控制

·        HTTP协议

o   HTTP工作流程

o   HTTP请求格式

o   HTTP 1.1中的8种请求方式

o   HTTP响应格式

o   HTTP中重要的请求头和响应头字段

o   HTTP常用状态码及其含义

·        HTTPS协议

o   HTTPS协议与HTTP协议的区别

o   HTTPS协议的工作流程

【资料整理】

·        计算机网络传输层知识点全覆盖-大闲人柴毛毛的博客

·        HTTP详解(1)-工作原理

·        HTTP详解(2)-请求、响应、缓存

·        HTTP详解(3)-http1.0 http1.1区别

·        图解 HTTPS 通信过程

2. 数据库

【考点】

·        什么是索引?

·        索引的分类

·        索引的优缺点分析

·        何时需要使用索引?何时无需使用索引?

·        什么是事务?

·        事务的四大特性

·        数据库三大范式

·        数据库有哪些表连接?

【资料整理】

·        数据库索引全面解析

·        数据库事务详解

·        数据库三大范式

·        常见面试题整理--数据库篇(每位开发者必备)

3. 操作系统

【考点】

·        操作系统的四个特性。

·        操作系统的主要功能。

·        进程的有哪几种状态,状态转换图,及导致转换的事件。

·        进程通信的几种方式。

·        用户态和核心态的区别。

·        进程调度算法。

·        内存连续分配方式采用的几种算法及各自优劣。

·        基本分页储存管理方式。

·        基本分段储存管理方式。

·        连续分配分段分页方式的比较各自优缺点。

·        几种页面置换算法

·        虚拟内存的定义及实现方式。

【资料整理】

·        操作系统面试重难点总结

·        常见面试题整理--操作系统篇(每位开发者必备)

4. 数据结构

熟练掌握数据结构是程序员最最最基本的素养,在实际开发中选择合适的数据结构将极大影响程序的效率。面试官一般并不会直接问数据结构的问题,而是通过出一些包含数据结构的算法题来考察你对数据结构的理解程度以及在实际项目中是否能够灵活应用。你可以通过刷算法题来提升这部分能力,推荐《剑指offer》和《程序员面试金典》(注意是金典!)。很多公司的算法题库都选自这两本书。

当然,刷这两本书的目的并不是让你死记硬背题目,题目千变万化,面试官可以随意改变。刷算法题最重要的是培养解决问题的思路和解决实际问题的能力。在刷题的过程中要多多总结,再次强调,切忌死记硬背!

5. 算法

和数据结构一样,算法一般也通过具体的算法题来考察,你也可以通过刷《剑指offer》和《程序员面试金典》中的算法题来提高这方面的技能。但在刷这些算法题之前,你需要掌握几类基础的算法,并理解他们解决问题的思路(这才是最为关键的)。这些算法我已经在下面整理。

·        一般背包问题

·        最佳合并模式

·        最小代价生成树

·        迪杰斯特拉算法

·        佛洛依德算法

·        最长公共子序列

·        0/1背包问题

·        多段图问题

·        n皇后问题

·        BFS

·        DFS

 

其实在面试的过程中,算法和数据结构,一般考官都是通过出题让你求解或者说思路,几乎没遇到过让你讲一下某个算法的实现这种的。所以一般这一块如果有时间还是详细学,没时间就直接实战刷题,还是可以学到好多的东西的。

你可能感兴趣的:(15.面经总结)