面试中的那些坑[答疑 | 篇四]

简介: 面试中的那些坑[答疑 | 篇四]

都说程序员的总结总是言简意赅的,我之前是半信半疑,但年会上程序员的总结PPT确实闪瞎了我的眼睛,平均5分钟讲完一年的工作,最短的只需要3分钟,同志们,只有三分钟。

我们就是那种做了很多事情,但是并没有在关键时刻呈现工作量的孩子们,结果就是年底考评一般般,年终奖自然少的可怜。你们的年度总结啥样的?年底有奖金么?开工有开工利是么?欢迎留言和我互动。


后续我觉得除了跟大家探讨技术问题,还需要跟大家沟通如何更好地跟人沟通问题,希望能帮助大家提升沟通交流能力。


NO1.大家看看这道题输出应该是啥?是否是三个5呢?


image.png


解答:结果是输出5,5,5.这个题考察面试者是否了解类加载机制在处理类内部类时的处理方式,虚拟机当加载静态内部类时如果是确定的属性值时,虚拟机会直接将值存放到元存储中(静态方法区),其他未确定值需要在运行时动态计算,由虚拟机分配地址和值。如果设置的值不是static,那么不能直接访问,因为此时值属于对象而不是类。


NO2.看看这道题的输出结果是多少?是100还是99?期待大家参与,下期给出答案。


image.png


解答:看了大家的回复结果,有几位小伙伴回答是正确的,输出结果是0.因为赋值运算在自增运算之前已经完成了。 在这里JVM里面有两个存储区,一个是暂存区(以下称为堆栈),另一个是变量区。j=j++是先将j的值0存入堆栈中,然后对变量区中j自加1,这时j的值确实是1,但随后将堆栈中的值赋给变量区的j,所以最后j=0; 而j=++j,是先对变量区中的j加1,再将变量区中的j值(1)存入堆栈,最后将堆栈中的值赋给自变量区的j,所以j=1;


NO3.考察一下你对数组和列表转换的问题,下面的结果输出几呢?


image.png


解答:这道题答案是1,你的答案对不对呢?此题考察基本类型数组和引用类型数组,基本数据类型数组在转换为列表时,如果直接传递数组,基本类型数组将被视为一个对象而不会被解析成数组,如果直接传递参数将能正常解析。希望大家看题看仔细。


NO4.此题考察大家对集合的equals的理解,下面程序输出什么?


image.png


解答:此题答案输出true.是不是很意外!我也觉得意外呢,两个不同的类型竟然相同,简直是颠覆了我的知识观,其实两个类型都重写了equals方法,比较了内容和元素长度,并未对类型进行首要比对。大家看到两个类型的equals方法就明白为啥相等了。


NO5.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String上?


解答:此题主要考察我们是否关注JDK每个升级版本带来的变化,结果是支持byte,1.7(含)以后支持string,但是很遗憾不支持long。


NO6.至少说出三种如何取得从 1970 年 1 月 1 日 0 时 0 分 0 秒到现在的毫秒数?


此题据说难倒了很多工作4年以上的码农!好害怕。坦白说我自己也就知道下面一种,虽然我也是工作了很多年的老鸟....... 面试者:System.currentTimeMillis()。


面试官:亲友团来把答案补上来,这个就是[优必选]面试的一道题,想去智能机器人的看准了。


解答:


  1. System.currentTimeMillis()。


  1. new Date().getTime() 。


  1. Calendar.getInstance().getTimeInMillis()。


NO7.面试官:请说出三种获取java类字节码的方法?


面试者:Class.class,object.getClass(),除此之外没有了吧?! 面试官:你可以想想JDBC知识,也许会帮你想起来。 面试者:没有了......


解答:其实还有一种是通过反射来实现,如图所示


image.png


解答:考察面试者对JVM中两个重要的存储单元的理解,因为篇幅有限,我就不一一描述, 大家可以很简单搜索到答案的。这个地方一般面试官还会问到常量存到哪里,对象存储哪里,类属性存哪里等等。 可以看这篇文章:


https://blog.csdn.net/jasonwang18/article/details/70578647


NO9. 我看你后端技术还可以,了解前端么?能跟我聊聊HTTP/1.1 与 HTTP/1.0 的区别?


image.png


NO10.恩,回答的还不错。讲一下大家都听过但不一定能讲的明白的POST方法和GET方法区别?


面试者:


  • POST将请求参数隐藏进行传递,而GET会将参数拼接到请求地址后面传递;
  • POST相对比较安全而GET因为暴露参数容易被篡改;
  • 根据HTTP传输协议两者对参数长度有不同的要求;


面试官:可以再多说一些,点基本讲到了。


解答:其实回答的点基本是回答到了,其实两者在与服务端发生交互时有所不同,POST方法会请求服务端两次,第一次先发送头部进行确认,服务端返回成功后再次发送数据,而GET只需要请求服务端一次。同时强调一下GET方法中http协议并未做参数长度限制,只是不同浏览器和服务端做了限制而已。


相关文章
|
3月前
|
存储 索引 关系型数据库
面试准备
【8月更文挑战第2天】
62 10
|
消息中间件 NoSQL Java
面试多起来了
面试多起来了
61 0
面试多起来了
|
消息中间件 算法 前端开发
如何搞砸一场面试?
如何搞砸一场面试?
62 0
|
缓存 JavaScript 网络协议
面试(3)
面试(3)
|
前端开发 安全 搜索推荐
【面试总结2】2
【面试总结2】
|
存储 Java C#
C# 面试知识
C# 面试知识
96 0
|
消息中间件 存储 缓存
|
XML 设计模式 安全
面试总结之20201101
一、什么是泛型、为什么要使用以及泛型擦除
119 0
面试总结之20201101
|
设计模式 缓存 算法
大厂面试你懂了吗
每个人都有每个人的不同,每个人都会有自己不同的道路。 下面的大厂面试你又是否懂了,希望你可以了解。变得更加优秀。 主要分为以下几部分: (1)java面试题 (2)Android面试题 (3)混合开发面试题 (4)高端技术面试题 (5)非技术性问题&HR问题汇总