专科学生自学Java半年,直接拿下12K的offer,运气真的也是很重要!

前言

通过这个故事我希望学弟们不要像我一样,等到临近毕业后才醒悟要学习知识学习技术的重要性,能趁早尽量要趁早,过去应该做的事情没有去做,后面都需要你加倍补回来。

我是一个二本院校,专业是机械工程,当时以为考上了大学就可以高枕无忧放开了玩,可以说我整个大学期间都是打LOL过来的。到了大四才发现,同学们都陆续去找了实习,有的做机械工作,有的在大三的时候就自学了Java或者web前端技术,然后他们通过秋招找到了一份实习的工作,实习的工资基本都在5K左右。从那个时候我开始慌了,但还是没有具体的行动,一直拖到了去年的8月份,也就是大四的上学期,这个时候学校已经要求我们实习,很多就到了毕业的时间。

从去年8月份我开始自学Java,因为要面临就业,我这个机械专业的很多同学都是转行学习的软件开发,他们说这行发展的比较好,信息软件技术以后的空间会更大,各种薪资待遇也都不错。有的人建议我去学Java,说Java的岗位需求是最大的,一二三城市都可以就业。我从去年8月份自学Java到现在就业一共是用了7个月左右的时间,现在是在重庆的一家软件公司做产品的维护,技术部大约是50多人。薪资是12K,五险一金。我觉得自己还算幸运,毕竟大学荒废了那么多时间,临阵磨枪毕业还能找到一份月入过万的工作,真的是运气爆棚。所以我想告诉大家什么时候学习都不晚,但一定是越早越好。

给学弟的忠实建议:

出了社会才知道钱能挣屎难吃,在学校混日子过来的人,没有一个不后悔的。当你有一天在这个社会生存都成了问题的时候,你会发现自己所有的一切都是灰暗的,穷生奸计富长良心,我体会到了这句话的含义。所以奉劝那些还在上学的学弟们,抓紧在学校的日子学会一个顺应这个时代发展的技术,选择一个有发展空间的行业,毕业后能找到一份不错的工作,可以让自己有较高的起点,然后不断的向上发展。

Java心得

1、 千万别自己一个人闭门造车

不要认为自己可以解决所有问题,学习编程很抽象,尤其是在刚开始学的时候,很多时候你是无从下手的,所以我建议大家一定要懂得借力,找一些学的比较好的同学,或者你认识的朋友带带你,有人真的是事半功倍,效率会提高非常多,25套面试资料+Java核心学习笔记共享!

JavaOOP面试题

  1. Object类常用方法有那些?
  2. java中是值传递引用传递?
  3. 形参与实参区别
  4. 构造方法能不能重写?能不能重载?
  5. 内部类与静态内部类的区别?
  6. Static关键字有什么作用?
  7. final在java中的作用,有哪些用法?
  8. String str=”aaa”,与String str=new String(“aaa”)一样吗?
  9. 讲下java中的math类有那些常用方法?
  10. Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
  11. 什么是拆装箱?
  12. Java中的包装类都是那些?
  13. 一个java类中包含那些内容?
  14. 那针对浮点型数据运算出现的误差的问题,你怎么解决?

Java集合/泛型面试题

  1. 集合类存放于 Java.util 包中, 主要有几 种接口
  2. 什么是list接口
  3. 说说ArrayList(数组)
  4. Vector( 数组实现、 线程同步)
  5. 说说LinkList(链表)
  6. 什么Set集合
  7. HashSet( Hash 表)
  8. 什么是TreeSet(二叉树)
  9. List 和 Map、Set 的区别?
  10. 数组和链表分别比较适合用于什么场景,为什么?
  11. 说说ConcurrentHashMap
  12. Java中ArrayList和LinkedList区别?
  13. TreeMap(可排序)
  14. 请用两个队列模拟堆栈结构?
  15. Map中的key和value可以为null?
  16. 数据结构基础之双向链表

Java异常面试题

  1. finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
  2. Excption与Error包结构
  3. Thow与thorws区别
  4. Error与Exception区别?
  5. error和exception有什么区别
  6. final、finally、finalize 的区别?
  7. Java 异常处理机制的理解?
  8. 说出最常见的5个RuntimeException?
  9. throw 和 throws 的区别?
  10. JAVA 中Exception和Error 面试问题
  11. 在Java异常处理的过程中,你遵循的那些最好的实践是什么?
  12. throw 和 throws这两个关键字在java中有什么不同?
  13. 你曾经自定义实现过异常吗?怎么写的?
  14. 你遇到过 OutOfMemoryError 错误嘛?你是怎么搞定的?
  15. Java中的异常处理机制的简单原理和应用。

