写在前面
古人云:凡事预则立,不预则废。机会都是垂青有准备的人的。为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完,这样在大规模招聘开始的时候就可以专心地为面试做准备。求职过程中会发生很多预料不到的事情,当你的计划被这些事情打乱之后,要做的事会越堆越多,一步落后,步步落后。如果能够尽早把能做的事做完,即便有计划外事件发生,也不会产生太严重的影响。努力地使事态的发展处在自己能控制的范围之内,这样无论发生任何事都能有应对之策。
如今,一线互联网行业对IT人才的需求也越来越大,甚至对于人才的培养给予了一定的支持。据内部消息称,BAT大厂也非常鼓励培养人才,对此还发布了相关的一些相关的培训和指导,今天我们要聊到的,是一份内部发布的Java架构师面试宝典与Java架构师修行宝典,看完之后或许可以不用再怀疑人生了,学习Java也能如此简单,完美!
Java架构师面试宝典与修行宝典
内容包含:JVM(柒拾柒题)、MySQL(捌拾叁题)、Redis(伍拾题)、Memcached(贰拾肆题)、String(壹佰叁拾壹题)、Spring Boot(玖拾贰题)、Spring Cloud(叁拾伍题)、JavaOOP(壹佰零捌题)、Java集合/泛型(贰拾肆题)、Java异常(捌题)、JavaIO与NIO(拾伍题)、Java反射(拾壹题)、Java序列化(拾题)、Java注解(贰题)、多线程&并发(壹佰零捌题)、MongoDB(玖拾伍题)、RabbitMQ(叁拾贰题)、Dubbo(肆拾题)、MyBatis(贰拾捌题)、ZooKeeper(肆拾玖题)、数据结构(玖题),算法(贰拾壹题)、Elasticsearch(贰拾肆题)、Kafka(贰拾伍题)、微服务(伍拾题)、Linux(肆拾捌题)合计:壹仟壹佰玖拾玖题
JVM(柒拾柒题)
知识点整理
基本概念:JVM是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、个栈、一个垃圾回收,堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。
1.java中会存在内存泄漏吗,请简单描述
会。自己实现堆载的数据结构时有可能会出现内存泄露
2.64位JVM中,int的长度是多数?
Java中。int类型变量的长度是一个固定值,与平台无关,都是32位。意思就是说,在32位和64位的Java虚拟机中,int类型的长度是相同的。
3.Serial与Parallel GC之间的不同之处?
Serial与Parallel在GC执行的时候都会引起stop-the-world,它们之间主要不同serial收集器是默认的复制收集器,执行GC的时候只有一个线程,而parallel 收集器使用多个GC线程来执行。
4.32位和64位的JVM, int 类型变量的长度是多数?
32位和64位的JVM中,int类型变量的长度是相同的,都是32位或者4个字节。
5.Java中WeakReference与SoftReference 的区别?
虽然WeakReference与SoftReference都有利于提高GC和内存的效率,但是WeakReference, 一旦失去最后一个强引用,就会被GC回收,而软引用虽然不能阻止被回收,但是可以延迟到JVM内存不足的时候。
6.JVM选项-XX:+UseCompressedOops有什么作用?为什么要使用!
当你将你的应用从32位的JVM迁移到64位的JVM时,由于对象的指针从32位增加到了64位,因此堆内存会突然增加,差不多要翻倍。这也会对CPU缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到64位的JVM主要动机在于可以指定最大堆大小,通过压缩OOP可以节省一定的内存。通过-XX:+UseCompressedOops 选项。JVM会使用32位的OOP,而不是64位的OOP.
7.怎样通过Java程序来判断JVM是32位还是64位?
你可以检查某些系统属性如sun,arch.data.model或os .arch来获取该信息。
8.32位JVM和64位JVM的最大堆内存分别是多数?
理论.上说上32位的JVM堆内存可以到达2^32,即4GB,但实际上会比这个小很多。不同操作系统之间不同,如Windows系统大约1.5GB,Solaris大约3GB.64 位JVM允许指定最大的堆内存,理论上可以达到2^64,这是一个非常大的数字,实际上你可以指定堆内存大小到100GB,甚至有的JVM,如Azul,堆内存到1000G都是可能的。
9.JRE. JDK. JVM及JIT之间有什么不同?
JRE代表Java运行时( Java run-time) , 是运行Java引用所必须的。JDK代表Java开发工具( Java development kit), 是Java程序的开发工具,如Java编译器,它也包含JRE. JVM代表Java虚拟机( Java virtual machine),它的责任是运行Java应用。JT代表即时编译( Just In Time compilation), 当代码执行的次数超过一定的闽值时,会将Java字节码转换为本地代码,如,主要的热点代码会被准换为本地代码,这样有利大幅度提高Java应用的性能。
10.解释Java堆空间及GC?
当通过Java命令启动Java进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC是JVM内部的一个进程 ,回收无效对象的内存用于将来的分配。
11.JVM内存区域
注:由于整套笔记包含1000多道面试题,涉及到的内容和知识点较多,想要全部展现给大家比较困难,为了不影响大家的阅读体验,中间也会忽略很多面试题,以便于阅读...................Σ( ° △ °|||).............文末有完整版的笔记,有需要的朋友可在文末获取
- 12.程序计数器(线程私有)
- 13.虚拟机栈(线程私有)
- 14.本地方法区(线程私有)
- 15.你能保证GC执行吗?
- 16.怎么获取Java程序使用的内存?堆使用的百分比?
- 17.Java中堆和栈有什么区别?
- 18.描述一下JM加载class文件的原理机制
- 19.GC是什么?为什么要有GC?
- 20.堆(Heap-线程共享运行时数据区
- 21.方法区/永久代(线程共享)
- 22.JVM运行时内存
- 23.新生代
- 24.老年代
- 25.永久代
- 26.JAVA8与元数据
- 27.引用计数法
- 28.可达性分析
- 29.标记清除算法( Mark-Sweep)
- 30.复制算法(copying)
- 31.标记整理算法(Mark-Compact)
- 32.分代收集算法
- 33.新生代与复制算法
- 34.老年代与标记复制算法
- 35.JAVA强引用
- 36.JAVA软引用
- 37.JAVA弱引用
- 38.JAVA虚引用
- 39.分代收集算法
- 40.在新生代-复制算法
- 41.在老年代-标记整理算法
- 42.分区收集算法
- 43.GC垃圾收集器
- 44.Serial垃圾收集器(单线程、复制算法)
- 45.ParNew垃圾收集器(Serial+ 多线程)
- 46.Parallel Scavenge收集器(多线程复制算法、高效)
- 47.Serial Old收集器(单线程标记整理算法)
- 48.Parallel Old收集器(多线程标记整理算法)
- 49.CMS收集器(多线程标记清除算法)
- 50.G1收集器
- 51.JVM类加载机制
- 52.类加载器
- 53.双亲委派
- 54.OSGI (动态模型系统)
- 55.动态改变构造
- 56.模块化编程与热插拔
- 57.JVM内存模型
- 58.栈
- 59.本地方法栈
- 60.程序计数器
- 61.堆
- 62.方法区
- 63.分代回收
- 64.堆和栈的区别
- 65.什么时候会触发FullIGC
- 66.什么是Java虚拟机?为什么Java被称作是”平台无关的编程语言"?
- 67.对象分配规则
- 68.描述一下JVM加载class文件的原理机制?
- 69.Java对象创建过程
- 70.简述Java的对象结构
- 71.如何判断对象可以被回收
- 72.JVM的永久代中会发生垃圾回收么
- 73.垃圾收集算法
- 74.调优命令有哪些?
- 75.调优工具
- 76.Minor GC与Full GC分别在什么时候发生?
- 77.你知道哪些JVM性能调优
MySQL(捌拾叁题)
知识点整理
索引(Index) 是帮助MySQL高效获取数据的数据结构。常见的查询算法,顺序查找二分查找二叉排序树查找哈希散列法,分块查找平衡多路搜索树B树(B-tree)
面试题
- 数据库存储引擎
- InnoDB (B+树)
- TokuDB ( Fractal Tree-节点带数据)
- MylASM
- Memory
- 数据库引擎有哪些
- InnoDB与MyISAM的区别
- 索引
- 常见索引原则有
- 数据库的三范式是什么
- 第一范式(1stNF -列都是不可再分)
- 第二范式(2nd NF -每个表只描述- -件事情)
- 第三范式(3rd NF -不存在对非主键列的传递依赖)
- 数据库是事务
- SQL优化
- 简单说一说drop. delete 与truncate的区别
- 什么是视图
- 什么是内联接、左外联接、右外联接?
- 并发事务带来哪些问题?
- 务隔离级别有哪些?MySQL的默认隔离级别是?
- 大表如何优化?
- 水平分区
- 分库分表之后,,d主键如何处理
- 存储过程(特定功能的SQL语句集)
- 存储过程优化思路
- 触发器(一段能自动执行的程序)
- 数据库并发策略
- MySQL中有哪几种锁?
- MySQL中有哪些不同的表格?
- 简述在MySQL数据库中MyISAM和InnoDB的区别
- MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
- CHAR和VARCHAR的区别?
- 主键和候选键有什么区别?
- myisamchk是用来做什么的?
- MyISAM Static 和MyISAM Dynamic有什么区别?
- 如果一个表有一列定义为TIMESTAMP,将发生什么?
- 你怎么看到为表格定义的所有索引?
- LIKE声明中的%和是什么意思?
- 列对比运算符是什么?
- BLOB和TEXT有什么区别? .
- MySQL fetch. array 和MySQL fetch. object 的区别是什么?
- MyISAM表格将在哪里存储,并且还提供其存储格式?
- MySQL如何优化DISTINCT?
- 如何显示前50行?
- 可以使用多少列创建索引?
- NOW ()和CURRENT DATE () 有什么区别? .
- 什么是非标准字符串类型?
- 什么是通用SQL函数?
- MySQL支持事务吗?
- MySQL里记录货币用什么字段类型好
- MySQL有关权限的表都有哪几个?
- 列的字符串类型可以是什么? .
- MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年怎么优化?
- 锁的优化策略
- 索引的底层实现原理和优化
- 什么情况下设置了索引但无法使用
- 实践中如何优化MySQL
- 优化数据库的方法
- 解释MySQL外连接、内连接与自连接的区别
- Myql中的事务回滚机制概述
- SQL语言包括哪几部分?每部分都有哪些操作关键
- 完整性约束包括哪些?
- 什么是锁?
- 什么叫视图?游标是什么?
- 什么是存储过程?用什么来调用?
- 如何通俗地理解3三个范式?
- 什么是基本表?什么是视图?
- 试述视图的优点?
- NULL是什么意思
- 主键、外键和索引的区别?
- 你可以用什么来确保表格里的字段只接受特定范围里的值?
- 说说对SQL语句优化有哪些方法? (选择几条)
- 什么是乐观锁
- 什么是悲观锁
- 什么是时间戳
- 什么是行级锁
- 什么是表级锁
- 什么是页级锁
面试题解析
Redis(伍拾题)
知识点整理
基于Redis分布式锁:
- 获取锁的时候,使用setnx (SETNX key val:当且仅当key不存在时,set 一个key为val的字符串,返回1;若key存在,则什么都不做,返回0)加锁,锁的value值为一个随机生成的UUID, 在释放锁的时候进行判断。并使用expire 命令为锁添加一个超时时间,超过该时间则自动释放锁。
- 获取锁的时候调用setnx,如果返回0,则该锁正在被别人使用,返回1则成功获取锁。还设置一个获取的超时时间, 若超过这个时间则放弃获取锁。
- 释放锁的时候,通过UUID判断是不是该锁,若是该锁,则执行delete进行锁释放。
面试题
- 什么是Redis?
- Redis与其他key-value存储有什么不同?
- Redis的数据类型?
- 使用Redis有哪些好处?
- Redis相比Memcached有哪些优势?
- Memcache与Redis的区别都有哪些?
- Redis是单进程单线程的? .
- 一个字符串类型的值能存储最大容量是多少?
- Redis持久化机制
- 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
- 热点数据和冷数据是什么
- 单线程的redis为什么这么快
- redis的数据类型,以及每种数据类型的使用场景
- redis的过期策略以及内存淘汰机制
- Redis常见性能问题和解决方案?
- 为什么Redis的操作是原子性的,怎么保证原子性的?
- Redis事务
- Redis的持久化机制是什么?各自的优缺点?
- Redis常见性能问题和解决方案:
- redis过期键的删除策略?
- Redis的回收策略(淘汰策略) ?
- 为什么edis需要把所有数据放到内存中?
- Redis的同步机制了解么?
- Pipeline有什么好处,为什么要用pipeline?
- 是否使用过Redis集群,集群的原理是什么?
- Redis集群方案什么情况下会导致整个集群不可用?
- Redis支持的Java客户端都有哪些?官方推荐用哪个?
- Jedis与Redisson对比有什么优缺点?
- Redis如何设置密码及验证密码?
- 说说Redis哈希槽的概念?
- Redis集群的主从复制模型是怎样的?
- Redis集群会有写操作丢失吗?为什么?
- Redis集群之间是如何复制的?
- Redis集群最大节点个数是多少?
面试题解析
Memcached(贰拾肆题)
- Memcached是什么,有什么作用?
- memcached服务在企业集群架构中有哪些应用场景?
- Memcached服务分布式集群如何实现?
- Memcached服务特点及工作原理是什么?
- 简述Memcached内存管理机制原理?
- memcached是怎么工作的?
- memcached最大的优势是什么?
- memcached和MySQL的query
- 什么是二进制协议,我该关注吗?
- memcached的内存分配器是如何工作的?为什么不适用malloc/free! ?为何要使用slabs?
- memcached是原子的吗?
- 如何实现集群中的session共享存储?
- memcached与redis的区别?
面试题解析
String(壹佰叁拾壹题)
知识点整理
Spring特点:
- 轻量级
- 控制反转
- 面向切面
- 容器
- 框架集合
Spring核心组件
面试题
- 什么是依赖注入?
- 可以通过多少种方式完成依赖注入? .
- 区分构造函数注入和stter入
- spring中有多少种I0C容器?
- 区分BeanFactory和AlicionConoet
- 列举loC的一些好处。
- Spring loC的实现机制。
- 什么是spring bean?
- spring提供了哪些配方式?
- spring支持集中bean scope?
- spring bean容器的生命周期是什么样的?
- 什么是spring的内部bean?
- 什么是spring装配
- 自动装配有哪些方式?
- 自动装配有什么局限?
- 什么是基于注解的容器配置
- 如何在spring中启动注解装配?
- @Component Contrlle @Repostoy
- @Required注解有什么用?
- @Autowired注解有什么用?
- @Qualifer注解有什么用?
- @RequestMapping注解有什么用?
- spring DAO有什么用?
- 列举Spring DAO抛出的异常。
- Spring配置文件
- 什么是Spring I0C容器?
- IOC的优点是什么?
- ApplicationContext通常的实现是什么?
- Bean和Application contexts有什么区别?
- 一个Spring的应用看起来象什么?
- 什么是Spring的依赖注入?
- 有哪些不同类型的IOC (依赖注入)方式?
- 哪种依赖注入方式你建议使用,构造器注入,还是Setter方法注入?
- 什么是Spring beans?
- 一个Spring Bean定义包含什么?
- 如何给Spring容器提供配置元数据?
- 你怎样定义类的作用域?
- 解释Spring支持的几种bean的作用域。
- Spring框架中的单例bean是线程安全的吗?
- 解释Spring框架中bean的生命周期。
- 哪些是重要的bean生命周期方法?你能重载它们吗?
- 什么是Spring的内部bean?
- 在Spring中如何注入一个java集合?
- 什么是bean装配?
- 什么是bean的自动装配?
- 解释不同方式的自动装配。
- 自动装配有哪些局限性
- 你可以在Spring中注入-个null和一个空字符串吗?
- 什么是基于Java的Spring注解配置?给一些注解的例子.
面试题解析
Spring Boot(玖拾贰题)
知识点整理
Spring Boot原理:Spring Boot是由Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapid applicationdevelopment)成为领导者。其特点如下:
- 创建独立的Spring应用程序
- 嵌入的Tomcat,无需部署WAR文件
- 简化Maven配置
- 自动配置Spring
- 提供生产就绪型功能,如指标,健康检查和外部配置
- 绝对没有代码生成和对XML没有要求配置[1]
面试题
- 什么是Spring Boot?
- 为什么要用SpringBoot
- Spring Boot有哪些优点?
- Spring Boot的核心注解是哪个?它主要由哪几个注解组成的?
- 运行Spring Boot有哪几种方式
- 如何理解Spring Boot中的Starters?
- 如何在Spring Boot启动的时候运行一些特定的代码?
- Spring Boot需要独立的容器运行吗?
- Spring Boot中的监视器是什么?
- 如何重新加载Spring Boot上的更改,而无需重新启动服务器?
- springboot集成mybatis的过程
- Spring Boot. Spring MVC和Spring有什么区别?
- 什么是Spring Boot Stater ?
- Spring Boot还提供了其它的哪些Starter Project Options?
- Spring是如何快速创建产品就绪应用程序的?
- 创建一个Spring Boot Project的最简单的方法是什么?
- Spring Initializr是创建Spring Boot Projects的唯一方法吗?
- 如何使用SpringBoot自动重装我的应用程序?
- 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
- 如何在Spring Boot中添加通用的JS代码?
- 什么是Spring Date?
- 什么是Spring Data REST? .
- path="users", collectionResourceRel="users"如何与Spring Data Rest -起使用?
- 当Spring Boot应用程序作为Java应用程序运行时,后台会发生什么?
- 我们能否在spring-boot- starter-web中用jetty代替tomcat?
- 如何使用Spring Boot生成-个WAR文件?
- 如何使用Spring Boot部署到不同的服务器?
- RequestMapping和GetMapping的不同之处在哪里?
- 为什么我们不建议在实际的应用程序中使用Spring Data Rest?
- 在Spring Initializer中,如何改变-个项目的包名字?
- 可以配置application.propertierde的完整的属性列表在哪里可以找到?
- JPA和Hibernate有哪些区别?
- 使用Spring Boot启动连接到内存数据库H2的JPA应用程序需要哪些依赖项?
- 如何不通过任何配置来选择Hibernate作为JPA的默认实现?
- 指定的数据库连接信息在哪里?它是如何知道自动连接至H2的?
- 我们如何连接一个像 MSSQL或者orcale 一样的外部数据库?
面试题解析
Spring Cloud(叁拾伍题)
面试题
- 什么是Spring Cloud?
- 使用Spring Cloud有什么优势?
- 服务注册和发现是什么意思? Spring Cloud如何实现?
- 负载平衡的意义什么?
- 什么是Hystrix?它如何实现容错?
- 什么是Hystrix断路器?我们需要它吗?
- 什么是Ntlix Feign?它的优点是什么?
- 什么是Spring Cloud Bus?我们需要它吗?
- 什么是微服务
- 你所知道的微服务技术栈?
- 微服务之间是如何独立通讯的?
- springcloud如何实现服务的注册?
- Eureka和Zookeeper区别
- eureka自我保护机制是什么?
- 什么是Ribbon?
- 什么是feigin?它的优点是什么?
- Ribbon和Feign的区别?
- 什么是Spring Cloud Bus?
- springcloud断路器作用?
- Spring Cloud Gateway?
- 作为服务注册中心,Eurekal比kZookeeper好在哪里?
- 什么是Ribbon负裁均衡?
- Ribbon负载均衡能干什么?
- 什么是zuu|路由网关
- 分布式配置中心能干嘛?
- Hytrix相关注解
- Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
面试题解析
微服务(伍拾题)
知识点整理
服务注册发现
服务端发现
配置中心
面试题
- 微服务架构有哪些优势?
- 微服务有哪些特点?
- 设计微服务的最佳实践是什么?
- 微服务架构如何运作?
- 微服务架构的优缺点是什么? .
- 单片,SOA和微服务架构有什么区别? .
- 在使用微服务架构时,您面临哪些挑战?
- SOA和微服务架构之间的主要区别是什么?
- 微服务有什么特点?
- 什么是领域驱动设计?
- 为什么需要域驱动设计(DDD) ?
- 什么是无所不在的语言?
- 什么是凝聚力?
- 什么是耦合?
- 什么是REST / RESTful以及它的用途是什么?
- 你对Spring Boot有什么了解?
- 什么是Spring引导的执行器?
- 什么是Spring Cloud?
- Spring Cloud解决了哪些问题?
- 在Spring MVC应用程序中使用WebMvcTest注释有什么用处?
- 你能否给出关于休息和微服务的要点?
- 什么是不同类型的微服务测试?
- 您对Distributed Transaction有何了解?
- 什么是ldempotence以及它在哪里使用?
- 什么是有界上下文?
- 什么是双因素身份验证?
- 双因素身份验证的凭据类型有哪些?
- 什么是客户证书?
- 什么是微服务架构中的DRY?
- 什么是消费者驱动的合同(CDC) ?
- Web,RESTful API在微服务中的作用是什么?
- 您对微服务架构中的语义监控有何了解?
- 我们如何进行跨功能测试?
- 我们如何在测试中消除非决定论?
- Mock或Stub有什么区别?
- 您对Mike Cohn的测试金字塔了解多少?
- Docker的目的是什么?
- 什么是金丝雀释放?
- 什么是持续集成(CI) ?
- 什么是持续监测?
- 架构师在微服务架构中的角色是什么?
- 我们可以用微服务创建状态机吗?
- 什么是微服务中的反应性扩展?
面试题解析
JavaOOP(壹佰零捌题)
- 什么是B/S架构?什么是C/S架构
- Java都有那些开发平台?
- 什么是JDK?什么是JRE?
- Java语言有哪些特点
- 面向对象和面向过程的区别
- 什么是数据结构?
- Java的数据结构有那些?
- 什么是OOP?
- 类与对象的关系?
- Java中有几种数据类型
- 标识符的命名规则。
- instanceof关键字的作用
- 什么是隐式转换,什么是显式转换
- Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
- 什么是拆装箱?
- Java中的包装类都是那些?
- 一个java类中包含那些内容?
- 那针对浮点型数据运算出现的误差的问题,你怎么解决?
- 面向对象的特征有哪些方面?
- 访问修饰符public,private,protected,以及不写 (默认)时的区别?
- String是最基本的数据类型吗?
- float f=3.4;是否正确?
- shorts1 = 1;s1 = s1 + 1;有错吗?shorts1 = 1;s1 += 1;有错吗?
- 重载和重写的区别
- 在使用jdbc的时候,如何防止出现sq|注入的问题。
- 怎么在JDBC内调用一个存储过程
- 是否了解连接池,使用连接池有什么好处?
- 你所了解的数据源技术有那些?使用数据源有什么好处?
- &和&&的区别
- 静态内部类如何定义
- 什么是成员内部类
- Static Nested Class和Inner Class的不同
- 什么时候用assert
- Java有没有goto
- 数组有没有length0这个方法? String有没有length0这个方法
- 用最有效率的方法算出2乘以8等於几
- float型float f=3.4是否正确?
- 排序都有哪几种方法?请列举
- 静态变量和实例变量的区别?
- 说出一些常用的类,包,接口,请各举5个
- a.hashCode0有什么用?与a.equals(b)有什么关系?
- Java中的编译期常量是什么?使用它又什么风险?
- 在Java中,如何跳出当前的多重嵌套循环?
- 构造器(constructor) 是否可被重写(override) ?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- String和StringBuilder. StringBuffer 的区别?
- 重载(Overload) 和重写(Override) 的区别。重载的方法能否根据返回类型进行区分?
- char型变量中能不能存贮一个中文汉字, 为什么?
- 抽象类(abstract class)和接口(interface) 有什么异同?
- 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
- 一个"java"源文件中是否可以包含多个类(不是内部类) ?有什么限制?
- Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
- 内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
- Java中的final关键字有哪些用法?
面试题解析
Java集合/泛型(贰拾肆题)
知识点整理
面试题
- ArrayListIlinkedList的区别
- HashMap和HashTable的区别
- Collection包结构,与Collections的区别
- 泛型常用特点(待补充)
- 说说List,Set,Map三者的区别
- Array与ArrayList有什么不一样?
- Map有什么特点
- 集合类存放于Java.util 包中,主要有几种接口
- 什么是list接口
- 说说ArrayList (数组)
- Vector ( 数组实现、线程同步)
- 说说LinkList (链表)
- 什么Set集合
- HashSet ( Hash表)
- 什么是TreeSet (二叉树)
- 说说LinkHashSet ( HashSet+ LinkedHashMap)
- HashMap (数组+链表+红黑树)
- 说说ConcurrentHashMap
- HashTable (线程安全)
- TreeMap (可排序)
- LinkHashMap (记录插入顺序)
- 泛型类
- 类型通配符?
- 类型擦除
面试题解析
Java异常(捌题)
知识点整理
概念:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。
面试题
- Java中异常分为哪两种?
- 异常的处理机制有几种?
- 如何自定义一个异常
- try catch finally, try里有return, finally还执行么?
- Excption与Error包结构
- Thow与thorws区别
- Error与Exception区别?
- error和exception有什么区别
面试题解析
JavaIO与NIO(拾伍题)
知识点整理
JAVA IO包
JAVA NIO:NIO主要有三大核心部分: Channel(通道), Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(选择区)用于 监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道。
Java nio包
面试题
- Java中IO流?
- Java IO与NIO的区别
- 常用IO类有哪些
- 字节流与字符流的区别
- 阻塞IO模型
- 非阻塞IO模型
- 多路复用IO模型
- 信号驱动IO模型
- 异步IO模型
面试题解析
Java反射(壹拾壹题)
知识点整理
动态语言:
动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的JavaScript就是动态语言,除此之外Ruby,Python等也属于动态语言,而C、C++则不属于动态语言。从反射角度说JAVA属于半动态语言。
反射机制概念(运行状态中知道类所有的属性和方法)
面试题
- 除了使用new创建对象之外,还可以用什么方法创建对象?
- Java反射创建对象效率高还是通过new创建对象的效率高?
- java反射的作用
- 哪里会用到反射机制?
- 反射的实现方式:
- 实现Java反射的类: .
- 反射机制的优缺点:
- Java反射API
- 反射使用步骤(获取Class对象、调用对象方法)
- 获取Class对象有几种方法
- 利用反射动态创建对象实例
面试题解析
Java序列化(拾题)
知识点整理
JAVA序列化(创建可复用的Java对象)
面试题
- 什么是java序列化,如何实现java序列化?
- 保存(持久化)对象及其状态到内存或者碰盘
- 序列化对象以字节数组保持静态成员不保存
- 序例化用户远程对象传输
- Serializable实现序列化
- writeObject和readObject自定义序列化策略
- 序列化ID
- 序例化并不保存静态变量
- Transient关键字阻止该变量被序列化到文件中
- 序列化(深clone—中实现)
面试题解析
Java注解(贰题)
知识点整理
概念:Annotation (注解)是Java提供的一种对元程序中元素关联信息和元数据(metadata) 的途径和方法。Annatation(注解)是一 个接口,程序可以通过反射来获取指定程序中元素的Annotation对象,然后通过该Annotation对象来获取注解中的元数据信息。
面试题
面试题解析
多线程与并发(壹佰零捌题)
知识点整理
JAVA并发知识库
4种线程池:Java里面线程池的顶级接]是Executor,但是严格意义上讲Executor并不是一个线程池, 而只是一个执行线程的工具。真正的线程池接口是ExecutorService.
JAVA阻塞队列原理
阻塞队列的主要方法
面试题
- Java中实现多线程有几种方法
- 继承Thread类
- 实现Runnable接口。
- ExecutorService. Callable、 Future 有返回值线程
- 基于线程池的方式
- 4种线程池
- 如何停止一个正在运行的线程
- notify()和notifyAll()有什么区别?
- sleep()和wait()有什么区别?
- volatile是什么?可以保证有序性吗?
- Thread类中的start0和run0方法有什么区别?
- 为什么wait, notify 和htfifyAlI这些方法不在thread类里面?
- 为什么wait和notify方法要在同步块中调用?
- Java中interrupted和isInterruptedd方法的区别?
- Java中synchronized和Reentrantl ock有什么不同?
- 有三个线程T1,T2,T3,如何保证顺序执行?
- SynchronizedMap和ConcurrentHashMap有什么区别?
- 什么是线程安全
- Thread类中的yield方法有什么作用?
- Java线程池中submit()和execute()方法有什么区别?
- 什么是线程安全? Vector是一个线程安全类吗?
- volatile关键字的作用?
- 简述一下你对线程池的理解
- 线程生命周期(状态)
- 新建状态(NEW)
- 就绪状态(RUNNABLE)
- 运行状态(RUNNING)
- 阻塞状态(BLOCKED)
- 线程死亡(DEAD)
- 终止线程4种方式
- start与run区别
- 什么是乐观锁
- 什么是悲观锁
- 什么是自旋锁
- Synchronized同步锁
- ReentrantL ock
- Condition类和Object类锁方法区别区别
- tryLock和lock和lockInterruptibly的区别
- Semaphore信号量
- Semaphore与ReentrantLock区别
- 可重入锁(递归锁)
- 公平锁与非公平锁
- ReadWriteLock读写锁
- 共享锁和独占锁
- 重量级锁(Mutex Lock)
- 轻量级锁
- 偏向锁
- 分段锁
- 锁优化
- 线程基本方法
- 线程等待(wait)
- 线程睡眠(sleep)
- 线程让步(yield)
- 线程中断(interrupt)
- Join等待其他线程终止
- 为什么要用join0方法?
- 线程唤醒(notify)
- 线程其他方法
- 进程
- 上下文
- 线程与进程的区别?
- 什么是多线程中的上下文切换?
- 死锁与活锁的区别,死锁与饥饿的区别?
- Java中用到的线程调度算法是什么?
- 什么是线程组,为什么在Java中不推荐使用?
- 为什么使用Executor框架?
- 在Java中Executor和Executors的区别?
- 如何在Windows和Linux.上查找哪个线程使用的CPU时间最长?
- 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?
- Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它有什么优势?
- 什么是Executors框架?
- 什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者消费者模型?
- 什么是Callable和Future?
- 什么是FutureTask?使用ExecutorService启动任务。
- 什么是并发容器的实现?
- 多线程同步和互斥有几种实现方法,都是什么?
- 什么是竞争条件?你怎样发现和解决竞争?
- 为什么我们调用start0方法时会执行run()方法,为什么我们不能直接调用run()方法?
- Java中你怎样唤醒一 个阻塞的线程?
- 在Java中CycliBarriar和CountdownLatch有什么区别?
- 什么是不可变对象,它对写并发应用有什么帮助
- Java中用到的线程调度算法是什么?
- 什么是线程组,为什么在Java中不推荐使用?
面试题解析
MongoDB(玖拾伍题)
知识点整理
概念
面试题
- mongodb是什么?
- mongodb有哪些特点?
- 你说的NoSQL数据库是什么意思?NoSQL与RDBMS直接有什么区别?为什么要使用和不使用NoSQL数据库?说一说NoSQL数据库的几个优点?
- NoSQL数据库有哪些类型?
- MySQL与MongoDB之间最基本的差别是什么?
- 你怎么比较MongoDB. CouchDB及CouchBase?
- MongoDB成为最好NoSQL数据库的原因是什么?
- journal回放在条目(entry)不完整时比如恰巧有一个中途故障了)会遇到问题吗?
- 分析器在MongoDB中的作用是什么?
- 名字空间(namespace)是什么?
- 如果用户移除对象的属性,该属性是否从存储层中删除?
- 能否使用日志特征进行安全备份?
- 允许空值nul吗?
- 更新操作立刻fsync到磁盘?
- 如何执行事务/加锁?
- 为什么我的数据文件如此庞大?
- 启用备份故障恢复需要多久?
- 什么是master或primary?
- 什么是secondary或slave?
- 我必须调用getLastError来确保写操作生效了么?
- 我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB环境?
- 分片(sharding)和复制(replication)是怎样工作的?
- 数据在什么时候才会打展到多个分片(shard)里?
- 当我试图更新一个正在被迁移的块(chunk). 上的文档时会发生什么?
- 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?
- 我可以把moveChunk目录里的旧文件删除吗?
- 我怎么查看Mongo正在使用的链接?
- 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?
- getLastError的作用
- 分片(sharding) 和复制(replication) 是怎样工作的?
- 数据在什么时候才会扩展到多个分片(shard) 里?
- 当我试图更新一个正在被迁移的块(chunk).上的文档时会发生什么?
- 我怎么查看Mongo正在使用的链接?
- mongodb的结构介绍
- 数据库的整体结构
- MongoDB是由哪种语写的
- MongoDB的优势有哪些
- 什么是集合
- 什么是文档
- 什么是"mongod"
- "mongod"参数有什么
- 什么是"mongo"
- MongoDB哪个命令可以切换数据库
- 什么是非关系型数据库
- 非关系型数据库有哪些类型
- 为什么用MOngoDB?
- 在哪些场景使用MongoDB
- MongoDB中的命名空间是什么意思?
- 哪些语言支持MongoDB?
- 在MongoDB中如何创建一个新的数据库
- 在MongoDB中如何查看数据库列表
- MongoDB中的分片是什么意思
- 在MongoDB中如何创建一个集合。
- 在MongoDB中如何查看一个已经创建的集合
- 在MongoDB中如何删除一个集合
- 为什么要在MongoDB中使用分析器
- MongoDB支持主键外键关系吗
- MongoDB支持哪些数掘类型
- 为什么要在MongoDB中用"Code数据类型
- 为什么要在MongoDB中用Regular Expession数据类型
- 为什么在MongoDB中使用"Object ID"数据类型
面试题解析
RabbitMQ(叁拾贰题)
知识点整理
概念
Exchange类型
面试题
- 什么是rabbitmq
- 为什么要使用rabbitmq
- 使用rabbitmq的场景
- 如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息?
- 如何避免消息重复投递或重复消费?
- 消息基于什么传输?
- 消息如何分发?
- 消息怎么路由?
- 如何确保消息不丢失?
- 使用RabbitMQ有什么好处?
- RabbitMQ的集群
- mq的缺点
- Kafka. ActiveMQ、 RabbitMQ. RocketMQ 都有什么区别?
- 如何保证高可用的?
- 如何保证消息的可靠传输?如果消息丢了怎么办
- 如何保证消息的顺序性
- 设计MQ的思路
- 什么是Message?
- 什么是Publisher ?
- 什么是Exchange (将消息路由给队列)
- 什么是Binding (消息队列和交换器之间的关联)
- 什么是Queue?
- 什么是Connection ?
- 什么是Channel?
- 什么是Consumer ?
- 什么是Virtual Host ?
- 什么是Broker?
- Exchange型?
- Direct键(routing key)分布?
- Fanout (广播分发) ?
- topic交换器(模式匹配) ?
面试题解析
Dubbo(肆拾题)
面试题
- 为什么要用Dubbo?
- Dubbo的整体架构设计有哪些分层?
- 默认使用的是什么通信框架,还有别的选择吗?
- 服务调用是阻塞的吗?
- 一般使用什么注册中心? 还有别的选择吗?
- 默认使用什么序列化框架,你知道的还有哪些?
- 服务提供者能实现失效踢出是什么原理?
- 服务上线怎么不影响旧版本?
- 如何解决服务调用链过长的问题?
- 同一个服务多个注册的情况下可以直连某-个服务吗?
- 画一画服务注册与发现的流程图?
- Dubbo集群容错有几种方案?
- Dubbo服务降级,失败重试怎么做?
- Dubbo使用过程中都遇到了些什么问题?
- Dubbo Monitor实现原理?
- Dubbo用到哪些设计模式?
- Dubbo配置文件是如何加载到Spring中的?
- Dubbo SPI和Java SPI区别?
- Dubbo支持分布式事务吗?
- Dubbo可以对结果进行缓存吗?
- 服务上线怎么兼容旧版本?
- Dubbo必须依赖的包有哪些?
- Dubbo telnet命令能做什么?
- Dubbo支持服务降级吗?
- Dubbo如何优雅停机?
- Dubbo和Dubbox之间的区别?
- Dubbo和Spring Cloud的区别?
- 你还了解别的分布式框架吗?
- Dubbo是什么?
- Dubbo默认使用什么注册中心,还有别的选择吗?
- Dubbo有哪几种配置方式?
- Dubbo支持分布式事务吗?
- Dubbo支持服务降级吗?
- Dubbo如何优雅停机?
- 服务提供者能实现失效踢出是什么原理?
- 如何解决服务调用链过长的问题?
- 服务读写推荐的容错策略是怎样的?
- Dubbo必须依赖的包有哪些?
- Dubbo的管理控制台能做什么?
- 说说Dubbo服务暴露的过程。
- Dubbo停止维护了吗?
- Dubbo和Dubbox有什么区别?
- 你还了解别的分布式框架吗?
- Dubbo能集成Spring Boot吗?
- 在使用过程中都遇到了些什么问题?
- 你读过Dubbo的源码吗?
- 你觉得用Dubbo好还是Spring Cloud好?
面试题解析
MyBatis(贰拾捌题)
知识点整理
Mybatis缓存Mybatis中有一级缓存和二级缓存,默认情况下一级缓存是开启的,而且是不能关闭的。一级缓存是指SqISession级别的缓存,当在同一个SqlSession中进行相同的SQL语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取,一级缓存最多缓存 1024条SQL。二级缓存是指可以跨SqlSession的缓存。是mapper级别的缓存,对于mapper级别的缓存不同的sqlsession是可以共享的。
面试题
- 什么是Mybatis?
- Mybaits的优点
- MyBatis框架的缺点
- MyBatis框架适用场台
- MyBatis与Hibernate有哪些不同?
- 如何获取自动生成的(主)键值?
- 在mapper中如何传递多个参数?
- Mybatis动态sql有什么用?执行原理?有哪些动态sq|?
- Xml映射文件中,除了常见的selectlinsertlupdaeldelete标签之外, 还有哪些标签?
- Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
- 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
- 一对一、一对多的关联查询?
- MyBatis实现一对一有几种方式?具体怎么操作的?
- MyBatis实现一对多有几种方式怎么操作的?
- Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
- Mybatis的一级、二级缓存
- 什么是MyBatis的接绑定?有哪些实现方式?
- 使用MyBatis的mapper接口调用时有哪些要求?
- Mapper编写有哪几种方式?
- 简述Mybatis的插件运行原理,以及如何编写-个插件。
- MyBatis实现一对一 有几种方式?具体怎么操作的?
面试题解析
ZooKeeper(肆拾玖题)
知识点整理
Zookeeper概念
面试题
- Zookeeper如何保证了分布式一致性特性?
- ZooKeeper提供了什么?
- Zookeeper文件系统
- ZAB协议?
- 四种类型的数据节点Znode
- Zookeeper Watcher机制-数据变更通知
- 客户端注册Watcher实现
- 服务端处理Watcher实现
- ACL权限控制机制
- Chroot特性
- 会话管理
- 服务器角色
- Zookeeper下Server工作状态
- 数据同步
- zookeeper是如何保证事务的顺序一致性的?
- zk节点宕机如何处理?
- zookeeper负戴均衡和nginx负戴均衢区别
- 分布式集群中为什么会有Master?
- Zookeeper有哪几种几种部署模式?
- 集群最少要几台机器,集群规则是怎样的?
- 集群支持动态添加机器吗?
- Zookeeper集群管理(文件系统、通知机制) **
- Zookeeper分布式锁(文件系统、通知机制*)
- Zookeeper队列管理(文件系统、通知机制)
- Zookeeper角色
- 务编号Zxid (事务请求计数器+ epoch)
- epoch
- Zab协议有两种模式恢复模式(选主) .广擢模式(同步)
- Leader election (选举阶段选出准Leader)
- Discovery (发现阶段接受提议、生成epoch.接受epoch)
- Synchronization (同步阶段-同步follower副本)
- Broadcast (广播阶段-leader消息广播)
- ZAB协议JAVA实现(FLE-发现阶段和同步台并为Recovery Phase (恢复阶段) )
- 投票机制
- Zookeeper工作原理(原子广播)
- Znode有四种形式的目录节点.
面试题解析
数据结构(玖题)
面试题
- 栈(stack) ;
- 队列(queue)
- 链表(Link)
- 散列表(Hash Table)
- 排序二叉树
- 前缀树
- 红黑树
- B-TREE
- 位图
面试题解析
算法(贰拾壹题)
知识点整理
二分查找
剪枝算法
面试题
- 数据里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组(请以代码实现)
- 写出代码判断一个整数是不是2的阶次方(请代码实现,谢绝调用API方法)
- 假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用API方法)
- 有两个篮子,分别为A和B ,篮子A里装有鸡蛋,篮子B里装有苹果,请用面向对象的思想实现两个篮子里的物品交换(请用代码实现)
- 二分查找
- 冒泡排序算法
- 插入排序算法
- 快速排序算法
- 希尔排序算法
- 归并排序算法
- 桶排序算法
- 基数排序算法
- 剪枝算法
- 回溯算法
- 最短路径算法
- 最小生成树算法
- AES
- RSA
- CRC
- MD5
面试题解析
Elasticsearch(贰拾肆题)
面试题
- elasticsearch了解多少。说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段。
- elasticsearch的倒排索引是什么
- elasticsearch索引数据多了怎么办,如何调优,部署
- elasticsearch是如何实现master选举的
- 详细描述一下Elasticsearch索弓|文档的过程
- 详细描述一下 Elasticsearch搜索的过程?
- Elasticsearch在部署时,对Linux的设置有哪些优化方法
- lucence内部结构是什么?
- Elasticsearch是如何实现Master选举的?
- 详细描述一下Elasticsearch 索引文档的过程。
- 详细描述一下 Elasticsearch更新和删除文档的过程。
- 详细描述一下Elasticsearch搜索的过程
- 在Elasticsearch中,是怎么根据-个词找到对应的倒排索引的?
- Elasticsearch在部署时,对Linux的设置有哪些优化方法?
- 对于GC方面,在使用Elasticsearch时要注意什么?
- Elasticsearch对于大数据量( 上亿量级)的聚合如何实现?
- 在并发情况下,Elasticsearch 如果保证读写-致?
- 如何监控Elasticsearch集群状态?
- 介绍下你们电商搜索的整体技术架构
- 介绍一下你们的个性化搜索方案?
- 是否了解字典树?
- 拼写纠错是如何实现的?
面试题解析
Kafka(贰拾伍题)
知识点整理
Kafka概念:Kafka是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由LinkedIn 公司开发,使用Scala语言编写,目前是Apache的开源项目。
面试题
- Kafka是什么
- partition的数据文件(offset, MessageSize, data)
- 数据文件分段segment (顺序读写.分段命令、二分查找)
- 负载均衡(partition 会均衡分布到不同broker.上)
- 批量发送
- 压缩(GZIP 或Snappy)
- 消费者设计
- Consumer Group
- 如何获取topic主题的列表
- 生产者和消费者的命令行是什么?
- consumer是推还是拉?
- 讲讲kafka维护消费状态跟踪的方法
- 讲一下主从同步
- 为什么需要消息系统,mysql 不能满足需求吗?
- Zookeeper对于Kafka的作用是什么?
- Kafka判断一个节 点是否还活着有那两个条件?
- Kafka与传统MQ消息系统之间有三个关键区别
- 讲一讲kafka的ack的三种机制
- 消费者如何不自动提交偏移量,由应用提交?
- 消费者故障,出现活锁问题如何解决?
- 如何控制消费的位置
- kafka分布式(不是单机)的情况下,如何保证消息的顺序消费?
- kafka的高可用机制是什么?
- kafka如何减少数据丢失
- kafka如何不消费重复数据?比如扣款,我们不能重复的扣。
面试题解析
Linux(肆拾捌题)
面试题
- 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示?切换目录用什么命令?
- 怎么查看当前进程?怎么执行退出?怎么查看当前路径?
- 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当
- Ls命令执行什么功能?可以带哪些参数,有什么区别?
- 查看文件有哪些命令
- 列举几个常用的Linux命令
- 你平时是怎么查看日志的?
- 建立软链接(快捷方式),以及硬链接的命令
- 目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
- 查看文件内容有哪些命令可以使用?
- 随意写文件命令?怎么向屏幕输出带空格的字符串,比如"hello world"?
- 终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
- 移动文件用哪个命令?改名用哪个命令?
- 复制文件用哪个命令?如果需要连同文件夹-块复制呢? 如果需要有提示功能呢?
- 删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢? 删除空文件夹用什么命令?
- Linux下命令有哪几种可使用的通配符?分别代表什么含义?
- 用什么命令对一个文件的内容进行统计? (行号.单词数、字节数)
- Grep命令有什么用?如何忽略大小写?如何查找不含该串的行?
- Linux中进程有哪几种状态?在ps显示出来的信息中分别用什么符号表示的?
- 怎么使一个命令在后台运行?
- 利用ps怎么显示所有的进程?怎么利用ps查看指定进程的信息?
- 哪个命令专用来查看后台任务?
- 把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
- 终止进程用什么命令?带什么参数?
- 怎么查看系统支持的所有信号?
- 搜索文件用什么命令?格式是怎么样的?
- 查看当前谁在使用该主机用什么命令?查找自己所在的终端信息用什么命令?
- 使用什么命令查看用过的命令列表?
- 使用什么命令查看磁盘使用空间?空闲空间呢?
- 怎么对命令进行取别名?
- du和df的定义,以及区别?
- awk详解。
- 当你需要给命令绑定一个宏或者按键的时候, 应该怎么做呢?
- 如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?
- 如果你的助手想要打印出当前的目录栈,你会建议他怎么做?
面试题解析
由于内容涉及到的知识点实在太多,小编就不一一展示给大家了,这两份【Java架构师面试宝典】【Java架构师修行宝典】文档分别为227页、283页,需要完整版的朋友,可以点赞此文关注小编,【见下图步骤】免费获取!!
最后总结
在找工作的时候,除了做些相关面试和准备熟悉以前做的项目之外,还应该学习新的知识。毕竟,每多学一点,成功找到工作的机会就大一点。而且,IT这行,技术发展过于快速,如果没有学习新知识的动力,终究会被淘汰。
因为学习实在是很枯燥无味。学习是一个长期投资,短期很难道看到收益,而娱乐是一项短期投资,短时间便可以看到收益。所以学习这块最好可以给自己定一个目标,每天学习一点,慢慢的会达到的。如果没有动力的话,可以给自己设置奖励。这是可以激发学习的兴趣的。
还有一点,今天能做完的事情,绝对不要留给明天。毕竟,人都是有惰性的。你要相信你自己,今天的你能做的没有做,明天的你也不会做的。