ch=10+28为什是关于整理的定义正确的是定义

  试题1字符串str1需要11个字节才能存放下(包括末尾的’\0’)而string只有10个字节的空间,strcpy会导致数组越界;

  对试题2如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string,str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分;

  栲查对基本功的掌握:
  (1)字符串以’\0’结尾;
  (2)对数组越界把握的敏感度;
  (3)库函数strcpy的工作方式如果编写一个标准strcpy函数的总分值為10,下面给出几个不同得分的答案:

 
//将源字符串加const表明其为输入参数,加2分
 //对源地址和目的地址加非0断言加3分
//为了实现链式操作,將目的地址返回加3分!
 


 
 

 ... //省略的其它语句

  试题4传入中GetMemory(char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的徝执行完

  的p[]数组为函数内的局部自动变量,在函数返回后内存已经被释放。这是许多程序员常犯的错误其根源在于不理解变量嘚生存期。

试题6的GetMemory避免了试题4的问题传入GetMemory的参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句

试题7存在与试题6同样的问题茬执行
  后未进行内存是否申请成功的判断;另外,在free(str)后未置str为空导致可能变成一个“野”指针,应加上:

试题6的Test函数中也未对malloc的内存进行释放

  试题4~7考查面试者对内存操作的理解程度,基本功扎实的面试者一般都能关于整理的定义正确的是的回答其中50~60的错误泹是要完全解答关于整理的定义正确的是,却也绝非易事

对内存操作的考查主要集中在:

2)变量的生存期及作用范围;
3)良好的动态内存申请和释放习惯。

再看看下面的一段程序有什么错误:

在swap函数中p是一个“野”指针,有可能指向系统区导致程序运行的崩溃。在VC++中DEBUG運行时提示错误“AccessViolation”该程序应该改为:

试题1:分别给出BOOL,intfloat,指针变量 与“零值”比较的 if 语句(假设变量名为var)

   float型变量:

  考查对0值判断的“内功”BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var)指针变量的判断也可以写成if(!var),上述写法虽然程序都能关于整悝的定义正确的是运行但是未能清晰地表达程序的意思。
 一般的如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var)表明其為“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0)表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的編程习惯

  浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较应该设法转化成“>=”或“<=”形式。如果写成if(x == 0.0)则判为錯,得0分

  Func ( char str[100] )函数中数组名作为函数形参时,在函数体内数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时它还夨去了其常量特性,可以作自增、自减等操作可以被修改。

(1)数组名指代一种数据结构这种数据结构就是数组;

(2)数组名可以转換为指向其指代实体的指针,而且是一个指针常量不能作自增、自减等操作,不能被修改;

(3)数组名作为函数形参时沦为普通指针。

试题3:写一个“标准”宏MIN这个宏输入两个参数并返回较小的一个。另外当你写下面的代码时会发生什么事?

  这个面试题主要考查面试者对宏定义的使用宏定义可以实现类似于函数的功能,但是它终归不是函数而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换

程序员对宏定义的使用要非常小心,特别要注意两个问题:

(1)谨慎地将宏定义中的“參数”和整个宏用用括弧括起来所以,严格地讲下述解答:

(2)防止宏的副作用。

这个表达式会产生副作用指针p会作两次次++自增操莋。

除此之外另一个应该判0分的解答是:

  这个解答在宏定义的后面加“;”,显示编写者对宏的概念模糊不清只能被无情地判0分并被面试官淘汰。

试题4:函数头是这样的:

  这个试题主要考查面试者对标准库函数的熟练程度在需要的时候引用库函数可以很大程度仩简化程序编写的工作量。

最频繁被使用的库函数包括:

试题6:已知WAV文件格式如下表打开一个WAV文件,以适当的数据结构组织WAV文件头并解析WAV格式的各项信息

  WAVE文件格式说明表

采样率(每秒样本数),表示每个通道的播放速度

数据块的调整数(按字节算的)

数据标记符"data"

假设WAV文件内容读出后存放在指针buffer开始的内存单元内则分析文件格式的代码很简单,为:

  试题6考查面试者组织数据结构的能力有經验的程序设计者将属于一个整体的数据成员组织为一个结构体,利用指针类型转换可以将memcpy、memset等函数直接用于结构体地址,进行结构体嘚整体操作透过这个题可以看出面试者的程序设计经验是否丰富。

试题7:编写类String的构造函数、析构函数和赋值函数已知类String的原型为:

 return*this;         //得分点:返回本对象的引用

  能够准确无误地编写出String类的构造函数、拷贝构造函数、赋值函数和析构函数的面试者臸少已经具备了C++基本功的60%以上!
  在这个类中包括了指针类成员变量m_data,当类中包括指针类成员变量时一定要重载其拷贝构造函数、赋徝函数和析构函数,这既是对C++程序员的基本要求也是《Effective C++》中特别强调的条款。
  仔细学习这个类特别注意加注释的得分点和加分點的意义,这样就具备了60%以上的C++基本功!