Java中的IO与NIO面试题

  1. 如何实现对象克隆?
  2. 异步 IO 模型
  3. 什么是 java 序列化,如何实现 java 序列化?
  4. NIO 的缓冲区
  5. 面向Stream和面向Buffer
  6. Channel
  7. NIO和IO对应用的设计有何影响
  8. Selector
  9. Java IO与 NIO的区别
  10. 字节流与字符流的区别
  11. 非阻塞 IO 模型
  12. 信号驱动 IO 模型
  13. NIO 的非阻塞
  14. Buffer
  15. AVA NIO

Java反射面试题

  1. Java 反射 API
  2. 如何使用Java的反射?
  3. 获取 Class 对象有几种方法
  4. 除了使用new创建对象之外,还可以用什么方法创建对象?
  5. java反射的作用
  6. 反射的实现方式:
  7. 反射使用步骤(获取 Class 对象、调用对象方法)

Java序列化面试题

  1. Serializable 实现序列化
  2. 序列化 ID
  3. 序列化用户远程对象传输
  4. writeObject 和 readObject 自定义序列化策略
  5. 序列化并不保存静态变量
  6. 序列化(深 clone 一中实现)
  7. Transient 关键字阻止该变量被序列化到文件中
  8. 如何实现java序列化?
  9. Transient 关键字阻止该变量被序列化到文件中
  10. 静态变量的序列化?

Java注解面试题

  1. 从标准库中描述一些有用的注释。
  2. 注解是什么?
  3. 可以从注释方法声明返回哪些对象类型?
  4. 哪些程序元素可以注释?
  5. 有没有办法限制可以应用注释的元素?
  6. 什么是元注释?
  7. 什么是重复注释?
  8. 你怎么能检索注释?这与保留政策有何关系?
  9. 是否可以扩展注释?

多线程&并发面试题

  1. 实现多线程 Thread 和 Runnable区别?
  2. 解释java中的volatile变量
  3. notify()和notifyAll()有什么区别?
  4. sleep()和wait() 有什么区别?
  5. volatile 是什么?可以保证有序性吗?
  6. Thread 类中的start() 和 run() 方法有什么区别?
  7. 为什么wait, notify 和 notifyAll这些方法不在thread类里面?
  8. 共享锁和独占锁
  9. Java中interrupted 和 isInterruptedd方法的区别?
  10. 有三个线程T1,T2,T3,如何保证顺序执行?

JVM面试题

  1. 32 位和 64 位的 JVM,int 类型变量的长度是多数?
  2. JAVA8 与元数据
  3. 分代收集算法
  4. 怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?
  5. 分代收集算法
  6. 虚拟机栈(线程私有)
  7. 分代收集算法
  8. 你能保证 GC 执行吗?
  9. 怎么获取 Java 程序使用的内存?堆使用的百分比?
  10. 在老年代-标记整理算法
  11. 堆和栈的区别
  12. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

Mysql面试题

  1. Memory
  2. myisamchk 是用来做什么的?
  3. MyISAM 表格将在哪里存储,并且还提供其存储格式?
  4. 常见索引原则有
  5. 如何显示前 50 行?
  6. 锁的优化策略
  7. SQL优化
  8. 为表中得字段选择合适得数据类型
  9. 什么是视图
  10. 什么情况下设置了索引但无法使用
  11. 并发事务带来哪些问题?
  12. 什么是乐观锁、悲观锁、时间戳、行级锁、表级锁、页级锁

Redis面试题

  1. Redis 相比 Memcached 有哪些优势?
  2. Memcache 与 Redis 的区别都有哪些?
  3. Redis 回收进程如何工作的?
  4. 一个字符串类型的值能存储最大容量是多少?
  5. Redis 的内存用完了会发生什么?
  6. 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
  7. 一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素
  8. Redis 集群之间是如何复制的?
  9. redis的数据类型,以及每种数据类型的使用场景
  10. redis的过期策略以及内存淘汰机制
  11. Redis 集群最大节点个数是多少?
  12. 为什么Redis的操作是原子性的,怎么保证原子性的?
  13. 为什么 edis 需要把所有数据放到内存中?
  14. Redis 是一个基于内存的高性能key-value数据库。
  15. Reids常用5种数据类型
  16. Reids6种淘汰策略:
  17. Redis前端启动命令
  18. Redis 的主从复制

