感觉毕业以后一直工作不太顺利,第一份工作不是很对口,第二份公司夭折,第三份公司死亡压榨,所以我目前是无业游民,以下是面试经历:
1、equals和hashcode的区别以及各自的用法
当时面试真的很迷,说equals是判断引用空间的值相等,没用过hashcode,,
- equals是用来判断值类型数据的值或者引用类型数据的引用地址是否相等的,hashcode是通过计算hashcode码来判断值是否相等
- equals相等 的hashcode一定相等,hashcode相等的equals不一定相等,hashcode不相等的equals一定不相等
- 大量数据比较的时候hashcode比equals快
更多的可以跳转 https://www.jianshu.com/p/c34960968f97 这篇文章讲的比较仔细
2、数据结构
这个我觉得就非常的多了,当时面试的时候也是一脸懵逼,,,只知道什么链式结构吖,树形结构吖,具体的就不知道了
3、mybatis的运行原理
这个时候你只需要一张图,这个图基本上是大同小异,应付面试的话看一下运行流程就ok了。反正我当时面试的时候是忘记了的,唉,罪过。
4、你所了解的设计模式
23种设计模式,了解一下最常用的就好
- 创建型:简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式
- 结构型:适配器模式adapter、桥接模式bridge、组合器模式component、装饰器模式decorator、门面模式、亨元模式flyweight和代理模式proxy
- 行为型:命令模式command、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式state、策略模式、模板模式和访问者模式
5、java特性
这个就比较简单了:
- 多态
- 封装
- 继承
6、哪些设计模式用了重载
我们所 熟知的应该就是 工厂设计 模式 了,,虽然我当时并不知道,不过我现在也只是停留在知道工厂模式是用了重载,原因还么有深究
7、用过gradle吗?知道gradle的原理吗?
用时用过,不过原理什么的还真没去研究过,刚刚看了原理,一脸懵逼,这是什么鬼哦。不过总结起来就是:
- 初始化(扫描setting.gradle创建gradle 等对象)
- 构建(扫描 各个 build.gradle 创建对应的project ,获取项目中有多少个task,因为task的执行有顺序)
- 执行(运行所有的task
因为是脚本语言,其实每次执行都会把脚本让进解释器读一遍,所以每次执行某个task都会把以上的三个阶段走一次)
8、git跟svn的区别以各自的常用的命令
- git是分布式的,svn的集群式的(应该是最重要的一点吧)
- git保密性差,一旦clone下来就可以完全公开所有代码和版本信息
- git常用命令:Clone、commit、revert、
- svn常用命令:import、checkout、export、update、revert
9、有一个需求:如何不手动输入收据里面的数据且录入并保存
当时是说了扫描?通过扫描来拿到收据上 的所有字,但是如何将对应的数据录入对应的字段???我以为会有一种方法去查找这个纸上的关键字,通过关键字来录入,当然最后也不得而知,忘评论区有大佬指点一二。
10、架构过一个项目吗
木有。
11、最近有再学习什么技术 吗,该技术好哪里,简单介绍一下
- mybatis_plus,可以省略很多简单的sql,但是个人认为是不是遇到连表查询的时候就不好用了呢
- springcloud,初学,只是浅显的知道用来做分布式微服务这些的
- shiro,看springboot教程的时候提到过,也只是简单的登陆权限角色控制的使用
12、long类型占几个字节
- byte 1个
- short、char 2个
- int、f'loat 4个
- long、double 8个
13、说一下hashset的数据结构
14、char(10)跟varchar(10)有什么区别
varchar(10)是最大可以存10个长度,char(10)是必须存满10个长度,就算你没有存满10个也会给你填充满
15、linux的常见命令
ls、cd、cp、rm、mv、tar、mkdir、rmdir、kill
16、redis和memcache的区别
最好看这篇文章,写的不错:https://www.cnblogs.com/JavaBlackHole/p/7726195.html
17、如果在浏览器的地址栏键入一个地址按下回车之后会发送什么?
http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/
目前已经开始成为一名Android er
不更新了哈哈哈