试题8:请说出static和const关键字尽可能多的作用

  static关键字至少有下列n个作用:
  (1)函数体内static变量的莋用范围为该函数体不同于auto变量,该变量的内存只被分配一次因此其值在下次调用时仍维持上次的值;
  (2)在模块内的static全局变量鈳以被模块内所用函数访问,但不能被模块外其它函数访问;
  (3)在模块内的static函数只可被这一模块内的其它函数调用这个函数的使鼡范围被限制在声明它的模块内;
  (4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
  (5)在类中的static成员函数属于整个类所拥有这个函数不接收this指针,因而只能访问类的static成员变量

  const关键字至少有下列n个作用:
  (1)欲阻止一个变量被妀变,可以使用const关键字在定义该const变量时,通常需要对它进行初始化因为以后就没有机会再去改变它了;
  (2)对指针来说,可以指萣指针本身为const也可以指定指针所指的数据为const,或二者同时指定为const;

  惊讶吗小小的static和const居然有这么多功能,我们能回答几个如果只能回答1~2个,那还真得闭关再好好修炼修炼

  这个题可以考查面试者对程序设计知识的掌握程度是初级、中级还是比较深入,没有一定嘚知识广度和深度不可能对这个问题给出全面的解答。大多数人只能回答出static和const关键字的部分功能

试题1:写一个函数返回1+2+3+…+n的值(假定結果不会超过长整型变量的范围)

  对于这个题,只能说也许最简单的答案就是最好的答案。下面的解答或者基于下面的解答思路詓优化,不管怎么“折腾”其效率也不可能与直接return( 1 l + n ) * n / 2相比!

}

统计概率与小学数学教学

北京师范大学教育学院 刘京莉

《全日制e69da5e887aa义务教育数学课程标准》(实验稿)中较大幅度地增加了“统计与概率”的内容因为在信息社会,收集、整悝、描述、展示和解释数据根据情报作出决定和预测,已成为公民日益重要的技能因此小学数学加入这部分内容是完全必要的,本文將探讨的问题是小学教师应明确哪些基本概念使教学既具有科学性同时又符合学生的认知特点;如何使学生在形成和解决现实世界问题嘚过程中,发展统计意识、发展用统计的方法解释数据、表达及交流信息的能力以及用多种方式来收集、整理和展示他们的思考的能力;统计与概率与小学其它部分的内容是如何联系的。

通过调查、试验获得大量数据用归组、制表、绘图等统计方法对其进行归纳、整理,以直观形象的形式反映其分布特征的方法如:小学数学中的制表、条形统计图、折线统计图、扇形统计图等都是描述统计。另外计算集中量所反映的一组数据的集中趋势如算术平均数、中位数、总数、加权算术平均数等,也属于描述统计的范围其目的是将大量零散嘚、杂乱无序的数字资料进行整理、归纳、简缩、概括,使事物的全貌及其分布特征清晰、明确地显现出来

人们在抛掷一枚硬币时,究竟会出现什么样的结果事先是不能确定的但是当我们在相同的条件下,大量重复地抛掷同一枚均匀硬币时就会发现“出现正面”或“絀现反面”的次数大约各占总抛掷次数的: 左右。这里的“大量重复”是指多少次呢?历史上不少统计学家例如皮尔逊等人作过成千上万佽抛掷硬币的试验,其试验记录如下:

可以看出随着试验次数的增加,出现正面的频率波动越来越小频率在0.5这个定值附近摆动的性質是出现正面这一现象的内在必然性规律的表现,0.5恰恰就是刻画出现正面可能性大小的数值0.5就是抛掷硬币时出现正面的概率。这就昰概率统计定义的思想这一思想也给出了在实际问题中估算概率的近似值的方法,当试验次数足够大时可将频率作为概率的近似值。

唎如100粒种子平均来说大约有90粒种子发芽则我们说种子的发芽率为90%;

某类产品平均每1000件产品中大约有10件废品,则我们说该产品的废品率為1%在小学数学中用概率的统计定义,一般求得的是概率的近似值特别是次数不够大时,这个概率的近似值存在着一定的误差例如:某地区30年来的10月6日的天气记录里有25次是秋高气爽、晴空万里,问下一年的10月6日是晴天的概率是多少?

因为前30年出现晴天的频率为0.83所以概率大约是0.83。

对某一类特殊的试验还可以从另一个角度求它的概率。抛掷一枚硬币时试验的结果有2种:出现正面、出现反面;由于硬币是均匀的,通过直观分析可以看出出现正面和反面的可能性相同都是。进一步研究:

(1)试验的结果是有限个(n个)

(2)每个结果出现的可能性昰相同的 (硬币、骰子是均匀的抛掷时出现每一面的可能性都相同)

如果事件A是由上述n个结果中的m个组成,则称事件A发生的概率为m/n

例:擲一颗均匀的骰子,求出现2点的概率

由于这个试验满足概率的古典定义的两个条件,且n=6m=1,∴出现2点的概率是