Memcached面试题

  1. 如何使用memcached的多线程是什么?如何使用它们?
  2. memcached能接受的key的最大长度是多少?(250bytes)
  3. memcached对item的过期时间有什么限制?(为什么有30天的限制?)
  4. memcached最大能存储多大的单个item?(1M byte)
  5. 为什么单个item的大小被限制在1M byte之内?
  6. 为了让memcached更有效地使用服务器的内存,可以在各个服务器上配置大小不等的缓存空间吗?
  7. 什么是binary协议?它值得关注吗?
  8. 究竟为什么使用slab呢?
  9. memcached能保证数据存储的原子性吗?

MongoDB面试题

  1. NoSQL数据库有哪些类型?
  2. 你怎么比较MongoDB、CouchDB及CouchBase?
  3. MongoDB成为最好NoSQL数据库的原因是什么?
  4. MySQL与MongoDB之间最基本的差别是什么?
  5. journal回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?
  6. 分析器在MongoDB中的作用是什么?
  7. 名字空间(namespace)是什么?
  8. 如何执行事务/加锁?
  9. NoSQL与RDBMS直接有什么区别?
  10. 为什么要使用和不使用NoSQL数据库?
  11. 说一说NoSQL数据库的几个优点?

String面试题

25套专题Java面试答案

Spring Boot面试题

  1. String 是可变的话?
  2. Spring Framework 有哪些不同的功能?
  3. 怎么比较两个字符串的值一样,怎么比较两个字符串是否同一对象?
  4. 什么是 Spring 配置文件?
  5. Spring 应用程序有哪些不同组件?
  6. 使用 Spring 有哪些方式?
  7. String.trim()方法去掉的是哪些字符?
  8. 可以自定义 java.lang.String 类并使用吗?
  9. spring 中有多少种 IOC 容器?
  10. 区分 BeanFactory 和 ApplicationContext。
  11. spring 支持集中 bean scope?
  12. 什么是 spring 的内部 bean?
  13. 什么是 spring 装配
  14. spring bean 容器的生命周期是什么样的?
  15. 列举 Spring DAO 抛出的异常。
  16. @Qualifier 注解有什么用?
  17. @Autowired 注解有什么用?
  18. spring DAO 有什么用?

Spring Cloud面试题

  1. 什么是 Hystrix 断路器?我们需要它吗?
  2. 什么是 Hystrix?它如何实现容错?
  3. 什么是 Netflix Feign?它的优点是什么?
  4. 什么是服务熔断?什么是服务降级
  5. Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
  6. 什么是微服务
  7. 什么是Hystrix断路器?我们需要它吗
  8. spring cloud 和dubbo区别?
  9. SpringBoot和SpringCloud的区别?
  10. spring cloud 和dubbo区别?
  11. REST 和RPC对比
  12. 你所知道的微服务技术栈?

RabbitMQ面试题

  1. 为什么要使用 rabbitmq
  2. 消息如何分发?
  3. 如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?
  4. 消息怎么路由?
  5. 如何确保消息不丢失?
  6. 消息基于什么传输?
  7. 如何保证消息的顺序性
  8. Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别?
  9. Fanout(广播分发)?
  10. 如何保证高可用的?
  11. mq 的缺点
  12. 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决
  13. RabbitMQ 的集群

Dubbo 面试题

  1. Dubbo 和 Spring Cloud 有什么区别?
  2. 一般使用什么注册中心?还有别的选择吗?
  3. dubbo都支持什么协议,推荐用哪种?
  4. 服务提供者能实现失效踢出是什么原理?
  5. Dubbo 的整体架构设计有哪些分层?
  6. 如何解决服务调用链过长的问题?
  7. 说说核心的配置有哪些?
  8. Dubbo 推荐用什么协议?
  9. Dubbo Monitor 实现原理?
  10. Dubbo 用到哪些设计模式?
  11. Dubbo 配置文件是如何加载到 Spring 中的?
  12. 服务调用是阻塞的吗?

