为啥呀,怎样知道显示你已经添加了对方两个00就可以,比如58乘100,就是5800?

小学三年级数学知识点  总结在一个时期、一个年度、一个阶段对学习和工作生活等情况加以回顾和分析的一种书面材料,他能够提升我们的书面表达能力,让我们一起来学习写总结吧。但是却发现不知道该写些什么,下面是小编帮大家整理的小学三年级数学知识点总结,欢迎大家分享。  小学三年级数学知识点总结 1  第一单元《除法》  1、除法读作:被除数除以除数除数除被除数  例题:35÷5读作:三十五除以五或五除三十五  2、余数一定要比除数小。(余数∠除数)  3、有余数的除法验算方法:被除数=商×除数+余数  4、0除以任何不是0的数都得0。  5、在除法里,被除数和除数同时扩大(或缩小)相同的倍数,商不变。  例题:20÷4=5扩大2倍:40÷8=5缩小2倍:10÷2=5  6、连除的简便运算:一个数连续除以两个数等于这个数除以这两个数的积。  例题:30÷2÷3=30÷(2×3)  第二单元《图形的运动》  1、轴对称图形定义:一个图形沿着一条直线对折后,折痕两侧的图形能够完全重合,这样的图形就叫做轴对称图形。  2、对称轴定义:把轴对称图形对折,折痕左右两边能够完全重合,这条折痕所在的直线就叫做对称轴。  3、画简单轴对称图形的依据:对称点到对称轴的距离相等。  4、平移:物体(或图形)沿着直线运动的现象叫做平移。特点:做直线运动。  5、旋转:物体(或图形)绕着一个点或一个轴做圆弧或圆周运动的现象,叫做旋转。特点:做圆弧或圆周运动。  第三单元《乘法》  1、乘数末尾有几个0,积的末尾就至少有几个0。  2、两个数相乘,如果一个乘数扩大到原来的m倍,另一个乘数扩大到原来的n倍,则它们的积就扩大到原来的m×n倍。(m>0n>0)  例题:4×6=248(扩大2倍)×18(扩大3倍)=144(扩大了2×3倍)  第四单元《千克克吨》  1、常用的质量单位有:克、千克、吨。每相邻两个质量单位之间的进率是1000  2、1千克=1000克(1kg=1000g)1吨=1000千克(1t=1000kg)  第五单元《面积》  1、面积定义:物体的`表面或封闭图形的大小就是它们的面积。  2、长方形的面积=长×宽S=a×b  长=面积÷宽宽=面积÷长  长方形的周长=(长+宽)×2C=(a+b)×2  长=周长的一半  小学三年级数学知识点总结 2  测量  1、在生活中,量比较短的物品,可以用(毫米、厘米、分米)做单位;量比较长的物体,常用(米)做单位;测量比较长的路程一般用(千米)做单位,千米也叫(公里)。  2、1厘米的长度里有(10)小格,每小格的长度(相等),都是(1)毫米。  3、1枚1分的硬币、尺子、磁卡、小纽扣、钥匙的厚度大约是1毫米。  4、在计算长度时,只有相同的长度单位才能相加减。  小技巧:换算长度单位时,把大单位换成小单位就在数字的末尾添加0(关系式中有几个0,就添几个0);把小单位换成大单位就在数字的末尾去掉0(关系式中有几个0,就去掉几个0)。  5、长度单位的关系式有:(每两个相邻的长度单位之间的进率是10)  ①进率是10:1米=10分米,1分米=10厘米,1厘米=10毫米,10分米=1米,10厘米=1分米,10毫米=1厘米,  ②进率是100:1米=100厘米,1分米=100毫米,100厘米=1米,100毫米=1分米  ③进率是1000:1千米=1000米,1公里==1000米,1000米=1千米,1000米=1公里  6、当我们表示物体有多重时,通常要用到(质量单位)。在生活中,称比较轻的物品的质量,可以用(克)做单位;称一般物品的质量,常用(千克)做单位;计量较重的或大宗物品的质量,通常用(吨)做单位。  小技巧:在“吨”与“千克”的换算中,把吨换算成千克,是在数字的末尾加上3个0;  把千克换算成吨,是在数字的末尾去掉3个0。  7、相邻两个质量单位进率是1000。  1吨=1000千克1千克=1000克1000千克=1吨1000克=1千克  万以内的加法和减法  1、认识整千数(记忆:10个一千是一万)  2、读数和写数(读数时写汉字写数时写阿拉伯数字)  ①一个数的末尾不管有一个0或几个0,这个0都不读。  ②一个数的中间有一个0或连续的两个0,都只读一个0。  3、数的大小比较:  ①位数不同的数比较大小,位数多的数大。  ②位数相同的数比较大小,先比较这两个数的位上的数,如果位上的数相同,就比较下一位,以此类推。  4、求一个数的近似数:  记忆:看最位的后面一位,如果是0—4则用四舍法,如果是5—9就用五入法。  的三位数是位999,最小的三位数是100,的四位数是9999,最小的四位数是1000。  的三位数比最小的四位数小1。  5、被减数是三位数的连续退位减法的运算步骤:  ①列竖式时相同数位一定要对齐;  ②减法时,哪一位上的数不够减,从前一位退1;如果前一位是0,则再从前一位退1。  6、在做题时,我们要注意中间的0,因为是连续退位的,所以从百位退1到十位当10后,还要从十位退1当10,借给个位,那么十位只剩下9,而不是10。(两个三位数相加的和:可能是三位数,也有可能是四位数。)  7、公式被减数=减数+差  和=加数+另一个加数  减数=被减数—差  加数=和—另一个加数  差=被减数—减数  符号/是什么意思数学  在数学中是“除”的意思。例如:4/5我们可以说4除以5或者四分之五。数学符号的.发明及使用比数字要晚,但其数量却超过了数字。现代数学常用的数学符号已超过了200个,其中,每一个符号都有一段有趣的经历。  实数知识点  平方根:  ①如果一个正数X的平方等于A,那么这个正数X就叫做A的算术平方根。  ②如果一个数X的平方等于A,那么这个数X就叫做A的平方根。  ③一个正数有2个平方根/0的平方根为0/负数没有平方根。  ④求一个数A的平方根运算,叫做开平方,其中A叫做被开方数。  立方根:  ①如果一个数X的立方等于A,那么这个数X就叫做A的立方根。  ②正数的立方根是正数、0的立方根是0、负数的立方根是负数。  ③求一个数A的立方根的运算叫开立方,其中A叫做被开方数。  实数:  ①实数分有理数和无理数。  ②在实数范围内,相反数,倒数,绝对值的意义和有理数范围内的相反数,倒数,绝对值的意义完全一样。  ③每一个实数都可以在数轴上的一个点来表示。  小学三年级数学知识点总结 3  第一单元混合运算  知识点一、  1、加法、减法、乘法和除法统称四则运算。  2、在没有括号的算式里,如果只有加、减法或者只有乘、除法,都要从左往右按顺序计算。  3、在没有括号的算式里,有乘、除法和加、减法、要先算乘除法,再算加减法。  4、算式有括号,要先算括号里面的,再算括号外面的;括号里面的算式计算顺序遵循以上的计算顺序。  知识点二、  关于“0”的运算  1、“0”不能做除数;  字母表示:a÷0错误  2、一个数加上0还得原数;  字母表示:a+0=a  3、一个数减去0还得原数;  字母表示:a-0=a  4、被减数等于减数,差是0;  字母表示:a-a=0  5、一个数和0相乘,仍得0;  字母表示:a×0=0  6、0除以任何非0的数,还得0;  字母表示:0÷a(a≠0)=0  7、0÷0得不到固定的商;5÷0得不到商.  第二单元观察物体  1、生活中的简单物体观察总结:同一个物体从不同的角度看会有不同的形状。  2、总结:同一立体图形从不同角度观察会有不同的形状。  第三单元加与减  第一节捐书活动  知识点:  1、在计算脱式计算连加时,按从左到右的顺序,先把前两个数相加,再加第三个数,也可以把三个数直接用一个竖式计算相同数位对齐,从个位加起,哪一位上的数字满几十就要向前一位进几,不要认为满十进一。  2、在计算三个三位数连加时,如果哪两个数相加能凑成整百,整千数,就先将这两个数相加,再加另外那个数。  第二节运白菜  1、用脱式计算连减时,按从左到右的顺序,先把前两个数相减,再减第三个数。也可以先把后两个数相加,写在小括号里面,再用第一个数减去这两个数的和。  2、如果哪两个数相加能凑成整百,整千数,就先将这两个数相加,再加另外那个数。  第三节节余多少钱  三位数加减混合运算的顺序:没有小括号的按从左到右的顺序依次计算,有小括号的先算小括号里面的,再算小括号外面的。  第四节里程表(一)  1、根据里程表提出问题,一般先把里程表转化成线段图来观察,再列式计算。  2、解决此类问题时,一定要从多个角度画图去理解三者之间的位置关系。位置变化,列式也随之变化。  第五节里程表(二)  1、当天行驶的里程数=当天里程表的读数-前一天里程表的读数  2、解答算式谜时,要通过观察推理找到从哪一位先计算,然后一步一步推算出答案。  第四单元乘与除  第一节小树有多少棵  知识点:  1、整十数乘一位数,根据表内乘法,先用整十数0前面的数与一位数相乘,再在积的末尾添上一个0。  2、整百数乘一位数,根据表内乘法,先用整百数0前面的数与一位数相乘,再在积的末尾添上两个0。  3、整十、整百数乘一位数,先根据表内乘法用整十、整百数0前面的数与一位数相乘,再在积的末尾添上相应个数的0。  4、在口算整百、整千数乘一位数时,先看清楚整百、整千数的末尾有几个0,就在积的末尾添上几个0。要注意一位数与0前面的数相乘时得到的0不能丢。  第二节需要多少钱  知识点:  1、两位数乘一位数(不进位)的口算方法:先把前两位数看作几个十和几个一相加的和,再用一位数分别与它们相乘,最后把所得的两个积相加。  2、计算混合运算时,要先明确运算顺序,再计算。  第三节丰收了  知识点:1、整十数除以一位数的口算方法:  (1)先看一位数与什么数相乘能得到这个整十数(也就是被除数),结果就是那个数。  (2)按表内除法计算:先不看被除数末尾的0,按照表内除法算出商,再将被除数末尾的0填写在商的末尾。  2、在除法算式里,被除数不变(被除数不为0)。除数越大,商越小,除数越小,商越大;除数不变,被除数越大,商越大,被除数越小,商越小。  第四节植树  知识点:1、口算两位数除以一位数,先把被除数看成一个整十数和一个一位数,然后分别除以除数,再把所得的两个商相加。  2、(两个连续自然数之和+1)÷2=较大自然数,(两个连续自然数之和-1)÷2=较小自然数,(两数之和+两数之差)÷2=较大数,(两数之和-两数之差)÷2=较小数。  第五单元周长  知识点1:什么是周长  1、围成一个图形所有边的长度总和或者说绕一个图形边线一周的总和就是这个图形的周长。  2、不规则物体或图形的测量方法:绳子测量法。  3、规则物体或图形的测量方法:  (1)绳测法  (2)直尺测量法。  知识点二:长方形的周长  1、求长方形的周长必须满足两个条件:已知长和宽的长度。  2、长方形周长的计算方法:  (1)长方形的周长=长+宽+长+宽  (2)长方形的周长=长×2+宽×2  (3)长方形的周长=(长+宽)×2  (4)已知长方形的周长和宽,求长;“长=(周长-宽×2)÷2”或“长=周长÷2-宽”  (5)已知长方形的周长和长,求宽;“宽=(周长-长×2)÷2”或“宽=周长÷2-长”  3、正方形周长的计算方法:  (1)可以把4条边长加起来;  (2)用一条边长乘以4,即正方形的周长=边长×4  4、靠墙围成的长方形有两种情况:  (1)长边靠墙,  (2)宽边靠墙。  5、围成的两种长方形,宽边靠墙比长边靠墙所需的围栏多。  第六单元乘法  第一节蚂蚁做操  知识点:  1、两、三位数乘一位数(不进位)的笔算方法:从个位算起,用一位数依次去乘多位数每一位的数,与哪一位上的数相乘,就在那一位的下面写积。  2、在列竖式计算两位数乘一位数时,一定要用一位数依次去乘两位数中每个数位上的数。  第二节去游乐园  知识点:  1、两、三位数乘一位数(进位)的笔算乘法,列竖式计算时,先将一位数与多位数对齐,从个位算起,哪一位上相乘满几十就向前一位进几。  2、两位数乘一位数(进位)的笔算,要把进位的数写到正确的位置上,不要写在积中。  第三节乘火车  知识点:  1、两、三位数乘一位数(连续进位)的笔算方法:从个位算起,用一位数依次去乘两位数每一位上的数,哪一位上乘得的积满几十,就向前一位进几。计算时每一步都不要忘记加上进位数。  2、笔算乘法时,哪一位上满十就向前一位进1,向哪一位进1,就在那一位加1。  第四节去奶奶家  知识点:  借助里程图解决问题时,一定要明确里程图中的数学信息,理解题意后再进行计算。  第五节:0×5=?  知识点:  1、0和任何数相乘都等于0。  2、一个乘数末尾有0的乘法的计算方法:  (1)先用这个乘数0前面的数乘另一个乘数;  (2)再看这个乘数末尾有几个0,就在积的末尾添上几个0.  3、在计算乘数中间有0的乘法时,从个位算起,用一个数依次去乘多位数每一位上的数,哪一位上的乘积是0,要在那一位上写0占位,如果有进上来的数必须加上。  4、结论:  (1)因数的末尾有0,乘积中一定有0。  (2)因数的中间有0,乘积中不一定有0。  第六节买矿泉水  知识点:  1、连乘的估算方法:尽可能将其中两个数的乘积估成整十,整百数,再与第三个数相乘。  2、连乘的运算顺序:按从左到右的顺序依次计算。  3、三个数连乘时,可以先把前两个数相乘,在乘第三个数;也可以先把后两个数相乘,再乘第一个数;还可以把任意两个数交换位置后再相乘。  第七单元年月日  第一节看日历(一)  知识点:  1、一年有12个月。  2、1、3、5、7、8、10、12月每月有31天,是大月;4.6.9.11月每月有30天,是小月;2月有28天或29天,2月既不是大月,也不是小月。  3、一个月只有28天时,这个月有四个星期一至星期日;一个月有29天时,这个月中星期一至星期日的某一个是5天;一个月有30天时,这个月中星期一至星期日的某2个是5天;一个月有31天时,这个  第二节看日历(二)  知识点:  1、2月29日是个特殊的日子,只有4年才出现。  2、每四年中有一年的二月份有29天,其他年份的二月份都只有28天。  3、认识平年和闰年:  (1)公里年份是4的倍数的是闰年,不是4的倍数的是平年,公立年份是整百年的,是必须是400的倍数的才是闰年。  (2)判断一个整百年份是不是闰年,要看这个年份数是不是400的倍数,如果是整数倍就是闰年,否者就是平年.  (3)2月份是28天的是平年,2月份是29天的是闰年,平年一年有365天,闰年一年有366天。  (4)平年一年有52个星期零1天,闰年一年有52个星期零2天。  365÷7=52(个)......1(天)  366÷7=52(个)......2(天)  4、推算几周年的的时间问题,可以用终止年份直接减去起始年份,所得的差即为所求。  第三节一天的时间  知识点:  1、24时记时法:在一日(天)里,钟表上的时针正好走2圈,共计24时。所以经常采用从0到24时的计时法,通常叫作24时计时法。  2、普通计时法与24时记时法的表示时刻的换算:从凌晨0:00到中午12:00与普通计时法相同;中午12:00以后,普通计时法与24时记时法的整点时刻相差12,普通计时法去掉限制词后加12就是24时计时法,24时计时法减12后就是普通计时法  3、计算从一个时刻到另一个时刻所进过的'时间,可以根据钟表推算,也可以用终止时刻减去起始时刻。  4、计算中午12时的经过时间,要么把时间都换算成24时计时法来计算,要么先算中午12时以前有多长时间,再加上下午的一段时间。  5、普通计时法在表述时要加上限制词上午、下午或者晚上等,这样才能将时间准确的表达出来。  第四节:时间表  知识点:  1、时间表是管理时间的一种手段,是将某一段时间中已经明确的工作任务清晰的记载和表明的表格,用来提醒使用人和相关人按照时间表的进程活动。  2、制作时间表,最主要的是做好时间的分配,合理分配时间有助于我们养成良好的生活规律和守时习惯。  3、判断谁跑得快,只要看谁用的时间短就可以了。  第五节数学好玩  知识点:  1、同一段距离,测量方法和测量工具不同,在测量的结果相同的情况下,选简便的方法比较合适。  2、地面上一定范围内的直线距离可以直接用直尺来测量。  3、解决搭配问题也可以用乘法计算,也能得到有多少种不同的搭配方法。  4、数路线问题实际上也属于搭配问题,在确定行走路线时,一定不要重复和遗漏。  5、日历中的数有很多规律,如横向左边的数比右边的数少1;纵向上面的数比下面少7等。  第八单元认识小数  第一节文具店  知识点:  1、像3.15,0.50,1.06,6.66,...这样的数,都是小数。“.”叫作小数点。  2、小数由整数部分、小数点、和小数部分组成。  3、一个小数的小数部分有几位数,它就是几位小数。  4、读小数时,整数部分按整数的读法读,中间的小数点读作点,小数部分依次读出每一数位上的数。  5、写小数时,要先写整数部分,按照整数的写法来写,然后在个位的右下角点上小数点,最后写小数部分,依次写出各个数位上的数。  6、把以元为单位的小数改写成以元、角、分的数的方法:小数的整数部分是几,就改写成几元;小数点后的第一位是几,就改写成几角;小数点后的第二位是几,就改写成几分。若那一位上是0,那一位就省略不写。  7、把带有元、角、分的数改写成一元为单位的小数时,元与小数的整数部分相对应,角与小数点后的第一位数相对应,分与小数点后的第二位数相对应。  第二节货比三家  知识点  1、比较小数大小的方法:先比较整数部分,整数部分大的这个小数就大;如果整数部分相同,就比较小数点后的第一位,小数点后的第一位上的数大的这个小数就大;如果相同就比较小数点后的第二位,以此类推。  2、比较三个或三个以上小数的大小和比较两个小数大小的方法相同,先比较整数部分,整数部分相同,再依次比较小数部分。  第三节存零用钱  知识点  1、小数加法的计算方法:小数相加,先把小数点对齐(也就是把相同数位对齐),再按照整数加法的计算方法计算,哪一位上的数相加满十就向前一位进1,最后在得数里点上小数点,使它与横线上的小数点对齐。  2、小数减法的计算方法:小数相减,先把小数点对齐(也就是把相同数位对齐),再按照整数减法的计算方法计算,哪一位上的数不够减,就从前一位退1,最后在得数里点上小数点,使它与横线上的小数点对齐。  第四节寄书  1、小数进位加法的计算方法:先把小数点对齐,然后按照整数进位加法的计算方法计算,哪一位上的数相加满十就向前一位进1,最后在得数里点上小数点,使它与横线上的小数点对齐。  2、小数退位减法的计算方法:先把小数点对齐,然后按照整数退位减法的计算方法计算,哪一位上的数不够减,就从前一位退1,最后在得数里点上小数点,使它与横线上的小数点对齐。  3、在计算小数加法时,与整数加法一样,哪一位上的数相加满十就向前一位进1,千万不要忘记满十进一,也不要忘记下一位进上来的一。  第五节能通过吗  1、小数在现实生活中的应用非常广泛,小数可以使数据更加精确。  2、把带有米、分米、厘米的数改写成以“米”为单位的小数时,米与小数的整数部分相对应,分米与小数点后的第一位数相对应,以此类推。  3、如果米、分米、厘米中某一个单位上一个数也没有,在改写成以“米”为单位的小数时,就在那个单位所对应的数位上写0。  小学三年级数学知识点总结 4  (一)面积和面积单位:  1、要弄清长度单位与面积单位的联系与区别;  2、要认真审题,弄清题目要求后再做。  (二)长方形、正方形面积的计算:  1、正方形:(A)周长=边长×4——使用长度单位  (B)面积=边长×边长——使用面积单位  2、长方形:(A)周长=(长+宽)×2——使用长度单位  (B)面积=长×宽——使用面积单位  (三)面积单位间的进率  1、长度单位:米、分米、厘米——进率是10;1米=10分米=100厘米=1000毫米  2、面积单位:平方厘米、平方分米、平方米——进率是100;  1平方米=100平方分米,1平方分米=100平方厘米,1平方米=10000平方厘;  3、“公顷”(测量菜地面积、果园面积)和“平方千米”(测量城市土地面积)是用来测量土地的更大的面积单位;  4、质量单位:克(g)、千克(kg,也叫公斤)、吨(t)。1000克=1千克,1000千克=1吨。  5、计量路程或测量铁路、河流等比较长的物体时,一般用千米(km)作单位,又叫公里。(四)各图形的特点:长方形的特点:对边相等,四个角都是直角;  正方形的特点:四条边相等,四个角都是直角;  平行四边形的特点:两组对边平行且相等。  小学数学学习方法  小学数学是为学生未来的数学学习打基础的,清晰了解所学知识对于孩子来说十分关键,而这就要求对所学的知识要及时做一些归纳与总结,小学数学错题集的归纳和整理,学习好的学生一般都会有自己的错题集,错题集非常的重要,学习过程当中,自己容易做错的题目完全可以抄写在数学错题集上面。这样做的目的就是能够查漏补缺,数学学好是一个缓慢的过程。  小学数学表内除法知识点  一、平均分  1、平均分的含义:把一些物品分成几份,每份分得同样多,叫平均分。  2、平均分的方法:  (1)把一些物品按指定的份数进行平均分时,可以一个一个的分,也可以几个几个的分,直到分完为止。  (2)把一些物品按每几个一份平均分,分时可以想:这个数可以分成几个这样的一份。  二、除法  1、除法算式的含义:只要是平均分的.过程,就可以用除法算式表示。  2、除法算式的读法:通常按照从前往后顺序读,“÷”读作除以,“=”读作等于,其他读法不变。  3、除法算式各部分的名称:在除法算式中,除号前面的数叫被除数,除号后面的数叫除数,所得的数叫商。  三、用2~6的乘法口诀求商  1、求商的方法:  (1)用平均分的方法求商。  (2)用乘法算式求商。  (3)用乘法口诀求商。  2、用乘法口诀求商时,想除数和几相乘等于被除数。  四、解决问题  1、解决有关平均分问题的方法:  总数÷每份数=份数被除数=商×除数  总数÷份数=每份数被除数=商×除数+余数  一个因数=积÷另一个因数数除=被除数÷商  2、用乘法和除法两步计算解决实际问题的方法:  (1)所求问题要求求出总数,用乘法计算;  (2)所求问题要求求出份数或每份数,用除法计算。  小学三年级数学知识点总结 5  (一)年、月、日  1、常用的时间单位有:(年、月、日)和(时、分、秒)。  2、重要的日子:1949年10月1日,中华人民共和国成立。  1月1日元旦节、3月12日植树节,5月1日劳动节,6月1日儿童节,7月1日建党节,8月1日建军节,9月10日教师节,10月1日国庆节  3、熟记每个月的天数:知道大月一个月有31天,小月一个月有30天。平年二月28天,闰年二月29天,二月既不是大月也不是小月。一年有12个月(7大4小1特殊)  可借助歌谣记忆:  一、三、五、七、八、十、腊(即十二月),  三十一天永不差。  四六九冬三十天,只有二月二十八。  每逢四年闰一日,一定要在二月加。  4、熟记全年天数:平年2月28天,闰年2月29天。平年365天,闰年366天。上半年多少天(平年181天,闰年182天),下半年多少天(所有年份都是184天)。  (1)季度:(一年分四季度,每3个月为一个季度)  一、二、三月是 第一季度(平年有90天,闰年有91天),  四、五、六月是 第二季度(有91天),  七、八、九月是 第三季度(92天),  十、十一、十二月是 第四季度(有92天)。  (2)会计算每个季度有多少天,连续几个月共有多少天。连续两个月共62天的是:7月和8月,12月和第二年的1月;一年中连续两个月共62天的是:7月和8月。  (3)给出一个天数会计算有几个星期零几天。  如:第三季度有(92)天,有(13 )个星期零( 1)天。平年全年有(365)天,是(52 )个星期零(1)天。  (4)公历年份是4的倍数的一般都是闰年:一般情况下可以用年份除以4的方法判断平年闰年。年份除以4有余数是平年,没有余数是闰年。  如:1978÷4=494……2,1978年是平年。  1988÷4=497,1988年是闰年。  (5)公历年份是整百数的必须是400的倍数才是闰年。  如1900年是平年,20xx年是闰年。  5、经过的天数的计算:  公式:结束时间—开始时间 + 1  例如:6月12到8月17日是多少天?  6月12日~~6月30日 30-12+1=9(天)  7月有:31(天) 8月1日~~8月17日 有:17(天)  9+31+17=57(天)  6、给出一个人出生的年份,会计算这个人多少周岁;给出一个人的年龄会计算他是哪一年出生的。  如:小华1994年6月出生,到今年6月(15岁)。小华今年12岁,他是(1997年)出生的。  7、通常每4年里有( 1 )个闰年, ( 3 )个平年。  (如果说某个人不是每年都能过到生日,8岁过两次生日,12岁过3次生日,那么他的生日就是2月29日。)  8、推算星期几的方法:  例如:已知今天星期三,再过50天星期几?  解析:因为一个星期是七天,那么由50÷7=7(星期)……1(天),知道50天里有7个星期多一天,所以第50天是星期三往后数一天,即星期四。  9、会计算到今年经过的年份:就用20xx- 给的年份  例如:中华人民共和国成立于1949年10月1日,到今年建国多少周年?  熟记中华人民共和国建国的时间是1949年10月1日;  算式:20xx-1949=64(年)  (二) 24计时法  1、普通计时法又叫12时计时法,就是把一天分成两个12时表示,普通计时法一定要加上“上午”、“下午”等前缀。(如凌晨3时、早上8时、上午10时、下午2时、晚上8时)  2、24时计时法:就是把一天分成24时表示,在表示的时间前可以加或可以不加表示的大概时间段得词语。  3、普通计时法转换成24时计时法时,超过下午1时的时刻用24时计时法表示就是把原来的时刻加上12。  如:  普通计时法 24时计时法  上午9时 === 9时或9:00  晚上9时 === 21时或21:00  4、反过来要把24时计时法表示的时刻表示成普通计时法的时刻,超过13时的.时刻就减12,并加上下午,晚上等字在时刻前面。  比如:16时等于16 - 12 = 下午4时。(必须加前缀)  5、计算经过时间,就是用结束时刻减开始时刻。  结束时刻-开始时刻=时间段(经过时间)  比如:10:00开始营业,22:00结束营业,  营业时间为:22:00—10:00=12(小时)  ★(计算经过时间时,一定把不同的计时法变成相同的计时法再计算)  比如:某商品早上8:00开始营业,下午6:00停止营业,一天营业多少时间?  下午6:00=18:00 18:00 - 8:00 = 10(小时)  6、认识时间与时刻的区别:(时间是一段,时刻是一个点)  如:火车11:00出发,21时30分到达,火车运行时间是(10时30分),注意不要写成(10:30)。  正确的列式格式为:21时30分-11时=10时30分,不能用电子表的形式相减。  再如:火车19时出发,第二天8时到达,火车运行时间是(13小时)。像这种跨越两天的,可以先计算第一天行驶了多长时间:24-19=5(时),再加上第二天行驶的8个小时:5+8=13(时)  又如:一场球赛,从19时30分开始,进行了155分钟,比赛什么时候结束?先换算,155分=2时35分,再计算。  7、会根据给出的信息制作月历和年历。如:某年8月1日是星期二,制作8月份的月历。再如:某年4月30日是星期  四、制作5月份月历。  制作年历步骤:  第一:确定1月1日是星期几;  第二:确定12个月怎样排列,  第三:把休息日用另外的颜色标出来。  8、时间单位进率:  1世纪=100年  1年 =12个月  1天(日)=24小时  1小时=60分钟  1分钟=60秒钟  1周=7天  三年级下册数学知识  第一单元位置与方向  1、①(东与西)相对,(南与北)相对,  (东南—西北)相对,(西南—东北)相对。  ②清楚以谁为标准来判断位置。  ③理解位置是相对的,不是绝对的。  2、地图通常是按(上北、下南、左西、右东)来绘制的。  (做题时先标出北南西东。)  3、会看简单的路线图,会描述行走路线。  一定写清楚从哪儿向哪个方向走,走了多少米,到哪儿再向哪个方向走。同一个地点可以有不同的描述位置的方式。(例如:学校在剧场的西面,在图书馆的东面,在书店的南面,在邮局的北面。)同一个地点有不同的行走路线。一般找比较近的路线走。  4、指南针是用来指示方向的,它的一个指针永远指向(南方),另一端永远指向(北方)。  5、生活中的方位知识:  ①北斗星永远在北方。  ②影子与太阳的方向相对。  ③早上太阳在东方,中午在南方,傍晚在西方。  ④风向与物体倾斜的方向相反。  (刮风时的树朝风向相对的方向弯,烟朝风向相对的方向飘……)  小学三年级数学知识点总结 6  《四边形》  1、知识点:认识四边形的特征,掌握长方形、正方形的特征  ①能正确辨认四边形。  ②掌握长方形、正方形的特征。  注:应注重引导学生在长、正方形的对比中找出图形边和角的特征。  2、知识点:在方格纸上画出长方形和正方形  能在方格纸上画出长方形和正方形。  3、知识点:初步认识平行四边形  ①能正确辨认平行四边形。  ②能感悟到平行四边形易变形的特性。  ③能在方格纸上正确画出平行四边形。  注:学生寻找平行四边形时,要注意与长方形、正方形的区别,逐步让学生在对比中感悟平行四边形的特征。  4、知识点:周长的含义  结合具体情境理解周长的含义。  5、知识点:计算长方形和正方形的周长  ①能正确计算长方形、正方形等平面图形的周长。  ②能运用周长的知识解决实际问题。  6、知识点:长度和周长的估计  在估量物体长度的过程中,逐步建立空间观念,养成估计的意识和习惯。  注:应注重引导学生说出估计相应长度的依据,逐步建立长度单位的表象。  《测量》  1、知识点:长度单位毫米、分米、千米及1毫米、1分米、1千米  ①认识长度单位毫米、分米、千米,建立1毫米、1分米、1千米的长度观念。  ②根据具体情境选择恰当的长度单位。  2、知识点:单位间的进率  ①知道1厘米=10毫米,1分米=10厘米,1米=10分米,1千米(公里)=1000米。  ②会进行简单的单位换算。  3、知识点:估计、测量物体的.长度  能估计一些物体的长度,会选择不同的方式准确测量给定物体的长度。  4、知识点:质量单位吨及1吨  ①认识质量单位“吨”,建立1吨的质量观念。  ②能根据具体情境选择恰当的质量单位。  5、知识点:1吨=1000千克  知道1吨=1000千克,并会进行吨与千克的单位换算。  小学三年级数学知识点总结 7  1、口算时要注意:  (1)0除以任何数(0除外)都等于0;  (2)0乘以任何数都得0;  (3)0加任何数都得任何数本身;  (4)任何数减0都得任何数本身。  2、没有余数的除法:  被除数÷除数=商  商×除数=被除数  被除数÷商=除数  有余数的除法:  被除数÷除数=商……余数  商×除数+余数=被除数  (被除数—余数)÷商=除数  3、笔算除法顺序:确定商的位数,试商,检查,验算。  (1)一位数除两位数(商是两位数)的笔算方法:先用一位数除十位上的数,如果有余数,要把余数和个位上的数合起来,再用除数去除。除到被除数的哪一位,就把商写在那一位上面。  (2)一位数除三位数的笔算方法:先从被除数的最高位除起,如果最高位不够商1,就看前两位,而除到被除数的哪一位,就要把商写在那一位上,假如不够商1,就在这一位商0;每次除得的余数都要比除数小,再把被除数上的数落下来和余数合起来,再继续除。  (3)除法的验算方法:  没有余数的除法的验算方法:商×除数:被除数;  有余数的除法的验算方法:商×除数+余数=被除数。  4、基本规律:  (1)从高位除起,除到哪一位,就把商写在那一位;  (2)三位数除以一位数时百位上够除,商就是三位数;百位上不够除,商就是两位数;(最高位不够除,就看两位上商。)  (3)哪一位有余数,就和后面一位上的数合起来再除;  (4)哪一位上不够商1,就添0占位;每一次除得的余数一定要比除数小。  数学测量知识点  1、在生活中,量比较短的物品,可以用毫米(mm)、厘米(cm)、分米(dm)做单位。  量比较长的物体,常用米(m)做单位。  量比较长的路程一般用千米(km)做单位。  2、运动场的跑道,通常1圈是400米,2圈半是1000米。  3、1枚1分的`硬币、尺子、磁卡、小纽扣、钥匙、身份证的厚度大约是1毫米。  4、量比较短的物体的长度或者要求量得比较精确时,可以用毫米作单位。  5、1厘米中间的每一小格的长度是1毫米。  6、在计算长度时,只有相同的长度单位才能相加减;单位不同时,要先转化成相同的单位再计算。  7、表示物体有多重时,通常要用到质量单位。称比较轻的物品的质量,可以用“克”作单位;称一般物品的质量,常用“千克”作单位;表示大型物体的质量或载质量一般用“吨”作单位。  8、常用长度单位:米、分米、厘米、毫米、千米。  9、长度单位:米、分米、厘米、毫米,每相邻两个单位之间的进率都是10。  1米=10分米,1分米=10厘米,1厘米=10毫米  1米=100厘米1千米(公里)=1000米  10、质量单位:吨、千克、克,每相邻两个单位之间的进率都是1000 。  1吨=1000千克1千克=1000克  小学数学四大领域主要内容  数与代数:的认识,数的表示,数的大小,数的运算,数量的估计;  图形与几何:空间与平面的基本图形,图形的性质和分类;图形的平移、旋转、轴对称;  统计与概率:收集、整理和描述数据,处理数据;  实践与综合应用:以一类问题为载体,学生主动参与的学习活动,是帮助学生积累数学活动经验的重要途径。  小学三年级数学知识点总结 8  1、有4条直的边和4个角的封闭图形我们叫它四边形。  2、四边形的特点:有四条直的边,有四个角。  3、长方形的特点:长方形有两条长,两条宽,四个角都是直角,对边相等。  4、正方形的特点:有4个直角,4条边相等。  5、长方形和正方形是特殊的平行四边形。  6、平行四边形的特点:  ①对边相等、对角相等。  ②平行四边形容易变形。(三角形不容易变形)  7、封闭图形一周的长度,就是它的周长。  8、公式:  长方形的周长=(长+宽)×2  变式:  ①长方形的长=周长÷2—宽  ②长方形的宽=周长÷2—长  正方形的周长=边长×4  变式:正方形的边长=周长÷4  数学圆的周长知识点  环绕有限面积的.区域边缘的长度积分,叫做周长,也就是图形一周的长度。多边形的周长的长度也相等于图形所有边的和,圆的周长=πd=2πr(d为直径,r为半径,π),扇形的周长=2R+nπR÷180?(n=圆心角角度)=2R+kR(k=弧度)。  推导圆周长最简洁的办法是用积分。在平面直角坐标下圆的方程是这可以写成参数方程:于是圆周长就是结果自然就是(注:三角函数一般的定义是依赖于圆的周长或面积的,为了避免逻辑上的循环论证,可以把三角函数按收敛的幂级数或积分来定义而不依赖于几何,此时圆周率就不是由圆定义的常数,而是由三角函数周期性得到的常数)。如果不需要更多的理论讨论,上面的做法就足够了。  小学数学简便计算知识点  1、连加的简便计算:  ①使用加法结合律(把和是整十、整百、整千的数结合在一起)  ②个位:1与9,2与8,3与7,4与6,5与5,结合。  ③十位:0与9,1与8,2与7,3与6,4与5,结合。  2、连减的简便计算:  ①连续减去几个数就等于减去这几个数的和。如:106—26—74=106—(26+74)  ②减去几个数的和就等于连续减去这几个数。如:106—(26+74)=106—26—74  3、加减混合的简便计算:  第一个数的位置不变,其余的加数、减数可以交换位置(可以先加,也可以先减)例如:123+38—23=123—23+38 146—78+54=146+54—78  4、连乘的简便计算:  使用乘法结合律:把常见的数结合在一起25与4;125与8;125与80等看见25就去找4,看见125就去找8;  5、连除的简便计算:  ①连续除以几个数就等于除以这几个数的积。  ②除以几个数的积就等于连续除以这几个数。  6、乘、除混合的简便计算:  第一个数的位置不变,其余的因数、除数可以交换位置。(可以先乘,也可以先除)例如:27×13÷9=27÷9×13 7。乘法分配律的应用:  ①类型一:(a+b)×c(a—b)×c= a×c+b×c = a×c—b×c  ②类型二:a×c+b×c a×c—b×c=(a+b)×c =(a—b)×c  ③类型三:a×99+a a×b—a= a×(99+1)= a×(b—1)  ④类型四:a×99 a×102= a×(100—1)= a×(100+2)= a×100—a×1 = a×100+a×2【小学三年级数学知识点】相关文章:小学数学备考知识点总结11-18小学数学知识点归纳02-10小学数学知识点总结10-27小学数学知识点总结06-30小学数学知识点总结12-05小学的数学知识点总结07-31人教版小学数学知识点总结08-28小学数学知识点汇总整理03-09小学数学必备知识点总结整理03-01北京小学数学知识点总结04-24}
本文由公众号「Java旅途」整理,设计到的内容由java基础、数据库、SSM框架、redis、消息队列、spring boot、spring cloud、git及一些前端知识。整理时间为2019-11-19,首发于微信公众号「Java旅途」,关注微信公众号「Java旅途」,回复面试领取该pdf版资料。公众号二维码如下:2019年java面试经典100问,进入BAT不是梦。如果该pdf帮助到您,请您传阅给您的小伙伴,一起复习,共同做一个offer收割机,文章目录如下:一、java基础1、面向对象的特征有哪些方面? 【基础】答:面向对象的特征主要有以下几个方面:1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。4)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。2、int 和Integer 有什么区别? 【基础】答:Java 提供两种不同的类型:引用类型和原始类型(或内置类型);int 是java 的原始数据类型,Integer 是java 为int 提供的封装类。Java 为每个原始类型提供了封装类:原始类型: boolean,char,byte,short,int,long,float,double封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。3、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 【基础】答:Math.round(11.5)12 Math.round(-11.5)-11 round 方法返回与参数最接近的长整数,参数加1/2 后求其floor。4、编程题: 用最有效率的方法算出2 乘以8 等於几? 【基础】答: 2 << 3。5、数组有没有 length()方法?String 有没有 length()方法?【基础】答:数组没有 length()方法,有 length 的属性。String 有 length()方法。JavaScript 中,获得字符串的长度是通过 length 属性得到的,这一点容易和 Java 混淆。6、构造器(constructor)是否可被重写(override)?【基础】答:构造器不能被继承,因此不能被重写,但可以被重载。7、是否可以继承String 类? 【基础】答:String 类是final 类,故不可以继承。8、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 【基础】答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。9、String 和StringBuffer 的区别?【基础】答:JAVA 平台提供了两个类:String 和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String 类提供了数值不可改变的字符串。而这个StringBuffer 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers 来动态构造字符数据。10、String, StringBuffer StringBuilder 的区别。【基础】答:String 的长度是不可变的;StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer.如果最后需要String,那么使用StringBuffer 的toString()方法,线程安全;StringBuilder 是从JDK 5 开始,为StringBuffer 该类补充了一个单个线程使用的等价类;通常应该优先使用StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快,线程不安全。11、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?【基础】答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。12、描述一下 JVM 加载 class 文件的原理机制?【中等】答:JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的 Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。由于 Java 的跨平台性,经过编译的 Java 源程序并不是一个可执行程序,而是一个或多个类文件。当 Java 程序需要使用某个类时,JVM 会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class 文件中的数据读入到内存中,通常是创建一个字节数组读入.class 文件,然后产生与所加载类对应的 Class 对象。加载完成后,Class 对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后 JVM 对类进行初始化,包括:1)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2)如果类中存在初始化语句,就依次执行这些初始化语句。从 Java 2(JDK 1.2)开始,类加载过程采取了双亲委托机制(PDM)。PDM 更好的保证了 Java 平台的安全性,在该机制中,JVM 自带的 Bootstrap 是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。13、interface可以有方法的实现吗?【中等】答:jdk1.8以后有方法的实现,用default修饰。14、是否可以从一个static 方法内部发出对非static 方法的调用?【基础】答:不可以,如果其中包含对象的method(),不能保证对象初始化。15、GC 是什么? 为什么要有GC? 【基础】答:GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc()16、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?【基础】答:对于GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。通常,GC 采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC 确定一些对象为"不可达"时,GC 就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC 运行,但是Java 语言规范并不保证GC 一定会执行。17、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?【基础】答:可以;必须只有一个类名与文件名相同。18、Java 中的 final 关键字有哪些用法?【基础】答:(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。19、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串?【基础】答:示例代码如下:String s1 = "你好";String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");20、error 和exception 有什么区别? 【基础】答:error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。21、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?【基础】答:会执行,在方法返回调用者前执行。注意:在finally中改变返回值的做法是不好的,因为如果存在finally代码块,try中的return语句不会立马返回调用者,而是记录下返回值待finally代码块执行完毕之后再向调用者返回其值,然后如果在finally中修改了返回值,就会返回修改后的值。显然,在finally中返回或者修改返回值会对程序造成很大的困扰,C#中直接用编译错误的方式来阻止程序员干这种龌龊的事情,Java中也可以通过提升编译器的语法检查级别来产生警告或错误,Eclipse中可以在如图所示的地方进行设置,强烈建议将此项设置为编译错误。22、List,Set,Map 是否继承自Collection 接口?【基础】答:List,Set 是;Map 不是。23、说出ArrayList,Vector, LinkedList 的存储性能和特性?【基础】答:ArrayList 和Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了synchronized 方法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。24、HashMap 和Hashtable 的区别? 【基础】答:二者都实现了Map 接口,是将惟一键映射到特定的值上;主要区别在于:1)HashMap 没有排序,允许一个null 键和多个null 值,而Hashtable 不允许;2)HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey,因为contains 方法容易让人引起误解;3)Hashtable 继承自Dictionary 类,HashMap 是Java1.2 引进的Map 接口的实现;4)Hashtable 的方法是Synchronize 的,而HashMap 不是,在多个线程访问Hashtable 时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。Hashtable 和HashMap 采用的hash/rehash 算法大致一样,所以性能不会有很大的差异。25、Arraylist 与Vector 区别?【基础】答:就ArrayList 与Vector 主要从二方面来说:1)同步性:Vector 是线程安全的(同步),而ArrayList 是线程序不安全的;2)数据增长:当需要增长时,Vector 默认增长一倍,而ArrayList 却是一半。26、List、Map、Set 三个接口,存取元素时,各有什么特点?【基础】答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value 值,value 可多值。27、sleep() 和wait() 有什么区别? 【基础】答:sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep 不会释放对象锁。wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。28、当一个线程进入一个对象的一个synchronized 方法后,其它线程是否可进入此对象的其它方法? 【基础】答:其它线程只能访问该对象的其它非同步方法,同步方法则不能进入。29、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 【基础】答:多线程有两种实现方法,分别是继承Thread 类与实现Runnable 接口,同步的实现方面有两种,分别是synchronized,wait 与notify。30、当一个线程进入一个对象的 synchronized 方法 A 之后,其它线程是否可进入此对象的 synchronized 方法 B?【中等】答:不能。其它线程只能访问该对象的非同步方法,同步方法则不能进入。因为非静态方法上的 synchronized 修饰符要求执行方法时要获得对象的锁,如果已经进入 A 方法说明对象锁已经被取走,那么试图进入 B 方法的线程就只能在等锁池(注意不是等待池哦)中等待对象的锁31、简述synchronized 和java.util.concurrent.locks.Lock 的异同?【中等】答:主要相同点:Lock 能完成synchronized 所实现的所有功能;主要不同点:Lock 有比synchronized 更精确的线程语义和更好的性能。synchronized 会自动释放锁,而Lock 一定要求程序员手工释放,并且必须在finally 从句中释放。32、编写多线程程序有几种实现方式?【中等】答:Java 5 以前实现多线程有两种实现方法:一种是继承 Thread 类;另一种是实现 Runnable 接口。两种方式都要通过重写 run()方法来定义线程的行为,推荐使用后者,因为 Java 中的继承是单继承,一个类有一个父类,如果继承了 Thread 类就无法再继承其他类了,显然使用 Runnable 接口更为灵活。补充:Java 5 以后创建线程还有第三种方式:实现 Callable 接口,该接口中的 call 方法可以在线程执行结束时产生一个返回值,代码如下所示:import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
class MyTask implements Callable<Integer> {
private int upperBounds;
public MyTask(int upperBounds) {
this.upperBounds = upperBounds;
}
@Override
public Integer call() throws Exception {
int sum = 0;
for(int i = 1; i <= upperBounds; i++) {
sum += i;
}
return sum;
}
}
class Test {
public static void main(String[] args) throws Exception {
List<Future<Integer>> list = new ArrayList<>();
ExecutorService service = Executors.newFixedThreadPool(10);
for(int i = 0; i < 10; i++) {
list.add(service.submit(new MyTask((int) (Math.random() * 100))));
}
int sum = 0;
for(Future<Integer> future : list) {
//while(!future.isDone()) ;
sum += future.get();
}
System.out.println(sum);
}
}
33、Java 中如何实现序列化,有什么意义?【中等】答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序列化可能会存在数据乱序的问题)。要实现序列化,需要让一个类实现 Serializable 接口,该接口是一个标识性接口,标注该类对象是可被序列化的,然后使用一个输出流来构造一个对象输出流并通过 writeObject(Object)方法就可以将实现对象写出(即保存其状态);如果需要反序列化则可以用一个输入流建立对象输入流,然后通过 readObject 方法从流中读取对象。二、数据库34、阐述 JDBC 操作数据库的步骤。【基础】答:下面的代码以连接本机的 Oracle 数据库为例,演示 JDBC 操作数据库的步骤。//加载驱动。
Class.forName("oracle.jdbc.driver.OracleDriver");
//创建连接。
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
//创建语句。
PreparedStatement ps = con.prepareStatement("select * from emp where sal between ? and ?"); ps.setInt(1, 1000);
ps.setInt(2, 3000);
//执行语句。
ResultSet rs = ps.executeQuery();
//处理结果。
while(rs.next()) {
System.out.println(rs.getInt("empno") + " - " + rs.getString("ename"));
}
//关闭资源。
finally {
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
提示:关闭外部资源的顺序应该和打开的顺序相反,也就是说先关闭 ResultSet、再关闭Statement、在关闭 Connection。上面的代码只关闭了 Connection(连接),虽然通常情况下在关闭连接时,连接上创建的语句和打开的游标也会关闭,但不能保证总是如此,因此应该按照刚才说的顺序分别关闭。此外,第一步加载驱动在 JDBC 4.0 中是可以省略的(自动从类路径中加载驱动),但是我们建议保留。35、使用 JDBC 操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?【中等】答:要提升读取数据的性能,可以指定通过结果集(ResultSet)对象的 setFetchSize()方法指定每次抓取的记录数(典型的空间换时间策略);要提升更新数据的性能可以使用 PreparedStatement 语句构建批处理,将若干 SQL 语句置于一个批处理中执行。36、在进行数据库编程时,连接池有什么作用?【基础】答:由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行 TCP 的三次握手,释放连接需要进行 TCP 四次握手,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略(浪费了空间存储连接,但节省了创建和释放连接的时间)。池化技术在 Java 开发中是很常见的,在使用线程时创建线程池的道理与此相同。基于 Java 的开源数据库连接池主要有:C3P0、Proxool、DBCP、BoneCP、Druid 等。37、事务的ACID是指什么?【基础】答:
原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;
一致性(Consistent):事务结束后系统状态是一致的;
隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态;
持久性(Durable):事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。
38、谈谈脏读、幻读和不可重复读?【中等】脏读(Dirty Read):A 事务读取 B 事务尚未提交的数据并在此基础上操作,而 B 事务执行回滚,那么 A 读取到的数据就是脏数据。时间转账事务 A
取款事务 B
T1
开始事务
T2
开始事务
T3
查询账户余额为 1000 元
T4
取出 500 元余额修改为 500

T5
查询账户余额为 500 元(脏读)
T6
撤销事务余额恢复为 1000 元
T7
汇入 100 元把余额修改为 600 元
T8
提交事务
不可重复读(Unrepeatable Read):事务 A 重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务 B 修改过了。时间转账事务 A
取款事务 B
T1
开始事务
T2
开始事务
T3
查询账户余额为 1000 元
T4
查询账户余额为 1000 元
T5
取出 100 元修改余额为 900 元
T6
提交事务
T7
查询账户余额为 900 元(不可重复读)
幻读(Phantom Read):事务 A 重新执行一个查询,返回一系列符合查询条件的行,发现其中插入了被事务 B 提交的行。时间统计金额事务 A
转账事务 B
T1
开始事务
T2
开始事务
T3
统计总存款为 10000 元
T4
新增一个存款账户存入 100 元
T5
提交事务
T6
再次统计总存款为 10100 元(幻读)
第 1 类丢失更新:事务 A 撤销时,把已经提交的事务 B 的更新数据覆盖了。时间取款事务 A 转账事务 B时间取款事务 A
转账事务 B
T1
开始事务
T2
开始事务
T3
查询账户余额为 1000 元
T4
查询账户余额为 1000 元
T5
汇入 100 元修改余额为 1100 元
T6
提交事务
T7
取出 100 元将余额修改为 900 元
T8
撤销事务
T9
余额恢复为 1000 元(丢失更新)
第 2 类丢失更新:事务 A 覆盖事务 B 已经提交的数据,造成事务 B 所做的操作丢失。
时间转账事务 A
取款事务 B
T1
开始事务
T2
开始事务
T3
查询账户余额为 1000 元
T4
查询账户余额为 1000 元
T5
取出 100 元将余额修改为 900 元
T6
提交事务
T7
汇入 100 元将余额修改为 1100 元
T8
提交事务
T9
查询账户余额为 1100 元(丢失更新)
数据并发访问所产生的问题,在有些场景下可能是允许的,但是有些场景下可能就是致命的,数据库通常会通过锁机制来解决数据并发访问问题,按锁定对象不同可以分为表级锁和行级锁;按并发事务锁定关系可以分为共享锁和独占锁,具体的内容大家可以自行查阅资料进行了解。直接使用锁是非常麻烦的,为此数据库为用户提供了自动锁机制,只要用户指定会话的事务隔离级别,数据库就会通过分析 SQL 语句然后为事务访问的资源加上合适的锁,此外,数据库还会维护这些锁通过各种手段提高系统的性能,这些对用户来说都是透明的(就是说你不用理解,事实上我确实也不知道)。ANSI/ISO SQL 92 标准定义了4 个等级的事务隔离级别,如下表所示:隔离级别
脏读
不可重复读幻读
第一类丢失更新第二类丢失更新
READ UNCOMMITED
允许
允许
允许
不允许
允许
READ COMMITTED
不允许
允许
允许
不允许
允许
REPEATABLE READ 不允许
不允许
允许
不允许
不允许
SERIALIZABLE
不允许
不允许
不允许
不允许
不允许
需要说明的是,事务隔离级别和数据访问的并发性是对立的,事务隔离级别越高并发性就越差。所以要根据具体的应用来确定合适的事务隔离级别,这个世界没有万能的原则。39、JDBC中如何进行事务处理?【中等】答:Connection 提供了事务处理的方法,通过调用setAutoCommit(false)可以设置手动提交事务;当事务完成后用 commit()显式提交事务;如果在事务处理过程中发生异常则通过 rollback()进行事务回滚。除此之外,从 JDBC 3.0 中还引入了 Savepoint(保存点)的概念,允许通过代码设置保存点并让事务回滚到指定的保存点。40、获得一个类的类对象有哪些方式?【基础】答:
方法 1:类型.class,例如:String.class
方法 2:对象.getClass(),例如:"hello".getClass()
方法 3:Class.forName(),例如:Class.forName("java.lang.String")
41、JSP 有哪些内置对象?作用分别是什么?【基础】答:JSP 有 9 个内置对象:
request:封装客户端的请求,其中包含来自 GET 或 POST 请求的参数;
response:封装服务器对客户端的响应;
pageContext:通过该对象可以获取其他对象;
session:封装用户会话的对象;
application:封装服务器运行环境的对象;
out:输出服务器响应的输出流对象;
config:Web 应用的配置对象;
page:JSP 页面本身(相当于 Java 程序中的 this);
exception:封装页面抛出异常的对象。
42、get 和 post 请求的区别?【基础】答:①get 请求用来从服务器上获得资源,而 post 是用来向服务器提交数据;②get 将表单中数据按照 name=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用"?"连接,而各个变量之间使用"&"连接;post 是将表单中的数据放在 HTTP 协议的请求头或消息体中,传递到 action 所指向 URL;③get 传输的数据要受到 URL 长度限制(1024 字节);而 post 可以传输大量的数据,上传文件通常要使用 post 方式;④使用 get 时参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用 get;对于敏感数据还是应用使用 post;⑤get 使用 MIME 类型 application/x-www-form-urlencoded 的 URL 编码(也叫百分号编码)文本的格式传递参数,保证被传送的参数由遵循规范的文本组成,例如一个空格的编码是"%20"。43、讲解 JSP 中的四种作用域。【基础】答:JSP 中的四种作用域包括 page、request、session 和 application,具体来说:
page 代表与一个页面相关的对象和属性。
request 代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件;需要在页面显示的临时数据可以置于此作用域。
session 代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的 session 中。
application 代表与整个 Web 应用程序相关的对象和属性,它实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。
三、SSM框架44、MyBatis 中使用#和$书写占位符有什么区别?【中等】答:#将传入的数据都当成一个字符串,会对传入的数据自动加上引号;$将传入的数据直接显示生成在 SQL 中。注意:使用$占位符可能会导致 SQL 注射攻击,能用#的地方就不要使用$,写 order by 子句的时候应该用$而不是#。45、解释一下 MyBatis 中命名空间(namespace)的作用。【中等】答:在大型项目中,可能存在大量的 SQL 语句,这时候为每个 SQL 语句起一个唯一的标识(ID)就变得并不容易了。为了解决这个问题,在 MyBatis 中,可以为每个映射文件起一个唯一的命名空间,这样定义在这个映射文件中的每个 SQL 语句就成了定义在这个命名空间中的一个 ID。只要我们能够保证每个命名空间中这个 ID 是唯一的,即使在不同映射文件中的语句 ID 相同,也不会再产生冲突了。46、什么是 IoC 和 DI?DI 是如何实现的?【中等】答:IoC 叫控制反转,是 Inversion of Control 的缩写,DI(Dependency Injection)叫依赖注入,是对 IoC 更简单的诠释。控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的"控制反转"就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。IoC 体现了好莱坞原则 - "Don’t call me, we will call you"。依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI 是对 IoC 更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。47、解释一下什么叫 AOP(面向切面编程)?【基础】答:AOP(Aspect-Oriented Programming)指一种程序设计范型,该范型以一种称为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点(crosscutting concern)。48、你是如何理解"横切关注"这个概念的?【中等】答:"横切关注"是会影响到整个应用程序的关注功能,它跟正常的业务逻辑是正交的,没有必然的联系,但是几乎所有的业务逻辑都会涉及到这些关注功能。通常,事务、日志、安全性等关注就是应用中的横切关注功能。49、你如何理解 AOP 中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念?【基础】答:a. 连接点(Joinpoint):程序执行的某个特定位置(如:某个方法调用前、调用后,方法抛出异常后)。一个类或一段程序代码拥有一些具有边界性质的特定点,这些代码中的特定点就是连接点。Spring 仅支持方法的连接点。b. 切点(Pointcut):如果连接点相当于数据中的记录,那么切点相当于查询条件,一个切点可以匹配多个连接点。Spring AOP 的规则解析引擎负责解析切点所设定的查询条件,找到对应的连接点。c. 增强(Advice):增强是织入到目标类连接点上的一段程序代码。Spring 提供的增强接口都是带方位名的,如:BeforeAdvice、AfterReturningAdvice、ThrowsAdvice 等。很多资料上将增强译为“通知”,这明显是个词不达意的翻译,让很多程序员困惑了许久。说明: Advice 在国内的很多书面资料中都被翻译成"通知",但是很显然这个翻译无法表达其本质,有少量的读物上将这个词翻译为"增强",这个翻译是对 Advice 较为准确的诠释,我们通过 AOP 将横切关注功能加到原有的业务逻辑上,这就是对原有业务逻辑的一种增强,这种增强可以是前置增强、后置增强、返回后增强、抛异常时增强和包围型增强。d. 引介(Introduction):引介是一种特殊的增强,它为类添加一些属性和方法。这样,即使一个业务类原本没有实现某个接口,通过引介功能,可以动态的未该业务类添加接口的实现逻辑,让业务类成为这个接口的实现类。e. 织入(Weaving):织入是将增强添加到目标类具体连接点上的过程,AOP 有三种织入方式:①编译期织入:需要特殊的 Java 编译期(例如 AspectJ 的 ajc);②装载期织入:要求使用特殊的类加载器,在装载类的时候对类进行增强;③运行时织入:在运行时为目标类生成代理实现增强。Spring 采用了动态代理的方式实现了运行时织入,而 AspectJ 采用了编译期织入和装载期织入的方式。f. 切面(Aspect):切面是由切点和增强(引介)组成的,它包括了对横切关注功能的定义,也包括了对连接点的定义。50、Spring 支持的事务管理类型有哪些?你在项目中使用哪种方式?【中等】答:Spring 支持编程式事务管理和声明式事务管理。许多 Spring 框架的用户选择声明式事务管理,因为这种方式和应用程序的关联较少,因此更加符合轻量级容器的概念。声明式事务管理要优于编程式事务管理,尽管在灵活性方面它弱于编程式事务管理,因为编程式事务允许你通过代码控制业务。51、Spring MVC的工作原理是怎样的?【基础】答:SpringMVC工作原理图如下:① 客户端的所有请求都交给前端控制器 DispatcherServlet 来处理,它会负责调用系统的其他模块来真正处理用户的请求。② DispatcherServlet 收到请求后,将根据请求的信息(包括 URL、HTTP 协议方法、请求头、请求参数、Cookie 等)以及 HandlerMapping 的配置找到处理该请求的 Handler(任何一个对象都可以作为请求的 Handler)。③在这个地方 Spring 会通过 HandlerAdapter 对该处理器进行封装。④ HandlerAdapter 是一个适配器,它用统一的接口对各种 Handler 中的方法进行调用。⑤ Handler 完成对用户请求的处理后,会返回一个 ModelAndView 对象给 DispatcherServlet, ModelAndView 顾名思义,包含了数据模型以及相应的视图的信息。⑥ ModelAndView 的视图是逻辑视图,DispatcherServlet 还要借助 ViewResolver 完成从逻辑视图到真实视图对象的解析工作。⑦ 当得到真正的视图对象后,DispatcherServlet 会利用视图对象对模型数据进行渲染。⑧ 客户端得到响应,可能是一个普通的 HTML 页面,也可以是 XML 或 JSON 字符串,还可以是一张图片或者一个 PDF 文件。52、什么是 XSS 攻击?【困难】答: XSS(Cross Site Script,跨站脚本攻击)是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式。跨站脚本攻击分有两种形式:反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以达到攻击的目标,目前有很多攻击者利用论坛、微博发布含有恶意脚本的 URL 就属于这种方式)和持久型攻击(将恶意脚本提交到被攻击网站的数据库中,用户浏览网页时,恶意脚本从数据库中被加载到页面执行,QQ 邮箱的早期版本就曾经被利用作为持久型跨站脚本攻击的平台)。XSS 虽然不是什么新鲜玩意,但是攻击的手法却不断翻新,防范 XSS 主要有两方面:消毒(对危险字符进行转义)和 HttpOnly (防范 XSS 攻击者窃取 Cookie 数据)。53、SQL 注入攻击?【困难】答: SQL 注入攻击是注入攻击最常见的形式(此外还有 OS 注入攻击(Struts 2 的高危漏洞就是通过 OGNL 实施 OS 注入攻击导致的)),当服务器使用请求参数构造 SQL 语句时,恶意的 SQL 被嵌入到 SQL 中交给数据库执行。SQL 注入攻击需要攻击者对数据库结构有所了解才能进行,攻击者想要获得表结构有多种方式:(1)如果使用开源系统搭建网站,数据库结构也是公开的(目前有很多现成的系统可以直接搭建论坛,电商网站,虽然方便快 捷但是风险是必须要认真评估的);(2)错误回显(如果将服务器的错误信息直接显示在页面上,攻击者可以通过非法参数引发页面错误从而通过错误信息了解数据库结构,Web应用应当设置友好的错误页,一方面符合最小惊讶原则,一方面屏蔽掉可能给系统带来危险的错误回显信息);(3)盲注。防范 SQL 注入攻击也可以采用消毒的方式,通过正则表达式对请求参数进行验证,此外,参数绑定也是很好的手段,这样恶意的 SQL 会被当做 SQL 的参数而不是命令被执行,JDBC 中的 PreparedStatement 就是支持参数绑定的语句对象,从性能和安全性上都明显优于 Statement。54、什么是CSRF攻击?【困难】答: CSRF 攻击(Cross Site Request Forgery,跨站请求伪造)是攻击者通过跨站请求,以合法的用户身份进行非法操作(如转账或发帖等)。CSRF 的原理是利用浏览器的 Cookie 或服务器的 Session,盗取用户身份,其原理如下图所示。防范 CSRF 的主要手段是识别请求者的身份,主要有以下几种方式:(1)在表单中添加令牌(token);(2)验证码;(3)检查请求头中的 Referer。令牌和验证都具有一次消费性的特征,因此在原理上一致的,但是验证码是一种糟糕的用户体验,不是必要的情况下不要轻易使用验证码,目前很多网站的做法是如果在短时间内多次提交一个表单未获得成功后才要求提供验证码,这样会获得较好的用户体验。四、redis55、使用redis有哪些好处?【基础】答:
速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
支持丰富数据类型,支持string,list,set,sorted set,hash
支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
56、Redis有哪些数据结构?【基础】答:字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。57、如果有大量的key需要设置同一时间过期,一般需要注意什么?【中等】答:如果大量的key过期时间设置的过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿现象。一般需要在时间上加一个随机值,使得过期时间分散一些。58、为什么Redis需要把所有数据放到内存中?【中等】答:Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。 如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。59、Redis提供了哪几种持久化方式?【中等】答:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。
AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。
如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式。
你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。
最重要的事情是了解RDB和AOF持久化方式的不同,让我们以RDB持久化方式开始。
60、如何选择合适的持久化方式?【中等】答:一般来说, 如果想达到足以媲美PostgreSQL的数据安全性, 你应该同时使用两种持久化功能。如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失,那么你可以只使用RDB持久化。有很多用户都只使用AOF持久化,但并不推荐这种方式:因为定时生成RDB快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比AOF恢复的速度要快,除此之外, 使用RDB还可以避免之前提到的AOF程序的bug。61、redis支持的java客户端你用过哪个?【基础】答: Jedis,Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。62、Redis集群的主从复制模型是怎样的?【困难】答:为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有N-1个复制品。63、Redis集群之间是如何复制的?【中等】答:异步复制。64、怎么测试Redis的连通性?【基础】ping。五、消息队列65、为什么要用消息队列?【中等】解耦、异步、削峰A系统调用B系统、C系统,传统的调用是直接调用,但是当B系统说我不需要你提供数据了,这时候A需要改代码,C系统说我不需要某个字段了,这时候A也要改代码,如果又多了一个D系统,A又要写代码。为了实现解耦,引入消息队列,A将产生的数据丢到消息队列中,哪个系统需要 哪个系统就去取;
A系统调用B系统,B系统由于某个需要调用第三方接口超时,导致A系统响应速度慢,而B系统的好坏又不会影响业务逻辑,所以可以改为A异步调用B,A将消息丢到消息队列中,B系统订阅消息,实现A的快速响应;
当大量流量请求到系统A时,由于数据库的处理能力有限,造成数据库连接异常。使用消息队列,大量请求先丢到消息队列中,系统A使用按批拉数据的方式,批量处理数据,生产中,高峰期短暂的消息积压是允许的。
66、使用消息队列有什么缺点【中等】系统复杂性增加:加了消息队列,需要保证消息不会重复消费,需要保证消息的可靠性,需要保证消息队列的高可用
系统的可用性降低:如果消息队列挂了,那么系统也会受到影响
67、为什么选用RocketMQ;RocketMQ和ActiveMQ的区别【困难】RocketMQ模型简单、接口易用,在阿里大规模使用,社区活跃,单机吞吐量10万级,可用性非常高,消息理论上不会丢失;ActiveMQ严格遵循JMS规范,可持久化到内存、文件、数据库,可用性高主要是主从,多语言支持,消失丢失率低;
RocketMQ持久化到磁盘文件,可用性非常高,支持分布式,只支持Java,消息理论上不会丢失;
68、RocketMQ是怎么保证系统高可用的?【困难】多Master部署,防止单点故障;
主从结构,消息冗余,防止消息丢失;
69、消息中间件集群崩溃,如何保证百万生产数据不丢失?【中等】答: 把消息持久化写入到磁盘上去 。六、spring boot70、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?【中等】Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。bootstrap 配置文件有以下几个应用场景:71、Spring Boot 的配置文件有哪几种格式?它们有什么区别?【中等】.properties 和 .yml,它们的区别主要是书写格式不同。1).propertiesapp.user.name = javastack2).ymlapp:
user:
name: javastack
另外,.yml 格式不支持 @PropertySource 注解导入配置。72、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?【基础】启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。
73、开启 Spring Boot 特性有哪几种方式?【基础】1)继承spring-boot-starter-parent项目2)导入spring-boot-dependencies项目依赖74、Spring Boot 需要独立的容器运行吗?【基础】可以不需要,内置了 Tomcat/ Jetty 等容器。75、如何在 Spring Boot 启动的时候运行一些特定的代码?【中等】Spring Boot Runner启动器,可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法。76、Spring Boot 有哪几种读取配置的方式?【中等】Spring Boot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationProperties 来绑定变量。实例:单个注入:@Value("${book.author}"),映射一个类:@ConfigurationProperties(prefix="author",locations={"classpath:author.properties"})通过prefix指定前缀,通过locations指定位置77、Spring Boot 如何定义多套不同环境配置?【中等】提供多套配置文件,按照application-xxx.properties格式建立文件,并在application.properties中指定。如:application.properties
application-dev.properties
application-test.properties
application-prod.properties
78、SpringBoot中的定时任务如何实现?【中等】通过配置注解@EnableScheduline来开启对计划任务的支持,然后再要执行的任务上加注解@Scheduled。79、我们如何连接一个像 MYSQL 或者 orcale 一样的外部数据库?【中等】让我们以 MySQL 为例来思考这个问题:第一步 - 把 mysql 连接器的依赖项添加至 pom.xml<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
第二步 - 配置你的 MySQL 数据库连接配置 application.propertiesspring.datasource.url=jdbc:mysql://localhost:3306/todo_example
spring.datasource.username=todouser
spring.datasource.password=YOUR_PASSWORD
第三步 - 重新启动,你就准备好了!七、spring cloud80、什么是微服务【中等】
以前的模式是 所有的代码在同一个工程中 部署在同一个服务器中 同一个项目的不同模块不同功能互相抢占资源
微服务 将工程根据不同的业务规则拆分成微服务 微服务部署在不同的机器上 服务之间进行相互调用
Java微服务的框架有 dubbo(只能用来做微服务),spring cloud(提供了服务的发现,断路器等)
**81、微服务之间是如何独立通讯的spring Cloud和 Dubbo有哪些区別?【困难】 **答:
springcloud服务注册中心是Spring Cloud Netflix Eureka
dubbo的注册中心一般是zookeeper
dubbo只是类似Netflix的一个子集只有注册中心,其他springcloud组件没有
springcloud的调用方式是REST API
dubbo的调用方式是RPC
RPC服务提供方与调用方接口依赖方式太强
我们为每个微服务定义了各自的service抽象接口
并通过持续集成发布到私有仓库中
调用方应用对微服务提供的抽象接口存在强依赖关系
REST方式的服务依赖要比RPC方式的依赖更为灵活
Dubbo的文档可以说在国内开源框架中算是一流的,非常全,并且讲解的也非常深入,国内开发者来说,阅读起来更加容易上手
82、springcloud如何实现服务的注册和发现【中等】
服务在发布时 指定对应的服务名(服务名包括了IP地址和端口) 将服务注册到注册中心(eureka或者zookeeper)
这一过程是springcloud自动实现 只需要在main方法添加@EnableDisscoveryClient 同一个服务修改端口就可以启动多个实例
调用方法:传递服务名称通过注册中心获取所有的可用实例 通过负载均衡策略调用(ribbon和feign)对应的服务
83、Ribbon和Feign的区别【中等】Ribbon和Feign都是用于调用其他服务的,不过方式不同。1.启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。2.服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。3.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。84、springcloud断路器的作用【中等】当一个服务调用另一个服务由于网络原因或者自身原因出现问题时 调用者就会等待被调用者的响应 当更多的服务请求到这些资源时。导致更多的请求等待 这样就会发生连锁效应(雪崩效应) 断路器就是解决这一问题85、springcloud如何实现服务的注册和发现【中等】答:服务在发布时 指定对应的服务名,服务名包括了IP地址和端口,将服务注册到注册中心eureka或者zookeeper,这一过程是springcloud自动实现,只需要在main方法添加 @ EnableDisscoveryClient,同一个服务修改端口就可以启动多个实例。86、springcloud中的组件有那些?【中等】答:独挑大梁,独自启动不需要依赖其它组件1)Eureka,服务注册中心,特性有失效剔除、服务保护2)Dashboard,Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集器Turbine配合3)Zuul,API服务网关,功能有路由分发和过滤4)Config,分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式润物无声,融合在每个微服务中、依赖其它组件并为其提供服务1)Ribbon,客户端负载均衡,特性有区域亲和,重试机制2)Hystrix,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离3)Feign,声明式服务调用本质上就是Ribbon+Hystrix4)Stream,消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区5)Bus,消息总线,配合Config仓库修改的一种Stream实现,6)Sleuth,分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合八、其他87、cookie和session的区别【基础】1、Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。session: 当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。cookie机制:采用的是在客户端保持状态的方案,而session机制采用的是在服务端保持状态的方案。同时我们看到由于服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助cookie机制来达到保存标识的目的。2、Session是服务器用来跟踪用户的一种手段,每个Session都有一个唯一标识:session ID。当服务器创建了Session时,给客户端发送的响应报文包含了Set-cookie字段,其中有一个名为sid的键值对,这个键值Session ID。客户端收到后就把Cookie保存浏览器,并且之后发送的请求报表都包含SessionID。HTTP就是通过Session和Cookie这两个发送一起合作来实现跟踪用户状态,Session用于服务端,Cookie用于客户端88、一次完整的http请求过程【中等】域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。89、讲一下长连接【困难】一、基于http协议的长连接在HTTP1.0和HTTP1.1协议中都有对长连接的支持。其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能够支持,而HTTP1.1默认支持.http1.0请求与服务端的交互过程:
客户端发出带有包含一个header:”Connection: keep-alive“的请求
服务端接收到这个请求后,根据http1.0和”Connection: keep-alive“判断出这是一个长连接,就会在response的header中也增加”Connection: keep-alive“,同是不会关闭已建立的tcp连接.
客户端收到服务端的response后,发现其中包含”Connection: keep-alive“,就认为是一个长连接,不关闭这个连接。并用该连接再发送request.转到a)。
二、发心跳包。每隔几秒就发一个数据包过去90、TCP如何保证可靠传输?【困难】
三次握手。
将数据截断为合理的长度。应用数据被分割成 TCP 认为最适合发送的数据块(按字节编号,合理分片)
超时重发。当 TCP 发出一个段后,它启动一个定时器,如果不能及时收到一个确认就重发
对于收到的请求,给出确认响应
校验出包有错,丢弃报文段,不给出响应
对失序数据进行重新排序,然后才交给应用层
对于重复数据 , 能够丢弃重复数据
流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
拥塞控制。当网络拥塞时,减少数据的发送。
91、URI和URL的区别【中等】URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的URI一般由三部组成:
访问资源的命名机制
存放资源的主机名
资源自身的名称,由路径表示,着重强调于资源。
URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
协议(或称为服务方式)
存有该资源的主机IP地址(有时也包括端口号)
主机资源的具体地址。如目录和文件名等
92、http和https的区别?【中等】
https协议需要到CA申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协 议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
http默认使用80端口,https默认使用443端口
93、docker常用命令【中等】1.docker images // 查看镜像
2.docker run 镜像名称
// 生成一个正在运行的容器实例
3.docker stop 容器名称
// 停止容器
4.docker rm 容器名称
// 删除容器
5.docker start 容器名称
// 启动容器
6.docker restart 容器名称
//重启容器
7.docker rmi 镜像名称
// 删除镜像
8.docker exec -it 容器名称 /bin/bash
// 进入容器
9.docker ps
// 显示正在运行的所有容器
10.docker ps -a
// 显示所有容器(包括已经停止的)
11.docker pull 镜像名称:版本号
// 拉取镜像
94、什么是Docker镜像?【中等】Docker镜像是Docker容器的源代码。换句话说,Docker镜像用于创建容器。使用build命令创建映像,并且在使用run启动时它们将生成容器。镜像存储在Docker注册表http://registry.hub.docker.com中,因为它们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据。95、什么是Docker容器?【中等】Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,作为主机操作系统上用户空间中的独立进程运行。Docker容器不依赖于任何特定的基础架构:它们可以在任何计算机,任何基础架构和任何云中运行。96、什么是Docker Hub?【中等】Docker hub是一个基于云的注册表服务,允许您链接到代码存储库,构建镜像并测试它们,存储手动推送的镜像以及指向Docker云的链接,以便您可以将镜像部署到主机。它为整个开发流程中的容器镜像发现,分发和变更管理,用户和团队协作以及工作流自动化提供了集中资源。97、什么是 Git 复刻(fork)?复刻(fork)、分支(branch)和克隆(clone)之间有什么区别?【中等】复刻(fork)
是对存储仓库(repository)进行的远程的、服务器端的拷贝,从源头上就有所区别。复刻实际上不是 Git 的范畴。它更像是个政治/社会概念。克隆(clone)
不是复刻,克隆是个对某个远程仓库的本地拷贝。克隆时,实际上是拷贝整个源存储仓库,包括所有历史记录和分支。分支(branch)
是一种机制,用于处理单一存储仓库中的变更,并最终目的是用于与其他部分代码合并。98、“git pull”和“git fetch”之间有什么区别?【中等】简单来说,git pull 是 git fetch + git merge。 当你使用 pull,Git 会试着自动为你完成工作。它是上下文(工作环境)敏感的,所以 Git 会把所有拉取的提交合并到你当前处理的分支中。pull 则是 自动合并提交而没有让你复查的过程。如果你没有细心管理你的分支,你可能会频繁遇到冲突。当你 fetch,Git 会收集目标分支中的所有不存在的提交,并将这些提交存储到本地仓库中。但Git 不会把这些提交合并到当前分支中。这种处理逻辑在当你需要保持仓库更新,在更新文件时又希望处理可能中断的事情时,这将非常实用。而将提交合并到主分支中,则该使用 merge。99、使用Ajax的优缺点分别是什么?【中等】优点交互性更好。来自服务器的新内容可以动态更改,无需重新加载整个页面。
减少与服务器的连接,因为脚本和样式只需要被请求一次。
状态可以维护在一个页面上。JavaScript 变量和 DOM 状态将得到保持,因为主容器页面未被重新加载。
基本上包括大部分 SPA 的优点。
缺点动态网页很难收藏。
如果 JavaScript 已在浏览器中被禁用,则不起作用。
有些网络爬虫不执行 JavaScript,也不会看到 JavaScript 加载的内容。
基本上包括大部分 SPA 的缺点。
100、跨域问题,谁限制的跨域,怎么解决【困难】浏览器的同源策略导致了跨域
用于隔离潜在恶意文件的重要安全机制
jsonp ,允许 script 加载第三方资源
nginx 反向代理(nginx 服务内部配置 Access-Control-Allow-Origin *)
cors 前后端协作设置请求头部,Access-Control-Allow-Origin 等头部信息
iframe 嵌套通讯,postmessage
}

我要回帖

更多关于 显示你已经添加了对方 的文章

更多推荐

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

点击添加站长微信