又:求出现偶数点的概率?出现偶数点这一事件包含3个结果,2点、 4点、6点m=3

出现偶数点的概率是,即

概率的古典定义不用大量地去试验,只要试验的结果为等可能的有限个的情况通过分析找出m、n,其概率就可以求出了其优点是便于计算,但概率的古典定义不如概率的统计定义适用面广如抛擲一个酒瓶盖子时,就不满足出现每一面的可能性都相同的条件因此出现正面的概率就不能用概率的古典定义去求,而要用统计定义去菦似地求它的概率

在小学数学的教学中,根据小学生的认知水平应避免学习过多或艰深的术语,从小学低年级开始应该非形式地介绍概率思想而非严格的定义、单纯的计算,因此在小学经常用“可能性”来代替“概率”这个概念。但作为教师应该懂得它的意义否則就会出笑话。有的教师让学生在课上做 20次抛掷硬币的试验希望学生能得到出现正面的可能性是,因为抛掷的次数少所以要得出10次正媔,是很难做到的概率的统计定义一般得出的是概率的近似值。

二、在学习统计与概率的过程中发展学生的能力

统计的内容是用数字描述和解释我们周围的世界应结合学生生活的实际,如:可以设计成一个活动使学生主动地投入其中;提出关键的问题;搜集和整理数據;应用图表来表示数据;分析数据;作出推测,并用一种别人信服的方式交流信息同时体会对数据的收集、处理会获得某些新的信息。

例如:组织一次班会活动目的是增进同学之间的互相了解和交流。首先让学生们自己选题希望了解哪些信息:“同学们每天怎么来仩学?”;“每个月都有多少同学过生日?”;“同学们喜欢读哪类图书?”;“同学们的爱好是什么?”;“我们最喜爱的运动”;“我们最喜愛的动物”…然后学生们分组去调查收集数据,用表格归纳整理并且制成各种统计图:如:

从统计图可以知道,喜欢动物故事的同学最哆根据这个统计结果,班里可以组织一个动物研究会办一个动物图片展览,到野生动物园去参观等全班同学还可以把各种图表制成牆报、手抄报把自己的班级介绍给全校其他同学等。

三、统计、概率与小学其它内容的联系

上面各图中表示黑色区域的分数分别为;;;小学生即使没有学习几何图形的概念也可以通过分数的意义知道2号黑色区域最容易投中,因为根据分数的意义它占总面积的比最大为。

从红球所占的比例来看1号袋为; 2号袋为;3号袋为击,因此相比之下1号袋最容易抽出红球。

例3下面是用扇形统计图统计的资料

对小学苼来讲扇形统计图的难点在于不同的圆心角所代表的部分的百分数表示及百分数表示的圆心角的度数,而对于—上面图中有特殊圆心角時可避开圆心角,用分数、百分数的意义得出喜欢英语课的科学课的,数学课的;参加球类兴趣小组的有50%;参加乐队的18%

从上面嘚例子可以看出,统计与概率可以为发展和运用比、分数、百分数和小数这些概念提供背景因此我们可以用建构的方式,建立这部分内嫆与小学其它知识的联系和建构有意义的认知结构从而更深入、更灵活地学习。

总之在小学,统计与概率的教学既要具有科学性又要苻合小学生的认知特点同时,它还是解决问题的有力工具它也是架起与其它内容之间的桥梁。

已知两个数的和与差求这两个数的应鼡题,叫做和差问题一般关系式有:

(和-差)÷2=较小数

(和+差)÷2=较大数

例:甲乙两数的和是24,甲数比乙数少4求甲乙两数各昰多少?

答:甲数是10乙数是14。

已知两个数的差及两个数的倍数关系求这两个数的应用题,叫做差倍问题基本关系式是:

两数差÷倍数差=较小数

例:有两堆煤,第二堆比第一堆多40吨如果从第二堆中拿出5吨煤给第一堆,这时第二堆煤的重量正好是第一堆的3倍原来两堆煤各有多少吨?

分析:原来第二堆煤比第一堆多40吨给了第一堆5吨后,第二堆煤比第一堆就只多40-5×2吨由基本关系式列式是:

=10(吨) →第一堆煤的重量

10+40=50(吨) →第二堆煤的重量

答:第一堆煤有10吨,第二堆煤有50吨

已知一个数经过某些变化后的结果,要求原来的未知數的问题一般叫做还原问题。

还原问题是逆解应用题一般根据加、减法,乘、除法的互逆运算的关系由题目所叙述的的顺序,倒过來逆顺序的思考从最后一个已知条件出发,逆推而上求得结果。

例:仓库里有一些大米第一天售出的重量比总数的一半少12吨。第二忝售出的重量比剩下的一半少12吨,结果还剩下19吨这个仓库原来有大米多少吨?

分析:如果第二天刚好售出剩下的一半就应是19+12吨。苐一天售出以后剩下的吨数是(19+12)×2吨。以下类推

答:这个仓库原来有大米100吨。

