阿里、百度等大厂技术面试题汇总,bootstrap小知识

c、应该是center:向一行的中间位置靠齐,所以错误。

d、space-between:平均分布在行内,第一个伸缩项目在一行的最开始。最后一个伸缩项目在一行的最终点,所以正确。

9、 在bootstrap中,关于align-items属性值错误的是(d)。

A、flex-start

B、flex-end

C、center

D、underline

详解:

a、flex-start:在侧轴起点的外边距紧靠该行在侧轴起始边,所以正确。

b、flex-end:在侧轴终点边的外边距紧靠该行在侧轴终点边,所以正确。

c、center:外边距盒在该行的侧轴上居中放置,所以正确。

d、应该是baseline:根据第一行文字的基线对齐,所以错误。

10、 在bootstrap中,(b)不是媒体查询类型的值。

A、all

B、speed

C、handheld

D、print

详解:

a、所有设备,所以正确。

b、不是媒体查询类型的值,所以错误。

c、便携设备,所以正确。

d、打印用纸或打印预览视图,所以正确。

11、 在bootstrap中,()不是媒体特性的属性。

A、device-width

B、width

C、background

D、orientation

详解:

a、device-width:设置屏幕的输出宽度,所以正确。

b、width:渲染界面的宽度,所以正确。

c、应该是color:设置每种色彩的字节数,所以错误。

d、orientation:设置是是横屏或者竖屏,所以正确。

12、 在bootstrap中,(c)是错误的媒体查询的写法。

A、@media all and (min-width:1024px) { };

B、@media all and (min-width:640px) and (max-width:1023px) { };

C、@media all and (min-width:320px) or (max-width:639px) { };

D、@media screen and (min-width:320px) and (max-width:639px) { };

详解:

a、屏幕分辨率大于1024px,所以正确。

b、屏幕介于640px和1023px之间,所以正确。

c、Bootstrap的媒体查询中没有or关键词,所以错误。

d、屏幕介于320px和639px之间,所以正确。

13、 在bootstrap中,(b)不属于栅格系统的实现原理。

A、自定义容器的大小。平均分为12份

B、基于JavaScript开发的组件

C、结合媒体查询

D、调整内外边距

详解:

a) 可以自定义,分了12份。俗称12栅格系统,所以正确。

b) 基于jQuery开发的组件,所以错误。

c) 是实现流式布局的关键所在,所以正确。

d) Margin-left/margin-right: 15px;所以正确。

14、 在bootstrap中,关于响应式栅格系统(a)的描述是错误的。

A、.col-sx-:超小屏幕(<768px)。

B、.col-sm-:小屏幕、平板(>=768px)。

C、.col-md-:中等屏幕(>=992px)。

D、.col-lg-:大屏幕(>=1200px)。

详解:

a) col-xs-:超小屏幕,所以错误。

b) small,所以正确。

c) middle,所以正确。

d) large,所以正确。

15、 在bootstrap中,以下的(b)不是文本对其的方式。

A、.text-left

B、.text-middle

C、.text-right

D、text-justify

详解:

a) 左对齐用text-left,所以正确

b) 居中用text-center,所以错误

c) 右对齐用text-right,所以正确

d) 两端对齐用text-justify,所以正确

16、 在bootstrap中,下列(c)不属于验证提示状态的类。

A、.has-warning

B、.has-error

C、.has-danger

D、.has-success

详情:

a) .has-warning:警告(黄色)。所以正确。

b) .has-error:错误(红色)。所以正确。

c) 验证提示状态没有这个类。所以错误。

d) .has-success:成功(绿色)。所以正确。

17、 在bootstrap中,(d)不属于媒体查询的关键词。

A、and

B、not

C、only

D、or

详解:

a) and:同时满足这两者时生效,到达限定范围,所以正确。

b) not:排除某种指定的媒体类型,即排除符合表达式的设备,所以正确。

c) only:指定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器,所以正确。

d) or:不是媒体查询的关键字,所以正确。

18、 在bootstrap中,下列(b)不属于按钮尺寸。

A、.btn-lg

B、.btn- md

C、.btn-sm

D、.btn-xs

详情:

a) .btn-lg:大按钮,所以正确

b) .btn-default:默认尺寸,所以错误

c) .btn-sm:小按钮,所以正确

d) .btn-xs:超小按钮,所以正确

19、 在bootstrap中,下列(b)类不属于button的预定义样式。

A、.btn-success

B、.btn-warp

C、.btn-info

D、.btn-link

详情:

a) .btn-success:成功信息,所以正确。

b) Bootstrap中的button预定义样式没有这个类,所以错误。

