java jvm@IT·互联网程序员

一个Java小白的面试之旅总结

2017-11-01  本文已影响871人  cmazxiaoma

前言

今天去了一家国内领先的可视化智能硬件公司面试。面试的我是技术总监。为人和蔼,和他交谈中,我还有一股紧张。面试中,能感觉他功力深厚,同时也学到了很多东西。个人感觉,我对自己的面试结果不是很满意。技术总监问的问题比较深入,也是我平时比较疏忽的知识点。


关于Int类型的理解

面试官问我int类型占几个字节。我是这样说的: "占4个字节,在内存中占32位。可能不同的操作系统占的字节不一样。" 我真的是强行装逼,给自己挖坑。面试官说:"为什么不一样"。 然后我说:"我记得博客上面是这样说的。"

可能是面试官说的意思是在Java语言中int类型占几个字节。而我印象中的那篇博客说的是int类型跟OS有关,所以面试的要老老实实回答问题。


Int类型的使用

忘记是我主动抛出Int类型的使用,还是面试官给我抛出的。请原谅我的记性太差了。所以不要强行显摆自己的实力,你在技术总监面前什么都不是。我举的是二分法,寻找中间元素下标的例子。" int mid = (a + b) / 2。int类型的范围是-2^31 ~ 2^31 - 1。我是这样说的:a如果是一个足够大的int类型数据,b如果也是一个足够大的int类型数据。那么a + b 数据的范围肯定超过了int类型的范围,会造成内存泄露。我的做法是改成 int mid = a + (b - a) / 2。这样可以避免造成内存的泄露,同时减少了内存的开销。"

说出这个答案,我心中一阵窃喜。然后面试官又给我抛出了这样的问题,“那你为什么不用int mid = a /2 + b/2 "。但是我觉得这个问题还好,不是特别难。我就说: "这种做法的性能没有我的好,因为 a / 2 做了一次运算,然后 b / 2 又做了一次运算,然后把他们加在一起又做了一次运算,内存开销比较大。"

然后面试官说,“这种回答并不能说服我,可能你的做法性能上确实比较好,但是根本原因是内存开销的问题吗?”。当时我就懵了,不知道说什么了。最后面试官告诉了答案:“计算机不擅长做除法运算!”


字符型


表单重复提交

后面,我就不具体讲和面试官的细节了。直接概要出面试官抛出的问题和复盘分析。

我们在添加数据的时候,如果表单重复提交,肯定会造成数据库表的数据重复。

hashCode()解决数据重复,是一个不错的选择。


MySQL数据库

基本概念

基础概念说完了,怎么去规范的创建数据表呢。再此部分引用阿里巴巴Java开发手册的的建表规约索引规约。


数据库三大范式


尾言

心之所向,素履以往。生如逆旅,一苇以航。

上一篇 下一篇

猜你喜欢

热点阅读