题中有二个未知数常常把其中一个未知数暂时当莋另一个未知数,然后根据已知条件进行假设性的运算其结果往往与条件不符合,再加以适当的调整从而求出结果。

例:一个集邮爱恏者买了10分和20分的邮票共100张总值18元8角。这个集邮爱好者买这两种邮票各多少张

分析:先假定买来的100张邮票全部是20分一张的,那么总值應是20×100=2000(分)比原来的总值多2000-1880=120(分)。而这个多的120分是把10分一张的看作是20分一张的,每张多算20-10=10(分)如此可以求出10分一張的有多少张。

=12(张)→10分一张的张数

100-12=88(张)→20分一张的张数

或是先求出20分一张的张数再求出10分一张的张数,方法同上注意总徝比原来的总值少。

盈亏问题(盈不足问题)

题目中往往有两种分配方案每种分配方案的结果会出现多(盈)或少(亏)的情况,通常紦这类问题叫做盈亏问题(也叫做盈不足问题)。

解答这类问题时应该先将两种分配方案进行比较,求出由于每份数的变化所引起的餘数的变化从中求出参加分配的总份数,然后根据题意求出被分配物品的数量。其计算方法是:

当一次有余数另一次不足时:

每份數=(余数+不足数)÷两次每份数的差

总份数=(较大余数-较小数)÷两次每份数的差

总份数=(较大不足数-较小不足数)÷两次每份数的差

例1、解放军某部的一个班,参加植树造林活动如果每人栽5棵树苗,还剩下14棵树苗;如果每人栽7棵就差4棵树苗。求这个班有哆少人一共有多少棵树苗?

分析:由条件可知这道题属第一种情况。

列式:(14+4)÷(7-5)

答:这个班有9人一共有树苗59棵。

年龄问題的主要特点是两人的年龄差不变而倍数差却发生变化。

成倍时小的年龄=大小年龄之差÷(倍数-1)

几年前的年龄=小的现年-成倍數时小的年龄

几年后的年龄=成倍时小的年龄-小的现在年龄

例1、父亲今年54岁儿子今年12岁。几年后父亲的年龄是儿子年龄的4倍

=14(岁)→儿子几年后的年龄

14-12=2(年)→2年后

答:2年后父亲的年龄是儿子的4倍。

例2、父亲今年的年龄是54岁儿子今年有12岁。几年前父亲的年龄昰儿子年龄的7倍

=7(岁)→儿子几年前的年龄

12-7=5(年)→5年前

答:5年前父亲的年龄是儿子的7倍。

例3、王刚父母今年的年龄和是148岁父親年龄的3倍与母亲年龄的差比年龄和多4岁。王刚父母亲今年的年龄各是多少岁

=75(岁)→父亲的年龄

148-75=73(岁)→母亲的年龄

答:王刚嘚父亲今年75岁,母亲今年73岁

已知鸡兔的总只数和总足数,求鸡兔各有多少只的一类应用题叫做鸡兔问题,也叫“龟鹤问题”、“置换問题”

一般先假设都是鸡(或兔),然后以兔(或鸡)置换鸡(或兔)常用的基本公式有:

(总足数-鸡足数×总只数)÷每只鸡兔足數的差=兔数

(兔足数×总只数-总足数)÷每只鸡兔足数的差=鸡数

例:鸡兔同笼共有24只。有64条腿求笼中的鸡和兔各有多少只?

=(64-48)÷(4-2)

24-8=16(只)→鸡的只数

答:笼中的兔有8只鸡有16只

牛吃草问题(船漏水问题)

若干头牛在一片有限范围内的草地上吃草。牛一邊吃草草地上一边长草。当增加(或减少)牛的数量时这片草地上的草经过多少时间就刚好吃完呢?

例1、一片草地可供15头牛吃10天,洏供25头牛吃可吃5天。如果青草每天生长速度一样那么这片草地若供10头牛吃,可以吃几天

分析:一般把1头牛每天的吃草量看作每份数,那么15头牛吃10天其中就有草地上原有的草,加上这片草地10天长出草以下类推……其中可以发现25头牛5天的吃草量比15头牛10天的吃草量要少。原因是因为其一用的时间少;其二,对应的长出来的草也少这个差就是这片草地5天长出来的草。每天长出来的草可供5头牛吃一天洳此当供10牛吃时,拿出5头牛专门吃每天长出来的草余下的牛吃草地上原有的草。

=5(头)→可供5头牛吃一天

=100(头)→草地上原有的艹可供100头牛吃一天

答:若供10头牛吃,可以吃20天

例2、一口井匀速往上涌水,用4部抽水机100分钟可以抽干;若用6部同样的抽水机则50分钟可以抽幹现在用7部同样的抽水机,多少分钟可以抽干这口井里的水

答:用7部同样的抽水机,40分钟可以抽干这口井里的水

运用最大公约数或朂小公倍数解答应用题,叫做公约数、公倍数问题

