笔试的时候我居然踩了坑

简介: 笔试的时候我居然踩了坑

1. 小镇做题家还会怕笔试?

应聘进入一家企业,除了面试,往往还有笔试环节。

作为考试最卷的国家之一,每一位同学都是从小考到大,可谓身经百战。

老师在学校也经常会帮同学们划个重点什么的。

老师:“这题3分,送分题”
老师:“这题必考,每年都有”
老师:“这个知识点了解就可以了”

但走出校园,就没有那么好的老师帮你划重点了。

而且技术发展日新月异,新知识根本学不过来。

2. 重点怎么找?

其实技术万变不离其中,最核心的关键点,也就是我们常听到的底层逻辑,都是相对不变的。

比如计算机的几大要素:CPU、内存、IO设备等等。

而编程语言也是一样。

2.1 以Java为例,什么是基础?

那必然是JavaSE

每一个Java Dev 必须掌握的知识

无非是

byte short int long float double char boolean
java.lang 
java.util 
java.io 
java.sql 
java.math 
java.time 等等

有的同学简历里写着阅读过java、linux等源代码,

其实大可不必这么复杂,源代码阅读是非常费精力的,

像什么21天学会Java,3个月精通,都不现实。

新手入门,首先该会用的知识都不能少,即前面提到的那些,

另外还需要避开一些坑的地方

这些坑往往和常识相违背,容易对新手造成困扰。

3. 我是新手吗?

请听题:请用普通话朗读下面的语句

世界上有10种人,一种是懂二进制的,一种是不懂二进制的。

发现了吗?

结合语境,如果你读“十种人”,说明你还是个麻瓜。

程序员思维里,这句话读“二种人”

因为 10 是 二进制的 2


记住

读过的书,走过的路,遇过的人

这些就构成了你的人生格局

4. 笔试陷阱

下面我们给出一些示范

注意,他们在 Java 语言里

与我们所了解的常识都格格不入

让我们从小学数学开始学习编程

4.1 认识小数的四则运算

有同学看到这里就炸了

你是侮辱我的智商吗?

小学四年级的题你考我?

别急,让我们看一个例子

// 请写出以下问题的答案:
    System.out.println( 0.2 + 0.7 );

看完有的宝宝就生气了,这不就 0.9 吗?

不是的话我跪着吃翔!


还真不是,执行一下程序,结果是

0.8999999999999999

为什么

因为在浮点数默认是double类型

在double运算方面,你可以认为计算机是个智障。

不信你再试试 0.1 + 0.2,结果居然是

0.30000000000000004

再试试 0.4 + 0.5,结果居然是

0.9

这属于完全没规律的情况了,

数字可能正确,可能偏大、可能偏小,而且差值都不一样。


所以这类问题,在Java里都属于模糊的范畴,想要和常识一致,

需要使用BigDecimal类,用于浮点数的精确计算

BigDecimal a=new BigDecimal("0.2");
    BigDecimal b=new BigDecimal("0.1");
    System.out.println(a.add(b));
    // 输出 0.3

这里有几个要点:

  1. 构造参数必须是字符串格式的数字
  2. 加减乘除,要用 add,subtract,multiply,divide

具体可以参考 java.math 包,里面还有个 BigInteger类似

发现了吧,第一个坑就如此脑残

别急,后面还有。

4.2 认识整数的四则运算

又有宝宝生气了,

刚才还是小数,现在降格到整数了,

这是一年级还是幼儿园水平啊?

别急,看看下面的这个题目,说出答案:

123+32l

绝对不是侮辱智商

如果你脱口而出 444,那就说明还没进入状态

试想面试会问这么低端的问题?

坑在哪

正确答案是 155

其实这也没什么技巧,

主要考察的是视力有没有5.0

注意审题 123 + 32l

32后面的字是小写的L,不是1

也就是说,题目问的是 123 加 长整形的 32,

结果是不是155?

必须是


这也给我们自己一个警示,写这种代码,请务必大写

123 + 32L,不然就是给你的同事挖坑

类似的在Java语言里还有 f 和 F,浮点数float

这里相加时,会隐式转换,int和long相加,结果是long

说穿了,也不难,就是想没想到这一层。

所以,大家编码写变量的时候,请最好不要用 o O l 这些符号,

数字和字母很难分得清。

4.3 字符串连接问题

来个简单的,请写出以下问题的答案

System.out.println(1 + 2 + "3" + 4 + 5);
    System.out.println("1" + 2 + 3 + 4 + 5);
    System.out.println(1 + 2.0 + "3" + 4.0 + 5);
    System.out.println("1" + 2 + 3.0 + 4 + 5);

答案无非是几种,字符串连接,数字加减等等