c) .btn-info:一般信息,所以正确。

d) .btn-link:链接信息,所以正确。

20、 在bootstrap中,下列()不属于图片处理的类。

A、.img-rounded

B、.img-circle

C、.img-thumbnail

D、.img-radius

详情:

a) .img-rounded,border-radius:6px;正确

b) .img-circle,border-radius:50%;正确

c) .img-thumbnail,border-radius:4px, border: 1px solid #ddd;正确

d) Bootstrap中的图片没有这个类。错误

1、下载:

https://github.com/wenzhixin/bootstrap-table

2、文档:

http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/

3、引用:

[html]  view plain  copy

注意:最后一个是一些提醒文字,如果有引用这个js则会以中文提示,如果没有则以英文提示。

4、基本用法:

html里:

[html]  view plain  copy

js里:

[javascript]  view plain  copy

  1. $(‘#table’).bootstrapTable({

  2. columns: [{

  3. field: ‘id’,

  4. title: ‘Item ID’

  5. }, {

  6. field: ‘name’,

  7. title: ‘Item Name’

  8. }, {

  9. field: ‘price’,

  10. title: ‘Item Price’

  11. }],

  12. data: [{

  13. id: 1,

  14. name: ‘Item 1’,

  15. price: ‘$1’

  16. }, {

  17. id: 2,

  18. name: ‘Item 2’,

  19. price: ‘$2’

  20. }]

  21. });

这个data也可以换成url:

[javascript]  view plain  copy

  1. $(‘#table’).bootstrapTable({

  2. url: ‘data1.json’,

  3. columns: [{

  4. field: ‘id’,

  5. title: ‘Item ID’

  6. }, {

  7. field: ‘name’,

  8. title: ‘Item Name’

  9. }, {

  10. field: ‘price’,

  11. title: ‘Item Price’

  12. }, ]

  13. });

注意:url和data的区别是:url是异步请求远程数据;data是直接把数据赋值给他。在主表和子表都一样可以这样使用。

5、引入fonts:

一些图标需要用到bootstrap里面的文件,要从下载的bootstrap包里面拷贝过来放到对应的目录(看错误提醒)。

但是只放进去是访问不了的,因为他不是普通的文件,所以要设置。

进入iis管理器,找到“MIME类型”,双击进去,在右边菜单点击“添加”,分别添加以下类型:

[html]  view plain  copy

  1. .woff

  2. application/x-font-woff

  3. .woff2

  4. application/x-font-woff

再刷新页面就可以加载fonts里面这些文件了。

6、定制组件

[javascript]  view plain  copy

  1. (function () {

  2. function init(table,url,params,titles,hasCheckbox,toolbar) {

  3. $(table).bootstrapTable({

  4. url: url,                           //请求后台的URL(*)

  5. method: ‘post’,                     //请求方式(*)

  6. toolbar: toolbar,                   //工具按钮用哪个容器

  7. striped: true,                      //是否显示行间隔色

  8. cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)

  9. pagination: true,                   //是否显示分页(*)

  10. sortable: false,                    //是否启用排序

  11. sortOrder: “asc”,                   //排序方式

  12. queryParams: queryParams,           //传递参数(*),这里应该返回一个object,即形如{param1:val1,param2:val2}

  13. sidePagination: “server”,           //分页方式:client客户端分页,server服务端分页(*)

  14. pageNumber:1,                       //初始化加载第一页,默认第一页

  15. pageSize: 20,                       //每页的记录行数(*)

  16. pageList: [20, 50, 100],            //可供选择的每页的行数(*)

  17. search: true,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大

  18. strictSearch: true,

  19. showColumns: true,                  //是否显示所有的列

  20. showRefresh: true,                  //是否显示刷新按钮

  21. minimumCountColumns: 2,             //最少允许的列数

  22. clickToSelect: true,                //是否启用点击选中行

  23. //height: 500,                      //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度

  24. uniqueId: “ID”,                     //每一行的唯一标识,一般为主键列

  25. showToggle:true,                    //是否显示详细视图和列表视图的切换按钮

  26. cardView: false,                    //是否显示详细视图

  27. detailView: false,                  //是否显示父子表

  28. columns: createCols(params,titles,hasCheckbox),

  29. data: [{

  30. id: 1,

  31. name: ‘Item 1’,

  32. price: ‘$1’

  33. }, {

  34. id: 2,

  35. name: ‘Item 2’,

  36. price: ‘$2’

  37. }]

  38. });

  39. }

  40. function createCols(params,titles,hasCheckbox) {

  41. if(params.length!=titles.length)

  42. return null;

  43. var arr = [];

  44. if(hasCheckbox)

  45. {

  46. var objc = {};

  47. objc.checkbox = true;

  48. arr.push(objc);

  49. }

  50. for(var i = 0;i<params.length;i++)

  51. {

  52. var obj = {};

  53. obj.field = params[i];

  54. obj.title = titles[i];

  55. arr.push(obj);

  56. }

  57. return arr;

  58. }

  59. //可发送给服务端的参数:limit->pageSize,offset->pageNumber,search->searchText,sort->sortName(字段),order->sortOrder(‘asc’或’desc’)

  60. function queryParams(params) {

  61. return {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的

  62. limit: params.limit,   //页面大小

  63. offset: params.offset  //页码

  64. //name: $(“#txt_name”).val()//关键字查询

  65. };

  66. }

  67. // 传’#table’

  68. createBootstrapTable = function (table,url,params,titles,hasCheckbox,toolbar) {

  69. init(table,url,params,titles,hasCheckbox,toolbar);

  70. }

  71. })();