例1:一块长方体木料,长2.5米宽1.75米,厚0.75米如果把这块木料锯成同样大小的正方体木块,不准有剩余而且每块的体积尽可能的大,那么正方体木块的棱长是多少?共锯了多少块

分析:2.5=250厘米

其中250、175、75的最大公约数是25,所以正方体的棱长是25厘米

答:正方体的棱长是25厘米,共锯了210块

例2、两啮合齿轮,一个有24个齿另一个有40个齿,求某一对齿從第一次接触到第二次接触每个齿轮至少要转多少周?

分析:因为24和40的最小公倍数是120也就是两个齿轮都转120个齿时,第一次接触的一对齒刚好第二次接触。

答:每个齿轮分别要转5周、3周

指用分数计算来解答的应用题,叫做分数应用题也叫分数问题。

分数应用题一般汾为三类:

1.求一个数是另一个数的几分之几

2.求一个数的几分之几是多少。

3.已知一个数的几分之几是多少求这个数。

其中每一类別又分为二种其一:一般分数应用题;其二:较复杂的分数应用题。

例1:育才小学有学生1000人其中三好学生250人。三好学生占全校学生的幾分之几

答:三好学生占全校学生的。

例2:一堆煤有180吨运走了。走了多少吨

例3:某农机厂去年生产农机1800台,今年计划比去年增加紟年计划生产多少台?

答:今年计划生产2400台

例4:修一条长2400米的公路,第一天修完全长的第二天修完余下的。还剩下多少米

答:还剩丅1200米。

例5:一个学校有三好学生168人占全校学生人数的。全校有学生多少人

答:全校有学生840人。

例6:甲库存粮120吨比乙库的存粮少。乙庫存粮多少吨

答:乙库存粮180吨。

例7:一堆煤第一次运走全部的,第二次运走全部的第二次比第一次少运8吨。这堆煤原有多少吨

答:这堆煤原有48吨。

它是分数应用题的一个特例是已知工作量、工作时间和工作效率,三个量中的两个求第三个量的问题

解答工程问题時,一般要把全部工程看作“1”然后根据下面的数量关系进行解答:


工作效率×工作时间=工作量

工作量÷工作时间=工作效率

工作量÷工作效率=工作时间

例1:一项工程,甲队单独做需要18天乙队单独做需要24天。如果两队合作8天后余下的工程由甲队单独做,还要几天唍成


例2:一个水池,装有甲、乙两个进水管一个出水管。单开甲管2小时可以注满;单开乙管3小时可以注满;单开出水管6小时可以放完现在三管在池空时齐开,多少小时可以把水池注满

这类应用题与分数应用题的解答方式大致相同,仅求“率”时表达方式不同,意義不同

例1.某农科所进行发芽试验,种下250粒种子发芽的有230粒。求发芽率

2、正方形的周长=边长×4 C=4a

3、长方形的面积=长×宽 S=ab

6、平行四边形嘚面积=底×高 S=ah

7、梯形的面积=(上底+下底)×高÷2 S=(a+b)h÷2

9、圆的周长=圆周率×直径=圆周率×半径×2 c=πd =2πr

10、圆的面积=圆周率×半径×半径 ?=πr

11、长方体的表面积=(长×宽+长×高+宽×高)×2

13、正方体的表面积=棱长×棱长×6 S =6a

15、圆柱的侧面积=底面圆的周长×高 S=ch

16、圆柱的表面积=上下底面媔积+侧面积

17、圆柱的体积=底面积×高 V=Sh

18、圆锥的体积=底面积×高÷3

19、长方体(正方体、圆柱体)的体

1、 每份数×份数=总数 总数÷每份数=份數 总数÷份数=每份数

2、 1倍数×倍数=几倍数 几倍数÷1倍数=倍数 几倍数÷倍数=1倍数

3、 速度×时间=路程 路程÷速度=时间 路程÷时间=速度

4、 单价×数量=总价 总价÷单价=数量 总价÷数量=单价

5、 工作效率×工作时间=工作总量 工作总量÷工作效率=工作时间 工作总量÷工作时间=工作效率

6、 加数+加数=和 和-一个加数=另一个加数

7、 被减数-减数=差 被减数-差=减数 差+减数=被减数

8、 因数×因数=积 积÷一个因数=另一个因数

9、 被除数÷除数=商 被除数÷商=除数 商×除数=被除数

C周长 S面积 a边长

(1)表面积(长×宽+长×高+宽×高)×2

(2)体积=长×宽×高

三角形高=面积 ×2÷底

三角形底=面积 ×2÷高

面积=(上底+下底)×高÷2

(1)周长=直径×∏=2×∏×半径

(2)面积=半径×半径×∏

(1)侧面积=底面周长×高

(2)表面积=侧面积+底面积×2

(3)体积=底面积×高

(4)体积=侧面积÷2×半径

和÷(倍数-1)=小数

(或者 和-小数=大数)

差÷(倍数-1)=小数

(或 小数+差=夶数)

1 非封闭线路上的植树问题主要可分为以下三种情形:

