面试准备

最近工作方面不是很顺利,迫不得已需要找一份新工作,说来实在惭愧!说一说面试之前我都有哪些准备把:

(1)java基础复习,这个是必须的,一笔试肯定完蛋,因为笔试的内容大多都是非常基础琐碎的知识点,我采取的方案就是百度【java基础面试题】,一搜一大推,然后慢慢看呗;

(2)计算机网络相关知识复习,说白了TCP、UDP、HTTP这些东西你知道是啥不,OSI七层模型都有啥,每一层都是干啥的,作为一个java后台服务开发,这是必备的,结果也是很明显,面试的公司笔试题、面试题都在问,特别是TCP;

(3)数据结构算法复习,这个很重要,如果面试官给你出了关于算法的题目,你能在5分钟内,甚至2分钟想出解决思路,这就极大的提高给面试官的好感,也就是说,你这个人思维能力最起码不差把,基础的字符串、数组、链表、栈、队列、二叉树、图遍历(这个比较少)、hash算法等;

(4)java并发编程,这一块就涉及到java难点了,关于如何去理解java中的线程安全操作(原子性,可见性,有序性),然后就是各种锁,各种实现原理,这个真的在于平时的积累,我推荐【java并发编程实战】这本书,对,就是那个白皮的,机械出版社出版的;

(5)java集合框架,对于有过工作经验的人,java中集合框架用的最多无非就是ArrayList、HashSet、HashMap,这些集合类的基本使用,但是这是远远不够的,你还需要知道他们底层是如何实现的,还有这些常用的类都是线程不安全的,所以对于CopyOnWriteArrayList、ConcurrentHashSet、ConcurrentHashMap这些类也是要了解的,一句话,看懂源码你才是真正的掌握,JDK源码写真的好,膜拜大神!!!

(6)常见的Linux命令,作为一个java后台服务开发,linux命令是必备技能,常用的命令自己没事敲一敲,so!阿里云整了个CentOS服务器,装各种软件,Mysql、Tomcat、Nginx、redis、MQServer、Maven、git、jenkins等各种服务,自己搞一搞,常见的命令就记得差不多了,推荐去【菜鸟教程 linux】看一看;

(7)准备一份完美的简历,我目前的简历基本上写的都是公司的项目,看起来还好,蛮充分的,好几个面试官一看我沉甸甸的四页简历,都会说:“项目还是蛮多的吗”,其实把,我觉得简历还是按照自己的实际会的去写,我不是很喜欢包装简历,所以我的简历上写的都是自己OK的内容,难免碰到挑字眼的面试官,对你写技术、项目内容一个一个的提问,还不坑死自己个啊!

总结:

写了7条的准备条件,其中很多都是自己日常积累所得,没有积累,临时突击准备,这时间可就漫长了。

面试过程

从我开始面试,到今天,大概有两周的时间,我已经成功收到3个offer,今天本来还有一个offer能OK的,考虑到我已经确定选择了一家,所以今天的人事面我拒绝了,哈哈,不是我任性,其实也是有原因的,原因就是:我真的想任性一把!

BOOS直聘APP真的很nice,我所有的面试都是在这个APP上来的,很不错的一款APP,在BOOS直聘上,看到别人有发新的工作岗位,关于Java开发的1-3年要求的,我基本上都会去主动进行聊天,希望可以有面试的机会,主动出击很重要,毕竟现在我不是挑公司,而是公司挑我!

或许有些人会说,这样大规模的撒网捕鱼有用吗?我的回答是,效果还可以,起码10家会有一家给我面试的机会,只要能去面试,剩下的就是自己的发挥了,不可否认的是我发挥的还是很不错的,还有就是同学资源很重要,如果自己同学在的公司很不错,进行一下内推成功率会提高很多,感谢同学的内推。

说到这里,很多人关心的是我的面试过程都是有哪些面试问题,我记录了一下我面试过程中遇到的所有的笔试题和面试题,贴在下面,希望可以对大家有小小的帮助吧:

1、java基础

(1)wait() 和 notify() 使用

(2)sleep() 和 wait() 的区别

(3)volatile用处和原理(这个很重要,需要深刻理解Java内存模型把)

(4)HashMap为什么不是线程安全的,底层原理

(5)TCP为什么是三次握手和四次挥手

(6)Synchronized作用,底层实现原理

(7)分布式锁怎么实现,使用Zookeeper

(8)redis的数据类型有哪些,存储方式有哪些

(9)JVM中的新生代,老年代问题,常见的JVM参数

(10)GC都有哪些算法,详细说一说

(11)tomcat目录有哪些,分别有什么作用

(12)数据库连接池技术

(13)java转发和重定向的区别

(14)对于java并发编程的理解,常用的线程池举例说明

(15)说一说对NIO的理解,BIO、NIO、AIO的区别有哪些

(16)手写一个单例,饿汉式和懒汉式(记得考虑线程安全问题)

2、数据库

(1)mysql的数据库引擎有哪些,之间的区别是什么

(2)mysql的索引了解如何,在哪些情况下索引不生效

(3)对于常见SQL的优化,怎么做的

(4)将一个有几十万条数据的Excel表格数据导入到数据库中,sql批量插入

3、数据结构算法题

其实这些算法不是特别的难,但是真正去手写的时候会有很多问题,不信手写一个去试试吧,哈哈!

(1)二叉树前序、中序、后序遍历

之前写的代码,关于二叉树所有的遍历操作啊,求深度,面试写递归遍历就OK

代码实现

(2)二分查找

非递归版的

代码实现

(3)打印金字塔

代码实现

这里写图片描述

(4)求一个二叉树每一层节点的个数

代码实现

(5)判断两个链表是否相交,求出交点的节点

首先如果两个链表相交没有环,则最后节点一定相同

L1链表长度len1,L2链表长度len2,长度大的,先走|len2-len1|,然后一起走,当节点相同时,则就是交点

(6)设计一个数据结构存储日志,对应时间戳和日志内容,要求可以快速查找每一天有序的日志记录

TreeMap这样去存

(7)求一个数组中重复两次的数

循环遍历,出现两次的数据记录到Map中即可

(8)判断一个点是否在三角形内部

三角形面积+用海伦-秦九韶公式

(9)构造一个N*N的螺旋矩阵

代码实现

这里写图片描述

(10)算式,只有“+” 和 “*” 求输入算式字符串,每一个数字后输出一个结果

字符串模拟吧,回头有时间再写

面试心得体会

通过这回换工作,面试了差不多有5家公司,成功的进入了一个算是一线互联网公司,说起来真的还有些小激动尼,面试过程中感觉数据结构算法和JDK的底层源码多看看,平时多积累吧,这样面试成功的几率会更高的,为自己的以后加油!

希望自己的努力不负初心!!!


本文由转载于互联网,如有侵权请联系删除!