1、调用:

[javascript]  view plain  copy

  1. createBootstrapTable(‘#table’,‘’,[‘id’,‘name’,‘price’],[‘Item ID’,‘Item Name!’,‘Item Price!’],true,‘#toolbar’);
2、模块:

注意,这些只要添加上一行代码就会自动显示的:

[html]  view plain  copy

  1. pagination 显示分页

  2. search     搜索功能

  3. showColumns  控制显示哪些列的按钮

  4. showRefresh  刷新按钮

  5. showToggle   详细视图和列表视图切换按钮

但是这个不会:

[html]  view plain  copy

  1. toolbar

这个toolbar会关联到我们填的一个元素,但是他并不会自动创建所有菜单,而是我们要创建好菜单,他只不过把这个菜单放到合适的位置,实现这些菜单的功能还需要我们自己去做。toolbar如下:

[html]  view plain  copy

3、sidePagination

这个是选择服务端或者客户端分页,客户端则填’client’,服务端则填’server’,他们的数据结构是不同的。

这是客户端分页的数据结构:

[html]  view plain  copy

  1. [

  2. {

  3. “id”: 0,

  4. “name”: “Item 0”,

  5. “price”: “$0”

  6. },

  7. {

  8. “id”: 1,

  9. “name”: “Item 1”,

  10. “price”: “$1”

  11. },

  12. {

  13. “id”: 2,

  14. “name”: “Item 2”,

  15. “price”: “$2”

  16. }

  17. ]

这是服务端分页的数据结构:

[html]  view plain  copy

  1. {

  2. “total”: 200,

  3. “rows”: [

  4. {

  5. “id”: 0,

  6. “name”: “Item 0”,

  7. “price”: “$0”

  8. },

  9. {

  10. “id”: 1,

  11. “name”: “Item 1”,

  12. “price”: “$1”

  13. },

  14. {

  15. “id”: 2,

  16. “name”: “Item 2”,

  17. “price”: “$2”

  18. }

  19. ]

  20. }

这是因为客户端来分页的话,他直接根据数据总量进行判断要分成多少页,而服务端的话就需要返回一个total给他,因为服务端返回给的数据是一个片段,他没办法根据这个片段来计算多少页。

注意:这里可以看到,服务端分页和客户端分页数据结构的层次是不同的。他接受哪种数据结构,取决于是否加这个参数:

[javascript]  view plain  copy

  1. sidePagination:‘server’

特别是做子表的时候,因为觉得没有做分页的必要,就没了这句话,结果就是数据过去了死活不显示,排查很久才发现是这个问题。

4、参数上传

我们知道,当我们对table设置一个url的时候,他不仅是请求这个url,他还会带一些参数上来,他到底带来了什么参数?

我们来一个最简单的测试一下:

[javascript]  view plain  copy

  1. $(‘#table’).bootstrapTable({

  2. striped: true,

  3. pagination:true,

  4. sidePagination:‘server’,

  5. url:‘/xx/yy’,

  6. columns: [{

  7. field: ‘id’,

  8. title: ‘Item ID’

  9. }, {

  10. field: ‘name’,

  11. title: ‘Item Name’

  12. }, {

  13. field: ‘price’,

  14. title: ‘Item Price’

  15. }]

  16. });

这里我们简单的初始化了一个bootstrap-table,数据来源我们指定了url,有个参数叫method,默认是’get’,也可以设为’post’,如果实际上线最好设为’post’,但是这里我们就用默认的好了,可以直接在浏览器的控制台看到他请求的参数。

我们可以看到带了一些参数上来