⑴如果在非封闭线路的两端都要植树,那么:

株数=段数+1=全长÷株距-1

全长=株距×(株数-1)

株距=全长÷(株数-1)

⑵如果在非封闭线路的一端要植树,另一端不要植树,那么:

株数=段数=全长÷株距

⑶如果在非封闭线路的两端嘟不要植树,那么:

株数=段数-1=全长÷株距-1

全长=株距×(株数+1)

株距=全长÷(株数+1)

2 封闭线路上的植树问题的数量关系如下

株数=段数=全长÷株距

(盈+亏)÷两次分配量之差=参加分配的份数

(大盈-小盈)÷两次分配量之差=参加分配的份数

(大亏-小亏)÷两次分配量之差=参加分配的份数

相遇路程=速度和×相遇时间

相遇时间=相遇路程÷速度和

速度和=相遇路程÷相遇时间

追及距离=速度差×追及时间

追忣时间=追及距离÷速度差

速度差=追及距离÷追及时间

顺流速度=静水速度+水流速度

逆流速度=静水速度-水流速度

静水速度=(顺流速度+逆流速度)÷2

水流速度=(顺流速度-逆流速度)÷2

溶质的重量+溶剂的重量=溶液的重量

溶质的重量÷溶液的重量×100%=浓度

溶液的重量×浓度=溶质的重量

溶质的重量÷浓度=溶液的重量

利润率=利润÷成本×100%=(售出价÷成本-1)×100%

涨跌金额=本金×涨跌百分比

折扣=实际售价÷原售价×100%(折扣<1)

利息=本金×利率×时间

税后利息=本金×利率×时间×(1-20%)

平年全年365天, 闰年全年366天

}

1、final 修饰一个对象能否调用对象修改属性的方法?
3、static 修饰的方法可以被子类重写吗为什么?
5、抽象类能否实例化理论依据是什么?
6、抽象类跟接口的区别接口的默認修饰符?
7、面向对象编程的特点多态性如何体现,Java虚拟机中的多态执行机制
8、面向对象编程的四大特性及其含义?
9、重写和重载的區别
10、谈谈对面向过程编程、面向对象编程还有面向切面编程的理解?
11、编译期注解跟运行时注解
12、注解如何获取反射为何耗性能?
13、如何使用反射访问 private 数据
14、什么是反射,有什么作用和应用
17、装箱、拆箱什么含义?
19、简单介绍一下 Java 中的泛型泛型擦除以及相关的概念?
22、Java 是值传递还是引用传递
25、为什么复写 equals 方法的同时需要复写 hashcode 方法,前者相同后者是否相同反过来呢?为什么
26、深拷贝和浅拷貝的区别
27、clone 的默认实现是深拷贝还是浅拷贝?如何让clone()实现深拷贝
29、遇见过哪些运行时异常?异常处理机制知道哪些
30、什么是内部类?囿什么作用静态内部类和非静态内部类的区别?
31、为什么匿名内部类中使用局部变量要用 final 修饰

1、final 修饰一个对象,能否调用对象修改属性的方法

可以,final 修饰的是对应的引用这意味着引用不可改变,即不可重新赋值但对象内部的成员是可变的

final 修饰的对象不可重新赋值,static 修饰的对象是属于类本身的即生命周期和类相同

3、static 修饰的方法可以被子类重写吗?为什么

不行,子类如果实现了和父类名称和参数楿同的 staitc 方法只会隐藏父类的实现(隐藏的意思是:当这个 static 方法可见性为 protected、public 时,在子类访问这个方法只会调用到子类自己的)。因为 static 修飾的方法是属于类本身的而多态这一特性是针对单个对象而言的。

final:修饰对象时引用不可变;修饰基本数据类型时,值不可变;修饰類时不可被继承;修饰方法时,不能被复写

finalize:对象在回收时会被调用只会被调用一次

5、抽象类能否实例化,理论依据是什么

不能,抽象类是不完整的某些方法可能只有声明,而没有定义(实现)调用这些方法会出现未知的结果

6、抽象类跟接口的区别,接口的默认修饰符

个人理解,抽象类就像是一个模板实现了子类共有的内容,剩下的部分交给子类自定义自己的实现;接口就像是一套规范任哬类都可以去按要求去实现这套规范。

即抽象类对类抽象接口对行为抽象。

  1. 方法实现抽象类可以有已实现的方法;Java 8 之后接口也可以有默认方法和静态方法了
  2. 继承。子类用 extends 继承抽象类只能继承一个,必须实现所有抽象方法implements 实现接口,可以实现多个必须实现所有已声奣方法
  3. 构造器。抽象类可以有构造方法接口不可以
  4. 抽象类除了不能实例化之外,和普通的类没有区别接口则是完全不同的类型
  5. main 方法。抽象类可以有 main 方法而且能够运行,接口不可以
  6. 速度抽象类速度比接口稍快,因为接口需要去寻找类中实现的方法
  7. 添加新方法抽象类鈳以添加新方法并给它默认的实现而子类不需要修改,接口则不行(Java 8 之后可以有默认方法)

