经典技术面试指南

  • 目录
  • 计算机基础知识
    • 数据结构
    • 算法
    • 操作系统
    • 计算机网络
    • 数据库
    • 海量数据处理
    • C语言基础
    • Java基础
    • Java高级
    • Java Web
    • 设计模式
    • 知识的综合能力
    • 工具使用
    • 项目相关
    • 技术热情
    • 表达能力
    • 思考方式
    • 其他
    • 推荐阅读

目录

最近看到一份不错的面试总结,也是每位程序猿都应该掌握的基础(特别是对于马上要毕业的应届生来说可以作为一个面试的准备大纲),后续我会将对应的答案总结出来。

转自:https://www.toutiao.com/i6537891982017036813/

最近,各大公司开始了春招,很多人已经开始在准备面试了,特地来总结下初中级程序员应该掌握的面试题目。这篇面试指南,只适用于初中级程序员,其中不涉及分布式等问题。关于中高级的程序员问题,我后面可能再出一篇文章。
这里写图片描述
对于一个初中级程序员来说,面试问题不仅仅涉及到Java语言,还会包括很多其他知识,比如计算机基础知识(数据结构、计算机网络、操作系统等)、C语言基础、Java底层知识以及一些框架相关知识等。本文几乎覆盖到了所有领域——

  • 计算机基础知识
  • C语言基础
  • Java基础
  • Java高级
  • Java Web
  • 设计模式
  • 知识的综合能力
  • 工具使用
  • 项目相关
  • 技术热情
  • 表达能力
  • 思考方式
  • 其他
  • 推荐阅读

还有,我知道很多人会问关于这些题目的答案问题。答案都有,由于篇幅有限没办法直接贴上来,但我希望,你能自己认真先琢磨一下,看看自己的整体水平如何?后续有机会在酌情发不出答案来。

本文的目的,主要是通过体系化梳理,为调动你的学习的积极主动性!——搞技术的,学无止境呀~

这套题目,总数是280道,道道都是精品必考题。如果这些面试题都能很好的回答上的话,参加国内各大公司的校招基本都没啥问题。

我很难估算一个人要掌握这所有的题目有多难。但是我觉得,如果你是一个有一定的计算机基础知识并且有一定的Java经验,全部掌握差不多3-6个月左右吧。

为了方便,我把他们分了类,有一些是必看的,我用!(感叹号)标注,有一些进阶型的我用%(百分号)标注,有一些需要了解的,我用?(问号)标注。

必会关键字

void byte int long char short float doubleString StringBuffer StringBuilder Array CollectionCollections List ArrayList LinkedList Vector SetHashMap TreeMap LinkedHashMap ConcerrentHashMapSet TreeMap HashMap synchronized volatiletransient implements extends public privateprotected this super static final const runstart thread enmu stack queue list heap throwthrows try catch finally break continue instanceof

计算机基础知识

数据结构

!1、什么是队列、栈、链表

!2、什么是树(平衡树,排序树,B树,B+树,R树,红黑树)、堆(大根堆、小根堆)、图(有向图、无向图、拓扑)

!3、栈和队列的相同和不同之处

?4、栈通常采用的两种存储结构

%5、两个栈实现队列,和两个队列实现栈

算法

!1、排序都有哪几种方法?

!2、会写常用的排序算法,如快排,归并等。

%3、各种排序算法的 时间复杂度和稳定性,重点快排。

!4、单链表的遍历和逆序

!5、深度优先搜索和广度优先搜索

?6、最小生成树

!7、常见Hash算法,哈希的原理和代价

%8、全排列、贪心算法、KMP算法、hash算法

?9、一致性Hash算法

操作系统

?1、虚拟内存管理

?2、换页算法

!3、进程间通信

?4、进程同步:生产者消费者问题、哲学家就餐问题、读者写者问题

!5、死锁的四个必要条件,避免方法

!6、Linux的一些基本命令,如ls、tail等

计算机网络

!1、tcp,udp区别

!2、HTTP请求和响应的全过程

!3、HTTP常见响应码:200、301、302、404、500

!4、get和post的区别

!5、forward和redirect的区别

!6、osi七层模型

!7、tcp/ip四层模型及原理

!8、TCP和UDP区别

!9、TCP的三次握手,四次关闭

%10、丢包,粘包,

?11、容量控制,拥塞控制

?12、子网划分

%13、IPV4和IPV6

?14、HTTPS和HTTP/2

数据库

!1、范式

!2、数据库事务和隔离级别

!3、为什么需要锁,锁定分类,锁粒度

%4、乐观锁,悲观锁的概念及实现方式

!5、分页如何实现(Oracle,MySql)

!6、Mysql引擎

?7、MYSQL语句优化

