Java 刷题11-6


坐标苏州,双非本科,专业环境工程,之前没有任何编程经验,历经一年努力,终于在春招拿到心仪的offer。成功转行JAVA后端工程师。

由于转行时间较晚,2018年4月初正式开始接触编程。在此之前,没有参加过有关计算机的竞赛,也没有计算机的知识,唯一沾边的是会帮别人修电脑😂。
目前拿到的offer:三七互娱,无锡帆软,上海汉得,cvte(在等结果)以及部分苏州地区的IT公司。
这里简述一下这一年来的学习线路和心得:
4月至4月中旬   学习c语言课本,了解了什么是编程,学会了写简单的c程序。
5月开始学习JAVA,从网上找来培训班视频,学习完了JAVA基础,面向对象,集合,异常,最终能够跟着视频,做出一个飞机大战的项目。
6月开始学习数据结构和算法,刷《算法笔记》的编程题。同时弥补数据结构,看了《大话数据结构》。算法笔记刷了1个月的时间,效果比较差,所有题目看答案,刷过就忘。
7月开始学习JAVA多线程编程和JAVA虚拟机,将《深入学习JAVA虚拟机》看了2-3遍,多线程编程内的基本内容也都完整看过一遍。
7月中旬~8月开始刷leetcode,前后将leetcode中的初级算法和中级算法都完成了一遍(中级算法是实现他人思路)。到了9月上旬,leetcode上实现的算法有150多道。对链表,二叉树,动态规划和回溯算法有了一定的了解。

9月,学习计算机网络,数据库和操作系统(都是非常浅层的学习),根据牛客网上的JAVA面经开始查缺补漏,而我发现:我不知servlet、JDBC、Spring、html、CSS为何物。

由于没有项目经验,我在慕课网上,将SSM实现秒杀商品系统看了2遍以上,写在简历中。

 

秋招:

9月也是正式开始秋招,前后笔试了许多大厂,笔试题目只能A出一道半。结果非常惨烈的,我没有收到任何一家公司的面试邀请。

整个秋招,我都在牛客网上打酱油。看着别人发的面经,我感概我到底什么时候才能走到面试那一步呢?而且发现,大厂秋招也快要结束了,已经基本没有机会了。  当时心灰意冷,有一段时间,不想学习,每天玩滑板,换一换脑子,放松心情。之后玩滑板脚崴了,整整2个礼拜,呆在宿舍没法动弹,于是重新拾起培训班的视频,开始学习计算机基础,跟着培训班视频,弥补了前端知识,JDBC,JAVA web编程项目,也在实现一些小小的项目。

当时对校招的企业没有上心,但厚着脸皮面试了一个外包公司,面试没多久便拿到了offer,可把我激动坏了,发现自己并没有那么菜。

自信心增强之后,我便开始寻找校招企业。凭借着之前复习的内容,先后拿到了苏州地区的许多offer,各种职位都有:科沃斯的c 开发、其他公司的前端开发、外包公司的Java。

11-12月,面试的过程中,也没有忘记学习,先后将spring,hibernate等框架正式学习了一遍。这个时间点,再刷算法题无望,于是将算法弃置一段时间。

12月中旬,互联网寒冬已到,打算春招再继续开战,于是进入苏州的一家互联网企业,她的名字叫:盖雅信息技术有限公司。这家公司的技术氛围太好了,实习过程我一直懵逼,但是同事也是非常热情,不厌其烦地回答我的问题。实习过程,我也算真正接触到了真实的开发项目。实习过程真的学习到了非常多的知识。

这里提醒各位,一定要尽早去实习!!!编程一定要实践,实战环境才能检验你的学习成果。

 

春招:

实习到2月下旬,发现对JAVA知识掌握的比较牢固了,正好学校要开始毕业设计(关于某污水处理厂的工艺设计)。拾起面经,开始对面试的知识考点全面恶补。这里强烈推荐:慕课网的Java面试-offer直通车,他能解决面经上面90%的问题,而且能够梳理你大脑中的知识点。算法方面,将刷过的leetcode整理一遍,刷一刷《剑指offer》。