MyBatis 面试题

  1. 什么是 Mybatis?
  2. MyBatis实现一对一有几种方式?具体怎么操作的?
  3. MyBatis 框架的缺点
  4. MyBatis实现一对多有几种方式,怎么操作的?
  5. MyBatis 与 Hibernate 有哪些不同?
  6. 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?
  7. 使用MyBatis的mapper接口调用时有哪些要求?
  8. 在 mapper 中如何传递多个参数?
  9. 简述Mybatis的插件运行原理,以及如何编写一个插件。
  10. MyBatis编程步骤是什么样的?

ZooKeeper 面试题

  1. zookeeper的数据结构(树)? 讲一下基于它实现的分布式锁?基于它实现的Master选举?基于它的集群管理?zookeeper的注册(watch)机制和轮询机制的使用场景?
  2. ZooKeeper 提供了什么?
  3. 讲一下如何用 zookeeper 实现分布式锁
  4. Zookeeper的同步过程,写操作流程,读操作流程
  5. ZK 的部署方式有哪几种?集群中的角色有哪些?集群中最少需要几台机器
  6. 客户端注册 Watcher 实现
  7. 服务端处理 Watcher 实现
  8. 客户端回调 Watcher
  9. 数据同步
  10. Zookeeper 下 Server 工作状态
  11. zk 节点宕机如何处理?
  12. zookeeper 是如何保证事务的顺序一致性的?
  13. 分布式集群中为什么会有 Master?
  14. zookeeper 负载均衡和 nginx 负载均衡区别
  15. Chroot 特性
  16. 集群最少要几台机器,集群规则是怎样的?
  17. 集群支持动态添加机器吗?

数据结构面试题

  1. 栈(stack)
  2. 排序二叉树
  3. 前缀树
  4. 红黑树
  5. 散列表(Hash Table)
  6. B-TREE
  7. 位图
  8. 链表(Link)
  9. 栈和队列的共同特点是?
  10. 栈通常采用的两种存储结构是?
  11. 用链表表示线性表的优点是?
  12. 增加头结点的目的是?

算法面试题

  1. 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
  2. 在神经网络训练过程中,为什么会出现梯度消失的问题?如何防止?
  3. 二分查找
  4. 冒泡排序算法、插入排序算法、快速排序算法、希尔排序算法、归并排序算法
  5. K-Means或KNN中,通常使用欧式距离来表示最近的数据点之间的距离,有时候也使用曼哈度距离,对比两者的区别。
  6. 参数模型与非参数模型
  7. 生成模型与判别模型
  8. RSA
  9. CRC
  10. 最短路径算法
  11. 有两个篮子,分别为A 和 B,篮子A里装有鸡蛋,篮子B里装有苹果,请用面向对象的思想实现两个篮子里的物品交换(请用代码实现)

Elasticsearch 面试题

  1. elasticsearch 的倒排索引是什么
  2. elasticsearch 是如何实现 master 选举的
  3. 详细描述一下 Elasticsearch 搜索的过程?
  4. Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
  5. Elasticsearch 中的节点(比如共 20 个),其中的 10 个选了一个 master,另外 10 个选了另一个 master,怎么办?
  6. lucence 内部结构是什么?
  7. 客户端在和集群连接时,如何选择特定的节点执行请求的?
  8. 在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?
  9. Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
  10. 对于 GC 方面,在使用 Elasticsearch 时要注意什么?
  11. 拼写纠错是如何实现的?
  12. 详细描述一下 Elasticsearch 索引文档的过程。

Kafka 面试题

  1. partition 的数据文件(offset, MessageSize, data)
  2. 消费者设计
  3. 批量发送
  4. Consumer Group
  5. 如何获取 topic 主题的列表
  6. 生产者和消费者的命令行是什么?
  7. 负载均衡(partition 会均衡分布到不同 broker 上)
  8. consumer 是推还是拉?
  9. Zookeeper 对于 Kafka 的作用是什么?
  10. Kafka 判断一个节点是否还活着有那两个条件?
  11. 为什么需要消息系统,mysql 不能满足需求吗?
  12. 讲讲 kafka 维护消费状态跟踪的方法
  13. 消费者如何不自动提交偏移量,由应用提交?
  14. 消费者故障,出现活锁问题如何解决?