%8、从一张大表读取数据,如何解决性能问题

!9、内连接连接,右连接作用及区别

!10、Statement和PreparedStatement之间的区别

%11、索引以及索引的实现(B+树介绍、和B树、R树区别)

?12、什么是数据库连接池

海量数据处理

%1、海量日志数据,如何提取出某日访问淘宝次数最多的IP

%2、上亿数据,统计其中出现次数最多的前N个数据

%3、5亿个int,找出他们的中位数

%4、两个文件,各存放50亿条URL,每个URL占64字节。内存限制是4G,找出两个文件中相同的URL

%5、有40亿个不重复的unsigned int的整数,没排过序,现在给一个数,如何快速判断这个数是否在这40亿个数当中。

?6、提示:分治、Hash映射、堆排序、双层桶划分、Bloom filter、bitmap、数据库索引、mapreduce

C语言基础

构造函数、析构函数

!1、构造函数和析构函数

%2、为什么不要在构造器中调用虚函数

%3、为什么不要在析构函数中抛出异常

c++相关

!1、面向对象的三大基本特征,五大基本原则

%2、C++继承的内存布局

!3、C++多态的实现机制

!4、new/deletr和malloc/free的区别

其他

!1、为什么使用补码

%2、C语言中的内存泄漏

!3、进制转换

%4、自己编写strlen/strcpy/strcmp

!5、C、C++以及Java之间的区别和各自优缺点

Java基础

封装、继承、多态

!1、Java中实现多态的机制是什么,动态多态和静态多态的区别

!2、接口和抽象类的区别,如何选择

!3、Java能不能多继承,可不可以多实现

%4、Static Nested Class和Inner Class的不同

!5、重载和重写的区别。

!6、是否可以继承String类

!7、构造器是否可被override?

!8、public,protected,private的区别?

集合相关

!1、列举几个Java中Collection类库中的常用类

!2、List、Set、Map是否都继承自Collection接口?存储特点分别是什么?

!3、ArrayList、LinkedList和Vector之间的区别与联系

!4、HashMap和Hashtable、TreeMap以及ConcurrentHashMap的区别

!5、Collection和Collections的区别

%6、其他的集合类:treeset,linkedhashmap等。

异常相关

!1、Error和Exception的区别

!2、异常的类型,什么是运行时异常

!3、final、finally和finalize的区别

%4、try-catch-finally中,如果在catch中return了,finally中的代码还会执行么,原理是什么?

!5、列举3个以上的RuntimeException

!6、Java中的异常处理机制的简单原理和应用

其它

!1、String和StringBuffer、StringBuilder的区别

!2、==和equals的区别

%3、hashCode的作用,和equals方法的关系

!4、Input/OutputStream和Reader/Writer有什么区别

!5、如何在字符流和字节流之间转换?

!6、switch可以使用那些数据类型

%7、Java的四种引用

!8、序列化与反序列化

!9、正则表达式

!10、int和Integer的区别,什么是自动装箱和自动拆箱

Java高级

多线程

!1、进程和线程的区别

!2、并行和并发的区别和联系

!3、同步与异步

!4、多线程的实现方式,有什么区别

!5、什么叫守护线程

%6、如何停止一个线程?

!7、什么是线程安全?

!8、synchronized和lock的区别

!9、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

!10、启动一个线程是用run()还是start()?

!12、wait和sleep的区别

%13、notify和notifyAll的区别

%14、线程池的作用

%15、Java中线程池相关的类

JVM底层技术

!1、gc的概念,如果A和B对象循环引用,是否可以被GC?

%2、jvm gc如何判断对象是否需要回收,有哪几种方式?

!3、Java中能不能主动触发GC

!4、JVM的内存结构,堆和栈的区别

!5、JVM堆的分代

%6、Java中的内存溢出是什么,和内存泄露有什么关系

!7、Java的类加载机制,什么是双亲委派

!8、ClassLoader的类加载方式

IO

!1、NIO、AIO和BIO 之间的区别

?2、IO和NIO常用用法

其它

?1、hashcode有哪些算法

!2、反射的基本概念,反射是否可以调用私有方法

!3、Java中范型的概念

?4、JVM启动参数,-Xms和-Xmx

%5、代理机制的实现

!6、String s = new String(“s”),创建了几个对象。

Java Web

Servlet

!1、JSP和Servlet的区别,Servelt的概念。

!2、Servlet的生命周期

!3、Servlet中的session工作原理 ,以及设置过期时间的方式

!4、Servlet中,filter的应用场景有哪些?

?5、JSP的动态include和静态include

%6、web.xml中常用配置及作用

%7、Servlet的线程安全问题

MVC框架

!1、介绍几个常用的MVC框架

!2、什么是MVC