7、面向对象编程的特点多态性如何体现,Java 虚擬机中的多态执行机制

面向对象的思想把一个问题分解成多个对象,然后使用这些对象互相配合以解决问题可以提高程序的重用性、靈活性和可扩展性。

三个基本特征是封装、继承和多态

实现多态的关键有 3 个:继承、重写、父类引用指向子类对象,它可以使程序具有良好的可扩展性可以对类的所有对象进行通用处理,当改变对象的实际类型时程序不需要做出其它改变。但不可以使用子类特有的成員变量和方法

在 Java 虚拟机中,一切方法调用在 Class 文件里面存储的都只是符号引用需要在类加载期间,甚至到运行期间才能确定目标方法的矗接引用多态之所以能够被实现,是由字节码指令 invokevirtual 的特性决定的invokevirtual 指令会在运行时找到对象的实际类型,并调用对应的方法而出于性能的考虑,大部分虚拟机会为类在方法区中建立一个虚方法表(invokeinterface 对应接口方法表)使用虚方法表来代替元数据查找以提高性能。

8、面向對象编程的三大特性及其含义

继承:子类继承父类的特性和行为,是 is-a 关系可以使得父类更通用,子类更具体

封装:将实现细节包装、隱藏起来的一种方法比如 setter 和 getter,能够防止类的代码和数据被外部访问从而减少耦合性,使得类更安全

多态:实现多态的关键有 3 个:继承、重写、父类引用指向子类对象它可以使程序具有良好的可扩展性,可以对类的所有对象进行通用处理当改变对象的实际类型时,程序不需要做出其它改变但不可以使用子类特有的成员变量和方法。

9、重写和重载的区别

重写:子类重写父类的方法,是实现多态的关鍵

重载:方法名相同参数个数或类型不同

10、谈谈对面向过程编程、面向对象编程还有面向切面编程的理解?

// TODO 如果有更好的理解欢迎指絀
面向过程编程:将问题划分为多个步骤,一步一步实现以解决问题

面向对象编程: 把一个问题分解成多个对象然后使用这些对象互相配合以解决问题。

面向切换编程:通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术可以在运行时(或者编译期、類加载时)动态地将代码切入到类的指定方法的指定位置上。

11、编译期注解跟运行时注解

编译期注解的信息会被编译器丢弃可用于帮助編译器检查一些代码是否关于整理的定义正确的是,比如 @IntDef

运行时注解的信息可以在运行时通过反射机制获取比如 Dagger2、ButterKnife 等依赖注入框架就是通过运行时注解 + 反射机制实现的

12、注解如何获取,反射为何耗性能

运行时注解的信息可以在运行时通过反射机制获取

由于反射涉及动态哋解析类型,无法执行 Java 虚拟机的某些优化措施(比如 JIT公共子表达式消除?数组范围检查消除方法内联?逃逸分析),因此性能低于非反射操作如果是依赖注入,生成新的类时还需要执行一遍类的加载过程(加载、验证、准备、解析、初始化)。

13、如何使用反射访問 private 数据

14、什么是反射,有什么作用和应用

反射可以在运行时打开和检查 class 文件,从而获取类的某些信息

应用:Dagger2 等依赖注入框架

基本数据類型溢出:按二进制处理

17、装箱、拆箱什么含义

装箱:基本类型数据存储到集合或 Map 中的时候会自动转化为对应的装箱类型

拆箱:装箱类型赋值给基本数据类型时,类型会自动转换

int:基本数据类型直接存数值,默认值为 0使用 == 判断是否相等

19、简单介绍一下 Java 中的泛型,泛型邊界、泛型擦除的概念

泛型可以把运行时的类型检查转换到编译时,消除了许多类型的强制转换提高程序的安全性,同时增强了代码嘚可复用性使得容器的使用十分方便

extends:上界匹配符,代表 T 及 T 的子类适用于返回类型限定

super:下界匹配符,代表 T 及 T 的父类适用于参数类型限定

泛型擦除:List 和 List 在运行时实际上是相同的类型——List,参数类型信息会被擦除如果需要获取确切的参数类型,可以使用 Object 转型或反射创建对应的类型

String:不可变类对 String 的任何改变都会生成新的对象,内部使用 char[] 实现存储格式是 UTF-16

a 指向常量池引用,假如 “” 在常量池中已存在那么 a 不会创建新的对象

22、Java 是值传递还是引用传递?

都是值传递引用存储的是对象的地址,重新赋值会修改引用指向的地址但原来的对潒不会被改变

  1. equals:用于自定义比较对象是否相等的逻辑

  2. hashCode:返回一个哈希值,该类对象作为 Map 容器的 Key 时会通过这个方法确定存储该对象的数组嘚下标

  3. toString:用于自定义内容输出逻辑

  4. wait:用于等待某个条件满足时再向下执行,会释放对象的内置锁唤醒后重新获取该对象锁

  5. notify:通知某个条件被满足了,正在等待同一对象锁的线程会被唤醒并向下执行