微服务 面试题

  1. 单片,SOA 和微服务架构有什么区别?
  2. 微服务有哪些特点?
  3. 微服务架构如何运作?
  4. 在使用微服务架构时,您面临哪些挑战?
  5. 微服务架构的优缺点是什么?
  6. 微服务有什么特点?
  7. 什么是领域驱动设计?
  8. SOA 和微服务架构之间的主要区别是什么?
  9. 为什么需要域驱动设计(DDD)?
  10. 你对 Spring Boot 有什么了解?
  11. 什么是 REST / RESTful 以及它的用途是什么?
  12. 什么是 Spring 引导的执行器?
  13. 什么是 Spring Cloud?
  14. Spring Cloud 解决了哪些问题?
  15. 什么是有界上下文?

Linux面试题

  1. 列举几个常用的Linux命令
  2. 怎么对命令进行取别名?
  3. 建立软链接(快捷方式),以及硬链接的命令
  4. 当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
  5. 查看文件内容有哪些命令可以使用?
  6. 随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
  7. 你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
  8. 移动文件用哪个命令?改名用哪个命令?
  9. 复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
  10. 怎样一页一页地查看一个大文件的内容呢?
  11. Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
  12. 用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
  13. Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
  14. 你平时是怎么查看日志的?
  15. 终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?

2、 工欲利其事,必先利其器

在确定了要学习Java前,你一定要有一个非常完整的Java技术栈的大纲体系以及还不错的学习教程,如果我们连一套完整的学习教程都没有,根本不可能学会Java。而很多人在开始时用的教程非常老,很多技术都已经过时,企业并不用这些技术,所以学了也是白耽误工夫。

3、 实践是检验真理的唯一标准

学习编程一定要记得多动手写代码,视频只需要看一两遍即可。有很多同学不懂得如何学习编程,盲目无脑的一直刷视频看,但你看完视频后很快就会忘记,其实是在浪费你的时间。学习编程的主要目的是能做出好的互联网软件产品。这是一个需要动手的工作,所以我们学编程一定要注重动手写代码。而很多人学习编程都是只看视频,这样的学习方式是非常错误的,所以大家对于这点一定要牢记在心。

4、 项目实战

项目作品是展现我们水平的重要因素,我们在学完一个阶段后,一定要记得针对这个阶段去完成一个项目实战。真正能让我们印象深刻,加深理解的学习方式就是参与到项目的开发中。项目才能检验我们这个阶段到底学的怎么样,所以大家在学习的过程中切记项目的重要性,很多人学习Java最后却不能独立完成一个项目模块,如果你达不到这个水平,那么你是不可能找到Java开发工作的。25套面试资料+Java核心学习笔记共享!

新手学习Java的误区

1.没有详细系统的学习规划,越学越迷茫,不知道应该往哪里走,特别有想放弃的想法。

2.学习的技术并不是现在企业需要的技术,跟不上时代,不具备竞争力。

3.学习效率非常低,遇到一个小问题解决起来很费时间,甚至有的时候会卡几个小时,导致信心受挫,对自己适不适合产生怀疑。

4.没有掌握学习Java的方法和技巧,导致走的弯路特别多,钻进程序的死胡同出不来。

如果你也有以上的学习困惑,觉得自己无从下手,学习的效率很低,学了后面就把前面的忘记这些问题,基本都是因为自己的学习方法不对。所以我建议你一定要找有经验的人多沟通,这些问题都是可以得到很好解决的。

我之所以可以找到12K的工作,真的是得到了很多大佬的帮助,自己一个人自学编程真的太难。

小技巧分享

1、基础很重要,不要盲目的追求新技术,往往决定着你思维深度而又被你忽略的就是你的基础!

2、多动手敲代码,有时电脑就和女朋友一样,它和你想的总是有差异的!

3、多百度,多搜索,百度会帮你解决掉百分之九十以上的问题!

4、多思考,急于动手写代码是大忌,熬夜写代码效率并不高。

总结

有任何问题随时私聊我,希望我的学习经验可以帮助到你,多结交一个圈子内的大佬,方便以后创业,毕竟一辈子给人打工是没有止境的。

posted @ 2021-06-15 19:29  麒麟改bug  阅读(211)  评论(0编辑  收藏  举报