!3、Struts中请求的实现过程

%4、Spring mvc与Struts mvc的区别

?5、Service嵌套事务处理,如何回滚

!6、struts2 中拦截器与过滤器的区别及执行顺序

%7、struts2拦截器的实现原理

http相关

!1、session和cookie的区别

!2、HTTP请求中session实现原理?

%3、如果客户端禁止Cookie能实现Session吗?

!4、http中get和post区别

!5、redirect与forward的区别

!6、常见的web请求返回的状态码。404、302、301、500分别代表什么

SSH相关

?1、Hibernate/Ibatis/MyBatis之间的区别

?2、什么是OR Mapping

%3、hibernate的缓存机制、一级和二级缓存

!4、使用Spring的好处是什么,Spring的核心理念

!5、什么是AOP和IOC,实现原理是什么

!6、spring bean的初始化过程

!7、Spring的事务管理,Spring bean注入的几种方式

%8、spring四种依赖注入方式

容器相关

!1、什么是web服务器、什么是应用服务器

!2、常用的web服务器有哪些?

?3、Tomcat和weblogic的区别

web安全

!1、什么是SQL注入,如何避免。

%2、什么是XSS攻击,如何避免

%3、什么是CSRF攻击,如何避免

动态代理

!1、Java的动态代理的概念

%2、Java的动态代理的实现

编码问题

!1、常用的字符编码

!2、如何解决中文乱码问题

其它

%1、XML的解析方式,以及优缺点。

%2、什么是ajax,Ajax如何解决跨域问题

设计模式

%1、谈一下自己了解或者熟悉的设计模式

!2、Singleton的几种实现方式,实现一个线程安全的单例。

?3、工厂模式和抽象工厂模式之间的区别

知识的综合能力

!1、请介绍一下一个http请求的全过程,描述的越全面越好

!2、当你在浏览器地址栏输入www.taobao.com,敲下回车之后都发生了什么

工具使用

!1、知道git/svn是干什么的吗?用过吗

!2、知道maven/gradle是干什么的吗?用过吗

!3、平常使用什么IDE,为什么

!4、平常使用什么浏览器,为什么

!5、平常开发机器是什么操作系统的

!6、会在Linux上开发吗。Linux常用命令会吗

项目相关

!1、请简单介绍一下你的这个项目

!2、你在这个项目中充当什么角色

!3、这个项目的技术选型有做过么。

!4、选择某项技术做过哪些调研和对比

!5、这个项目中遇到的最大的问题是什么?你是如何解决的。

!6、项目中是否考虑过性能、安全性等问题

技术热情

!1、当前Java的最新版本

!2、Java8的lambda表达式

%3、Java8的stream API

%4、Java9的模块化

%5、Java10的局部变量类型推断

%6、Spring Boot2.0

%7、HTTP/2

%8、会翻墙么,知道翻墙的原理吗

!9、你最近在读什么书

表达能力

!1、能不能简单做一个自我介绍。

!2、能不能描述一下杭州给你的印象。用三句话概括一下。

思考方式

!1、如何估算杭州有多少软件工程师

!2、你最近读过的印象最深的文章是什么

!3、这篇文章中有几个观点,你最赞成哪一个,最不赞成哪一个

其他

!1、你对加班怎么看

!2、你还有什么问题要问我(面试官)的么

推荐阅读

程序员面试笔试宝典

程序员面试金典

Java编程思想

Effective Java

深入理解Java虚拟机

大话数据结构

剑指Offer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 共享内存详解一

共享内存段被多个进程附加的时候,如果不是所有进程都已经调用shmdt,那么删除该共享内存段时,会出现一个临时的不完整的共享内存段(key值是0),无法彻底删除。只有当所有进程都调用shmdt,这个临时…

Storm编程模型总结

目录前言:1、Storm编程模型2、对应的的WordCount案例总结: 目录 前言: 对于Storm的编程模型有必要做一个详细的介绍(配合WC案例来介绍) 1、Storm编程模型 上图中组件的解释: DataSource:外…

13_观察者模式

【观察者模式】 也叫作发布/订阅模式,使用较为频繁。 定义了对象间一种一对多的依赖关系,当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式由以下几个角色组成: * Subject 被观察者 定义被观察者…

《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...

本节书摘来自异步社区《黑客秘笈——渗透测试实用指南》一书中的第2章2.3节 外部或内部的主动式信息收集,作者【美】Peter Kim(彼得 基姆),更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 外部或内部的主动式信息收集黑客秘笈——…

Storm集群的安装及简单使用

目录前言:1、集群部署的基本流程2、Storm常用操作命令(了解)3、Storm集群的进程及日志熟悉(知道对应的日志的位置出了问题知道去哪找原因)4、Storm源码目录分析(重要)总结: 目录 前…