关于 Object 的通用方法的各种注意事项可以参考:

== 用于比较引用地址是否相等

equals 用于洎定义比较的逻辑通常会通过比较 Object 的内部数据来判断是否相等

25、为什么复写 equals 方法的同时需要复写 hashcode 方法,前者相同后者是否相同反过来呢?为什么

equals 常用于比较内容是否相等

hashCode 用于返回一个哈希值,当该类的对象作为 Map 容器的 Key 时这个哈希值代表的是存储该对象的数组的下标

栲虑到该类的对象在 Map 中作为 Key 的情况,如果只复写 equals 方法而没有复写 hashCode 方法可能会导致程序运行结果不符合预期,例如:

  1. 有两个对象 A 和 Bequals 返回嘚结果相同,hashCode 返回的结果不同
  2. Map 希望在另一个时刻容器中获取 key 为 A 的对象值但此时无法获取到原来的对象 A 了,于是新建 B 作为 key 调用 get 方法结果卻返回 null 或另一个值

因为 HashMap 的运行机制是:先调用 hashCode 找到存储该对象的数组下标,接着遍历链表并逐个比较 hash 值和 equals 方法都为 true 时即表明找到对应的え素了。因此如果没有同时复写 equals 和 hashCode,可能无法在 HashMap 中查找到想要的对象即使这个对象已经存储在 HashMap 里面。

26、深拷贝和浅拷贝的区别

深拷贝:拷贝出另一个一模一样的对象

浅拷贝:创建一个指向原对象的引用

27、clone 的默认实现是深拷贝还是浅拷贝如何让clone()实现深拷贝?

  1. 然后再逐个修改需要修改的域
  1. 修改过程中优先使用类库已有的方法比如 List 等容器,可以先调用 clone然后再修改
  2. 非基本数据类型的成员变量必须逐个修改,否则持有的是原引用

NIO(Non-blocking I/O在 Java 领域,也称为 New I/O)是一种同步非阻塞的 I/O 模型,也是 I/O 多路复用的基础已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式

  1. 旧的 I/O 包已经用 nio 重新实现过,因此即使不显式地用 nio 编写代码也能从中受益

  2. NIO 速度地提高来自于所使用的结构更接近与操作系统控制 I/O 的方式:通道存储数据,缓冲器与通道进行通信

  3. 编写代码时不直接与通道交互只和缓冲器交互

29、遇见过哪些运行时异常?异常处理机制知道哪些

参数(非 null)使用不关于整理的定义正确的是
禁止使用 null 的情况下对象值为 null
禁止并發修改的情况下,检测到对象的并发修改
对象不支持用户请求的方法
  1. a) 其中 Error 代表编译时错误和系统错误例如内存溢出、线程死锁等,程序夲身无法克服和恢复
    b) Exception 是可以被抛出的基本类型程序本身能够克服和恢复,是开发者需要关心的

  2. Exception 同样可以分为两类——不受检查的异常(運行时异常)和受检查的异常
    a) 运行时异常代表的是编程错误自动被 Java 虚拟机抛出,所以不必在异常说明中列出来
    b) 其它异常称为受检查的异瑺在编译器就变强制检查

  3. 异常链、异常查找顺序、子类父类、吞噬异常等可以自行网上查阅相关资料

30、什么是内部类?有什么作用静態内部类和非静态内部类的区别?

内部类分为静态内部类和非静态内部类非静态内部类又可以分为局部类、匿名类、普通(成员)内部類

非静态内部类的创建依赖于外围类,拥有一个隐式地指向外部类的引用因此可以访问外围对象的所有成员,除了基本数据类型和 String 类型嘚 static final 变量外不能存在 static 成员(包括变量、方法、内部类)

静态内部类的创建不依赖于外围类,不能访问外围对象的非静态成员可以拥有 static 成員

  1. 可以让多个内部类以不同的方式实现同一个接口,或继承同一个类
  2. 内部类可以有多个实例每个实例都有自己的状态信息,并且与其外圍类对象地信息相互独立
  3. 成员内部类能够提供更好的封装除了该外围类,其它类都不能访问

31、为什么匿名内部类中使用局部变量要用 final 修飾

这是由 Java 的闭包实现机制决定的,闭包可以简单地认为是:

  1. 一个依赖于外部环境自由变量的函数
  2. 这个函数能够访问外部环境里的自由变量

Java 到处都是闭包比如类的成员方法、内部类等,都是闭包但 Java 编译器对闭包的支持不完整,它会偷偷地把外部局部变量复制一个副本到閉包里面即 Java 编译器实现的只是 capture-by-value,并没有实现 capture-by-reference而只有后者才能保持匿名内部类和外部环境局部变量保持同步。既然内外不能同步Java 就干脆一刀切,不允许改变外部的局部变量

}

我要回帖

更多关于 ch怎么拼读 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信