先看看答案,看各位猜的对不对


第一行:

System.out.println(1 + 2 + "3" + 4 + 5);
    // 打印 3345

因为开头的 1+2 都是数字,因此是int的加法

然后遇到了 3 + “3”,运算符两侧有一个是String,就变成了String连接

再后面是 “33” + 4, 还是字符串连接

最后 “334”+5,还是字符串连接

结果 3345


第二行:

System.out.println("1" + 2 + 3 + 4 + 5);
    // 打印 12345

因为开头就是 “1”+2,整个运算的方式都是字符串连接

因此每一步运算依次是 “12”,“123”,“1234”,“12345”


第三行

System.out.println(1 + 2.0 + "3" + 4.0 + 5);
    // 打印 3.034.05

这里有变化了,1+2.0,会被视为 int + double,因此会转为double

结果是 3.0,然后 3.0+“3”,变成了 “3.03”

然后 “3.03” + 4.0,变成了 “3.034.0”

最后 +5,结果是 3.034.05


第四行

System.out.println("1" + 2 + 3.0 + 4 + 5);
    // 打印 123.045

有了第三题的基础,这个就容易了,唯一的变数是中间的double型 3.0

结果是123.045


这里额外说一个点,就是float和double的区别

在Java里默认是double,如果声明float要在结尾加F

例如

double a=1.23;
    float b=1.23F;

他们主要区别是位数,float是32位,而double是64位

因此允许的数据范围不同

double范围更大,-1.79E+308~-1.79E+308

因此建议大部分开发者,搞不清楚就只用double就行了


讲完以上问题可以发现

很多问题看似简单

但在程序界,有着完全不同的理解

这就是普通人和程序员思维上最大的不同

你的眼界决定你的格局

相关文章
|
6月前
|
算法
覃超老师 算法面试通关40讲
无论是阿里巴巴、腾讯、百度这些国内一线互联网企业,还是 Google、Facebook、Airbnb 等硅谷知名互联网公司,在招聘工程师的过程中,对算法和数据结构能力的考察都是重中之重。本课程以帮助求职者在短时间内掌握面试中最常见的算法与数据结构相关知识点,学会面试中高频算法题目的分析思路,同时给大家从面试官的角度来分析算法题的解答技巧,从而更有效地提升求职者的面试通过率。
50 3
覃超老师 算法面试通关40讲
|
编译器 C语言
【面试笔试避坑指南】一
【面试笔试避坑指南】一
69 0
|
6月前
|
Java
2023金九银十通过率最高的大厂面试真题汇总,已助500+人成功上岸
2023年已经接近尾声了,疫情的影响也在逐渐减小,市场慢慢复苏。 不过最近还是会有一些读者粉丝朋友反馈,“Java市场饱和了”、“大环境还是不好”、“投几十个简历都没有一个约面的”。其实并不是岗位需求量变少了,是越来越多的公司需要【中、高级Java工程师】。 企业的用人需求越来越高,面试通过率也就越来越低。市场依旧很卷,只不过卷的是技术,卷的是经验。 结合了9、10月份最新面试动向,给大家准备了一套最新大厂面试真题汇总,刷完掌握之后通过技术面基本没有什么问题了! 助大家提升技术、稳稳跳槽涨薪! 必备面试题+八股文 2023大厂最新面试题汇总 资料里像这样的例题和说
59 0
2024金九银十通过率最高的大厂面试真题汇总,已助500+人成功上岸
不过最近还是会有一些读者粉丝朋友反馈,“Java市场饱和了”、“大环境还是不好”、“投几十个简历都没有一个约面的”。其实并不是岗位需求量变少了,是越来越多的公司需要【中、高级Java工程师】。
|
SQL 算法 Java
第一次笔试【面试】
第一次笔试【面试】
119 0
|
存储 C语言
【校招面经】8道指针面试真题,快来检测自己掌握了几道。
【校招面经】8道指针面试真题,快来检测自己掌握了几道。
【校招面经】8道指针面试真题,快来检测自己掌握了几道。
|
测试技术
面试必备!题目超全的软件测试面试题库,关键是不花钱
软件测试题库哪里有?相信这是很多即将要去进行软件测试岗位面试的工程师们,都想要知道的一个话题吧,毕竟软件测试项目内容这么多,谁也不能保证自己能回答上面试官们问的面试问题,因此,就想通过刷题的题海战术来提升一下自己的面试通过率。
227 0
|
安全 测试技术 Python
软件测试面试题及答案,这个题库有3千多道最新面试真题可以刷
相信对于很多软件测试新手来说,技术项目的面试是十分让人头疼的,生怕没回答得好,就会跟这个offer失之交臂
202 0