Storm的通信机制

目录前言:1、Worker进程间通信原理2、Worker进程间技术(Netty、ZeroMQ)3、Worker 内部通信技术(Disruptor)总结: 目录 前言: 这篇文章,博客主要介绍下Storm中Worker进程间和进程内部通信的原理和技术。整篇内容仅供了解&#x…

Storm程序的并发机制原理总结

文章目录目录前言:1、概念2、配置并行度总结:目录 前言: 为了在以后的实践中提高Storm程序执行的效率,我们还是有必要了解下对应的Storm程序的并发机制。(哈哈,虽然以博主小菜鸟的水平还没有接触到这种提…

★数学上最大的数是多少?

数学上最大的数是多少? 怪罗科普 收藏(282)| 阅读(117678)人类已经使用数长达千年之久。普遍认为,数的概念最先源于史前人类开始使用手指进行计数。这最终演变成符号语言,然后在沙子、墙壁和木头等物体上作标记。 我们已经向前发展了一大步&…

Storm任务提交过程及目录树介绍

目录前言:1、Storm 任务提交的过程2、Storm相关的目录树总结: 目录 前言: 对于任何一个组件来说,了解它相关的任务提交的过程是非常有必要的(毕竟生产中遇到一些Bug时,你如果知道内部执行的过程&#xf…

《Adobe InDesign CS6中文版经典教程》—第1课1.5节修改文档的缩放比例

本节书摘来自异步社区《Adobe InDesign CS6中文版经典教程》一书中的第1课1.5节修改文档的缩放比例,作者【美】Adobe公司,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.5 修改文档的缩放比例Adobe InDesign CS6中文版经典教程InDesign中的控件让用户能…

大数据之Kafka入门简介

目录前言:1、Kafka是什么2、JMS是什么3、Kafka核心组件(重点)总结: 目录 前言: 作为流式计算中的一个组件,对于它的组成以及运行的原理,学习者也需要相关的了解。以下主要简单介绍了kafka是什…

oracle的安装与plsql的环境配置

1,首先得有oracle的安装包和plsql的安装包,安装包地址可见百度云 http://pan.baidu.com/s/1miTqhmg 2.解压下来进入0817账套,找到set.exe文件,双击安装即可 注意的是安装的时候有两个目录是要自己创建的,否则安装不成功…

如何在Docker容器中运行GUI程序

如何在Docker容器中运行GUI程序 各位,今天我们将学习如何在Docker之中运行GUI程序。我们可以轻易地在Docker容器中运行大多数GUI程序且不出错。Docker是一个开源项目,提供了一个打包、分发和运行任意程序的轻量级容器的开放平台。它没有语言支持、框架或…

【python】Get与Post的区别?(面试官最想听到的答案)

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出…

大数据之Kafka内部原理详细介绍

目录前言:1、Kafka整体结构2、Consumer与topic关系3、Kafka消息的分发4、Consumer的负载均衡5、kafka文件存储机制总结: 目录 前言: 本篇文章所介绍的内容还是以了解为主,主要目的还是为了对Kafka有一个更深入的理解。主要介绍…

JS与APP原生控件交互

“热更新”、“热部署”相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显得重要,不可能每次发布一个活动,都要发布一个现版本&a…

《脱颖而出——成功网店经营之道》一2.6 连横:返利模式的应用及分销

本节书摘来异步社区《脱颖而出——成功网店经营之道》一书中的第2章,第2.6节,作者: 何小健 责编: 赵轩, 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.6 连横:返利模式的应用及分销 脱颖而出——成功网店…

大数据之Spark集群安装及简单使用

目录1、Spark集群安装1.1. 安装 2、启动Spark Shell2.1、启动spark shell2.2、在spark shell中编写WordCount程序 目录 1、Spark集群安装 1.1. 安装 1.1.1. 机器部署 准备两台以上Linux服务器,安装好JDK1.7 1.1.2. 下载Spark安装包 下载地址:ht…

大数据之Spark简介及RDD说明

目录前言:1、Spark概述1.1、什么是Spark(官网:http://spark.apache.org)1.2、为什么要学Spark1.3、Spark特点 2、RDD概述2.1、什么是RDD2.2、RDD的属性2.3、创建RDD的两种方式2.4、RDD编程API2.5、RDD的依赖关系2.6、RDD的缓存2.7…

大数据之SparkSQL简介及DataFrame的使用

目录前言:1、Spark SQL1.1、Spark SQL概述1.2、DataFrames1.3、DataFrame常用操作 总结: 目录 前言: 本文主要介绍下SparkSQL以及SparkSQL的简单使用。这里只是做了一个非常简单的介绍,后续工作中如果有用到相关的知识&#xff…