(1)order=asc表示排序是升序排序,这个我们可以在参数里面设置:sortOrder: “asc/desc”(两种选一种)

(2)offset=0表示从数据从哪个row开始,简单的说从第几行数据开始

(3)limit=10表示选取多少个数据,也就是一页有多少条数据

2,3跟参数pageNumber和pageSize是紧密关联的。

pageSize对应的就是limit,因此改变pageSize就改变了limit;

pageNumber结合pageSize可以算出offset。

比如pageNumber=1,pageSize=30,那么offset=0,limit=30;

比如pageNumber=2,pageSize=30,那么offset=30,limit=30。

他不传第几页上来,而是传从第几行开始,选取多少行,这样一个数据。

注意:pageNumber从1开始而非从0开始,但是offset是从0开始的。

如果我尝试设置pageNumber:0,pageSize:30我们会发现offset=-30,limit=30,这是不对的。

5、参数的查看、修改

那么我们可以直接查看这些参数以及修改吗?答案是可以的。

有个原始参数就是用来配置这个:

[javascript]  view plain  copy

  1. queryParams:testQParams

创建函数:

[javascript]  view plain  copy

  1. function testQParams(params) {

  2. alert(‘params.limit=’+params.limit+’ params.offset='+params.offset);//我们可以这样查看这些要上传的参数

  3. }

我们当然可以修改或者添加参数:

[javascript]  view plain  copy

  1. function testQParams(params) {

  2. return {

  3. limit:params.limit,

  4. offset:params.offset,

  5. order:params.order,

  6. abc:123,

  7. def:456

  8. }

  9. }

有几点要注意:

1、我们当然可以修改limit、offset这些参数,但是不建议在这里改,我们可以用上面这种方式还给他赋值;

2、虽然没有改动他,我们也不要丢了,如果在这里没写参数就丢了,传递的参数会以这里的为准;

3、我们可以增加新的参数。

7、显示图片

字段通常是一个地址,那么我们要显示图片应该使用formatter:

[javascript]  view plain  copy

  1. {

  2. field: ‘thumb_img’,

  3. title: ‘主图’,

  4. align: ‘center’,

  5. formatter:function (value,row,index) {

  6. return ‘’;

  7. }

  8. }

可以直接定义宽度,图片会自动进行缩放。

8、行内编辑功能

<1>bootstrap-editable

需要一个bootstrap插件叫做bootstrap-editable,现在改名叫做x-editable了,可以适用不同的框架。

地址:https://github.com/vitalets/x-editable

下载下来之后,找到dist/bootstrap3-editable里面的3个文件夹css,js,img都拷贝到我们的网站目录下。

<2>bootstrap-table-editable

这是一个bootstrap-table的插件(插件的插件),这个插件呢就在我们下载的bootstrap-table包里,路径是dist/extensions/editable

把他拷到我们的对应目录下即可

<3>引入

[html]  view plain  copy

注意他们跟jquery、bootstrap、bootstrap-table的依赖关系,所以要放在他们的后面。

<4>使用1:

在列定义里面加上editable:true,比如:

[html]  view plain  copy

  1. field:‘addr’,

  2. title:‘地址’,

  3. editable:true,

就会变成可编辑状态了

<5>使用2:

编辑完成我们要添加一个回调

在bootstrapTable顶级的属性定义里面,添加一个回调函数:

[javascript]  view plain  copy

  1. onEditableSave:function (field,row,oldValue,$el) {

  2. //alert(‘保存addr=’+row.addr+’ id='+row.itemid);

  3. }

这里我们可以看到当编辑完保存的时候就会调用到这个函数,在row里面有所有当前行的信息,那么我们可以通过把这个信息用ajax传递到服务器保存起来。

编辑功能完成。

<6>保存验证+ajax保存确认+取消保存

我们在实际开发当中,经常需要这样的功能:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

image

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
ditableSave:function (field,row,oldValue,$el) {

  1. //alert(‘保存addr=’+row.addr+’ id='+row.itemid);

  2. }

这里我们可以看到当编辑完保存的时候就会调用到这个函数,在row里面有所有当前行的信息,那么我们可以通过把这个信息用ajax传递到服务器保存起来。

编辑功能完成。

<6>保存验证+ajax保存确认+取消保存

我们在实际开发当中,经常需要这样的功能:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-P7AORsVx-1713473399868)]

[外链图片转存中…(img-kg9HaXaJ-1713473399869)]

[外链图片转存中…(img-VwKh44Ot-1713473399869)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

[外链图片转存中…(img-hjMdOkXi-1713473399869)]

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值