1、请问:下面表达式是true还是false?

double a = 0.8;

double b = 0.7;

double c = 0.6;

bool flag = (a-b) == (b-c);

是用纯数学思维去思考,a-b=0.1,b-c=0.1,两者是相等的,因为数学表述是最精确最严谨的。但是,物理元件上是用有限的64位存储位去存储double型的,存的是近似值。固定格式:1个sign位,11个阶码位,52个有效位。

我们再把这三个数的二进制形式转换出来(注意计算机用的是补码形式)

0.8=1100 1100 1100 1100.......无限循环...需要截断

0.7=10 1100 1100 1100............无限循环...需要截断

0.6=1001 1001 1001 1001 ....无限循环...需要截断

然后一直算到保留52位,然后你再算,你会发现,两者相减,误差相差3.1*10^(-16)。

所以:答案应该是false

2、请问:下面表达式是true还是false?

float a = 0.125f;

double b = 0.125;

bool flag1 = 0==(a-b) ;
bool flag2 = 0.0==(a-b) ;

由于受到上面题目的迷惑,所以这一题一下子就在true和false摇摆不定了。特别这里一个是float,一个是double,float固定格式是1位sign+8位阶码位,23个有效位。

其实,万变不离其宗,看二进制。

0.125=(0.001)B,有限不循环数,它是精确数,而不是近似值。

(0.001)B-(0.001)B=(0.00)B,也是精确值。

而且,0.0与0,所有存储位也全部都是0.

所以,这两个表达式,其实都是true。

3、表达式 1.0/0,请问下面结果应该选择谁?

A: 编译出错,0不能做分母, B: Infinity C: NAN(Not a number)

不同语言不同编译器的实现细节不一样,如果是C++语言用微软的msvc的编译器,编译时就会报错,提示被零除或被零取模。如果是java语言用javac编译器编译通过的,而且定义:浮点数运算时,当分母为0时只要分子不为0,结果均为无穷,分子为0时结果均为NAN。整数运算时,分母不能为0否则抛出算术异常。

所以,如果当C/C++时,答案选A, 如果是java,答案选B

3、请问下面调用,应该选择谁?

[JAVA]void f(String s){} 或者 [JAVA]void f(char *s){}

void f(Integer i){}

调用:f(null);

A: 前者, B 后者 C 报错

首先要明白null的定义,0,或(void*)0,

注意它们的区别:值0,地址0

而上述既可以看成是空字符串,也可以看成是整数0,所以出现混淆。所以才有了C++11之后新增加的nullptr空指针,用于区分。

所以答案应该是C,报错。

4、JAVA语言下,请问下面调用,是应该调用哪个?

void g (Integer i){}

void g (double i){}

调用: g(1);

A: 前者, B 后者 C 报错

首先要审题,JAVA下面,int与Integer是有本质区别的,int是基本数据类型,而Integer是extends的Object的类。g(1)调用参数1,是整形,基本类型。调用时候匹配谁。先匹配基本类型。这里基本类型只有double。所以这里应该调用参数为double的那个。即便是在C/C++下面,也依然是匹配基本数据类型。

所以本题答案是B,调参数double的函数

5、JAVA语言下,请问下面调用,选哪个?

String a = null;

switch (a)

{

}

A: 走null分支, B:"null"分支

C: 走0分支 D: 直接抛出异常

JAVA中表面上支持字符串型的switch,但是本质却是用的String.hashCode()转换成了整型值。换句话说:所谓的字符串型switch本质依然是整型值的switch。

然而本题换个写法就是:null.hashCode(),这明显就会出现空指针异常。

所以本题,明显就应该选择D,直接抛出NullPointerException。

6、请问下面哈希表,resize了几次?

import java.util.HashMap;

HashMap<Integer, Integer> a=new HashMap<Integer, Integer>(10000);

for (Integer i = 0; i < 10000; i++) a.put(i, i);

A: 1次 B:2次: C: 0次

HashMap以数组+链表+红黑树组合而成,一般会在数量达到原来数量之后才会去扩容,总是以上一次大小的2倍扩容机制——也就是2次幂扩容机制。前提是:超过之后才会resize。本题刚刚装满,并未超出。

所以本题答案是C:0次。如果再多一次put,那么则会resize一次。