3月互联网正式开启春招,前后投递了大概50多家公司,最后通过简历筛选,进入笔试面试的企业只有5家(我怀疑是不是我的简历做的太差了,还是直接把我这个双非非科班的简历直接pass掉了)。前前后后跑宣讲会,斩获offer,最终进入互联网行业。

 


 

三七互娱二面 远程视频面试:JAVA游戏端开发。非常有深度   大约50Min 

1.自我介绍:

2.我不是计算机专业的,先从一些计算机常识问题入手:  

3.计算机的结构:硬件和软件,里面的计算机结构

4.计算机网络模型 OSI七层模型的产生

5.操作系统的死锁问题

一个线程持有锁A,访问B,另一个线程持有锁B,访问锁A,则会死锁。

问我会什么,我从JAVA虚拟机入手 

  6.JAVA虚拟机内存模型  :程序计数器,虚拟机栈、本地方法栈、Java堆(具体划分)、方法区

7. 内存泄漏如何解决   用jstat,jstack,jmap各种工具分析

(1.确定频繁full GC现象,找出进程唯一ID,用JPS  2.Jstat查看Full GC频次  3.jmap分析堆文件)

8.谈到了新生代的Eden和survivor区,为什么Eden区不用标记-清除算法: 因为新生代频繁创建对象

9.标记清除算法,复制算法的原理 

10.垃圾回收机制的优劣  :不用手动管理垃圾回收,但是也造成了无法对垃圾进行管控。

11.垃圾回收算法中可达性分析算法原理,什么可以作为GC-roots的引用链

虚拟机栈引用的对象,方法区类静态属性引用的对象,方法区常量引用的对象

就在此时,网络开始变差,我。。。我和面试官失去了联系。

面试官脾气真的好,让我调试成功了再继续。  而且,本来约上午的面试,我当时准备高铁面试,然后就安排到了下午,非常有耐心!

 

多线程编程  刨根问底

JAVA中的线程 

12多线程和单线程的区别: 一个数据集进行排序,使用单线程还是多线程处理,他们的优劣

我谈到了mapReduce,他说是不同主机之间的处理,如果是一台主机,你是选用多线程还是单线程呢?

这个真的把我难倒了。

13多线程编程的好处是什么?   --充分利用并发

14synchronized和reentrantLock的区别     --先说到了自旋锁,锁消除和锁粗化。最后扯到了Unsafe类就谈不下去了

15synchronized的原理和ReentrantLock的原理     问到AQS这一层,已经回答不出来了。

16.synchronized锁对象和锁类的区别(synchronized(A.class)和synchronized(object)  获取对象锁,获取类锁)

主要区别是同一个类的不同对象使用类锁会是同步的。

17.当数据正在更新,如何解决不同线程更新一个变量的问题。  ---使用synchoronized/volatile

18.volatile的内部原理:JMM内存模型,冲刷线程中的缓存。

19.volatile的具体使用场景

 

20.CAS的原理,CAS产生的问题,如何解决,CAS使用场景

21.知道atomic类的原理吗?  聊一聊使用的场景。

聊了这么多,说一下你对哪一方面的知识比较熟悉?

22.提到了线程池中的各种接口

从executor到executorService,ThreadPoolExecutor,Executors,谈到了里面都有哪些方法?

ThreadPoolExecutor的具体工作流程

 

聊到这里已经基本结束,询问了公司的业务和方向,不是偏向大数据。使用的框架大部分都是公司内部的。

最后问面试官我的表现如何,他说基本上问题不大,不知道有没有通过。

最后总结一下:技术官非常喜欢深挖一些你会的知识点,然后不断向下探索,深度挖掘。

一个知识点,真的需要把他的原理搞明白

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值