技术派-程序员常见基础面试题相关推荐

  1. Java程序员必备基础面试题

    java技术再高而羞于展示无疑是浪费了满身的才华.学会沟通, 学会推荐自己,将是对工作最有力的助益.学会以简练扼要的语言,清晰明确的沟通方式,将复杂的问题简单化,并进一步提出精准到位的解决方案.以此行 ...

  2. 黑马 程序员——Java基础---IO(下)

    黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...

  3. 任务分配算法c语言程序,程序员算法基础——贪心算法

    原标题:程序员算法基础--贪心算法 前言 贪心是人类自带的能力,贪心算法是在贪心决策上进行统筹规划的统称. 比如一道常见的算法笔试题跳一跳: 有n个盒子排成一行,每个盒子上面有一个数字a[i],表示最 ...

  4. C/C++程序员应聘常见面试题深入剖析

    为什么80%的码农都做不了架构师?>>>    C/C++程序员应聘常见面试题深入剖析 1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内 ...

  5. 【编码错误】新手程序员常见的编码错误

    新手程序员常见的编码错误 文章目录 前言 一.没有了解需求就开始写代码 二.不沟通交流就开始做需求 三.代码素养差 四.编码问题总结 4.0不注重代码格式 4.0.1空格 4.0.2换行 4.1随意命 ...

  6. 程序员常见英文缩写及其意义

    在网上看到这两篇文章,有关于程序员需要了解的常见英文缩写以及意义,感觉挺有意思的,就载了下来.感谢原作者的分享. 1. API 应用程序接口(英语:Application Programming In ...

  7. 黑马 程序员——Java基础---流程控制

    黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...

  8. 匹配正则_程序员入门基础:python正则表达式贪婪匹配和非贪婪匹配

    此文为python正则表达式的高阶入门,正则基础入门请参考程序员入门基础:python的正则表达式. 一.贪婪匹配和非贪婪匹配 举例说明概念: print('非贪婪匹配',re.search('el+ ...

  9. 程序员常见700单词

    程序员常见700单词 快捷键  Ctrl+F  进行搜索查找 1. password  /ˈpæswɜ:rd/  n. 密码 2. grep   /'grep/  n.  检索目标行命令 3. tre ...

最新文章

  1. 如何禁用UITableView选择?
  2. 【数据挖掘】K-Means 二维数据聚类分析 ( K-Means 迭代总结 | K-Means 初始中心点选择方案 | K-Means 算法优缺点 | K-Means 算法变种 )
  3. 抓包工具Charles简单使用介绍(可抓取Android中app的请求)
  4. dotnet Blazor 用 C# 控制界面行为
  5. 技术干货|基于Apache Hudi 的CDC数据入湖「内附干货PPT下载渠道」
  6. qt lineedit获取内容_Qt开发中的几个关键知识点,收藏以备参考
  7. bzoj 2190: [SDOI2008]仪仗队 -- 欧拉函数
  8. 洛谷P3509 [POI2010]ZAB-Frog
  9. Java--对象的克隆
  10. python写电影推荐系统_Netflix电影推荐系统Python实现(协同过滤+矩阵分解)
  11. 微信小程序跳转到另一个小程序(往返)
  12. centos 6.5 thinkpad trackpoint 中间键 滚动设置
  13. 在线Java/C++/C语言/Python/web网页编辑器(IDE)整理
  14. 中国大学MOOC动物遗传学试题及答案
  15. 微信扫码点餐小程序怎么做,一步步教你
  16. 什么是经验--从程序员角度的思考
  17. 冲突5种常用的解决方法
  18. Java过滤敏感词汇算法(字典树)
  19. Java Obiect类--------11
  20. http协议中get和post的区别

热门文章

  1. 用软件工程泡MM的方法(ZT)
  2. leetcode605.种花问题(简单)
  3. 用python写个桌面挂件 | 手把手带大家做只桌面宠物
  4. 自适应大规模邻域算法(ALNS)解决VRPTW问题(JAVA)
  5. 台式计算机找不到蓝牙发射器,台式机没有蓝牙功能,怎么连接蓝牙设备呢?
  6. csr驱动程序linux版,csr蓝牙适配器驱动程序下载_csr蓝牙适配器驱动程序官方下载_3DM软件...
  7. GLSL内置变量和内置函数
  8. 粘土人世纪开金手指不黑屏怎么弄
  9. 【Excel-2010】瀑布图
  10. vue写前端出现错误:[Vue warn]: Computed property “editableTabs“ was assigned to but it has no setter.