07
2020
07

Android Intent 的使用

在一个 Android 应用中,主要是由一些组件组成,( Activity,Service,ContentProvider,etc.) 在这些组件之间的通讯中,由 Intent 协助完成。正如网上一些人解析所说, Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述, Android 则根据此 Intent 的描述,负责找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。 Intent 在这里起着实现调用者与被调用者之间的解耦作用。Intent 传递过程中,
07
2020
07

什么是 ANR 如何避免它 ?

ANR : Application Not Responding ,五秒在 Android 中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时, Android 就会显示 ANR 对话框了:对输入事件 ( 如按键、触摸屏事件 ) 的响应超过 5 秒意向接受器 (intentReceiver) 超过 10 秒钟仍未执行完毕Android 应用程序完全运行在一个独立的线程中 ( 例如 main) 。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发 ANR
07
2020
07

4 种 activity 的启动模式

standard: 标准模式 ,一调用 startActivity() 方法就会产生一个新的实例。singleTop : 如果已经有一个实例位于 Activity 栈的顶部时,就不产生新的实例,而只是调用 Activity中的 newInstance() 方法。如果不位于栈顶,会产生一个新的实例。singleTask : 会在一个新的 task 中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。singleInstance : 这个跟 singleTask 基本上是一样,只有一个区
07
2020
07

Android 中的长度单位详解

现在这里介绍一下 dp 和 sp 。 dp 也就是 dip 。这个和 sp 基本类似。如果设置表示长度、高度等属性时可以使用 dp 或 sp 。但如果设置字体,需要使用 sp 。 dp 是与密度无关, sp 除了与密度无关外,还与 scale 无关。如果屏幕密度为 160 ,这时 dp 和 sp 和 px 是一样的。 1dp=1sp=1px ,但如果使用 px 作单位,如果屏幕大小不变(假设还是 3.2 寸),而屏幕密度变成了 320 。那么原来TextView 的宽度设成 160px ,在密度
07
2020
07

设计模式和 IoC( 控制反转 )

Android 框架魅力的源泉在于 IoC ,在开发 Android 的过程中你会时刻感受到 IoC 带来的巨大方便,就拿 Activity 来说,下面的函数是框架调用自动调用的:protected void onCreate(Bundle savedInstanceState) ;不是程序编写者主动去调用,反而是用户写的代码被框架调用,这也就反转了!当然 IoC 本身的内涵远远不止这些,但是从这个例子中也可以窥视出 IoC带来的巨大好处。此类的例子在 Android 随处可见,例如说数据库的管
07
2020
07

广播接收者生命周期

一个广播接收者有一个回调方法: void onReceive(Context curContext , Intent broadcastMsg )。当一个广播消息到达接收者是, Android 调用它的 onReceive() 方法并传递给它包含消息的 Intent对象。广播接收者被认为仅当它执行这个方法时是活跃的。当 onReceive() 返回后,它是不活跃的。有一个活跃的广播接收者的进程是受保护的,不会被杀死。但是系统可以在任何时候杀死仅有不活跃组件的进程,当占用的内存别的进程需要时。这带
07
2020
07

ListView 优化

工作原理 :ListView 针对 List 中每个 item ,要求 adapter “ 给我一个视图 ” (getView) 。一个新的视图被返回并显示如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图? NO! 这不可能!实际上 Android 为你缓存了视图。Android 中有个叫做 Recycler 的构件,下图是他的工作原理:如果你有 10 亿个项目 (item) ,其中只有可见的项目存在内存中,其他的在 Recycler 中。1. ListView 先请求一个 type1
07
2020
07

如何启用 Service ,如何停用 Service

Android 中的服务和 windows 中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务的开发比较简单,如下:第一步:继承 Service 类public class SMSService extends Service {}第二步:在 AndroidManifest.xml 文件中的 <application> 节点里对服务进行配置 :<service android:name=”.SMSService”
07
2020
07

请介绍下 Android 中常用的五种布局

Android 布局是应用界面开发的重要一环,在 Android 中,共有五种布局方式,分别是:FrameLayout (框架布局), LinearLayout (线性布局),AbsoluteLayout (绝对布局), RelativeLayout (相对布局), TableLayout (表格布局)。1.FrameLayout这个布局可以看成是墙脚堆东西,有一个四方的矩形的左上角墙脚,我们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简
07
2020
07

Android 常用控件的信息

单选框 (RadioButton 与 RadioGroup) :RadioGroup 用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。事件: setOnCheckedChangeListener() ,处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener 实例作为参数传入。多选框 (CheckBox):每个多选框都是独立的,可以通过迭代所有的多选框,然后根据其状态是否被选中在获取其值。事件: setOnCheckChangeListener()
07
2020
07

Android 系统的架构

android 的系统架构和其操作系统一样,采用了分层的架构。从架构图看, android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和 linux 核心层。1. 应用程序Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端, SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用 JAVA 语言编写的。2. 应用程序框架开发人员也可以完全访问核心应用程序所使用的 API 框架。该应用程序的架构设计简化了组件
07
2020
07

在 android 中 mvc 的具体体现

MVC 是 Model,View,Controller 的缩写,从上图可以看出 MVC 包含三个部分:.. 模型( Model )对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。.. 视图( View )对象:是应用程序中负责生成用户界面的部分。也是在整个MVC 架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。.. 控制器( Control )对象:是根据用户的输入,控制用户界面数据显示及更新Model 对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交
07
2020
07

如何将打开 res aw 目录中的数据库文件 ?

解答:在 Android 中不能直接打开 res aw 目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或 SD 卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource 方法获得 res aw 目录中资源的 InputStream 对象,然后将该InputStream 对象中的数据写入其他的目录中相应文件中。在 Android SDK 中可以使用SQLiteDatabase.openOrCreateDatabas
07
2020
07

如何将 SQLite 数据库 (dictionary.db 文件 ) 与 apk 文件一起发布 ?

解答:可以将 dictionary.db 文件复制到 Eclipse Android 工程中的 res aw 目录中。所有在 res aw 目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将 dictionary.db 文件复制到 res aw 目录中
07
2020
07

让 Activity 变成一个窗口: Activity 属性设定

讲点轻松的吧 , 可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很 简单你只需要设置 一下 Activity 的主题就可以了在 AndroidManifest.xml 中定义 Activity 的 地方一句话:Xml 代码1. android :theme=”@android:style/Theme.Dialog”这就使你的应用程序变成对话框的形式弹出来了,或者Xml 代码1. android:theme=”@android:style/Theme.Translucent”就变成
07
2020
07

sim 卡的 EF 文件有何作用

sim 卡的文件系统有自己规范,主要是为了和手机通讯, sim 本 身可以有自己的操作系统,EF 就是作存储并和手机通讯用的
07
2020
07

Android dvm 的进程和 Linux 的进程 , 应用程序的进程是否为同一个概念

DVM 指 dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。而每一个 DVM 都是在 Linux 中的一个进程,所以说可以认为是同一个概念。 
07
2020
07

android 中线程与线程,进程与进程之间如何通信

1 、一个 Android 程序开始运行时,会单独启动一个 Process 。默认情况下,所有这个程序中的 Activity 或者 Service 都会跑在这个 Process 。默认情况下,一个 Android 程序也只有一个 Process ,但一个 Process 下却可以有许多个 Thread。2 、一个 Android 程序开始运行时,就有一个主线程 Main Thread 被创建。该线程主要负责 UI 界面的显示、更新和控件交互,所以又叫 UI Thread 。一个 Android
07
2020
07

什么是嵌入式实时操作系统 , Android 操作系统属于实时操作系统吗 ?

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而 android 是基于linux 内核的,因此属于软实时。
07
2020
07

handler 机制的原理

andriod 提供了 Handler 和 Looper 来满足线程间的通信。 Handler 先进先出原则。 Looper 类用来管理特定线程内对象之间的消息交换 (Message Exchange) 。1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的 Message Queue( 消息队列 ) 。2)Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里; 或者接收 Looper
07
2020
07

一条最长的短信息约占多少 byte?

中文70( 包括标点) ,英文160 ,160 个字节。
07
2020
07

android 中的动画有哪几类,它们的特点和区别是什么 ?

两种,一种是 Tween 动画、还有一种是 Frame 动画。 Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化 ; 另一种 Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
07
2020
07

横竖屏切换时候 activity 的生命周期

1. 不设置 Activity 的 android:configChanges 时 , 切屏会重新调用各个生命周期 , 切横屏时会执行一次 , 切竖屏时会执行两次 .2. 设置 Activity 的 android:configChanges=”orientation” 时 , 切屏还是会重新调用各个生命周期 , 切横、竖屏时只会执行一次 .3. 设置 Activity 的 android:configChanges=”orientation|keyboardHidden” 时 , 切屏不会重新
07
2020
07

如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?

当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B这个时候A会执行Java代码public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong(“id”, 1234567890);}B 完成以后又会来找A, 这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A就要重新调用onCreate()方
07
2020
07

vue如何自定义一个过滤器?

html代码:<div id="app">     <input type="text" v-model="msg" />     {{msg| capitalize }}</div>JS代码:var vm=new Vue({    el:"#app",    data:{ 
07
2020
07

vue-cli如何新增自定义指令?

1.创建局部指令var app = new Vue({    el: '#app',    data: {        },    // 创建指令(可以多个)    directives: {        // 指令名称        dir1: {    &
07
2020
07

vue路由的钩子函数

首页可以控制导航跳转,beforeEach,afterEach等,一般用于页面title的修改。一些需要登录才能调整页面的重定向功能。beforeEach主要有3个参数to,from,next:to:route即将进入的目标路由对象,from:route当前导航正要离开的路由next:function一定要调用该方法resolve这个钩子。执行效果依赖next方法的调用参数。可以控制网页的跳转。
07
2020
07

Vue与Angular以及React的区别?

(版本在不断更新,以下的区别有可能不是很正确。我工作中只用到vue,对angular和react不怎么熟)1.与AngularJS的区别相同点:都支持指令:内置指令和自定义指令;都支持过滤器:内置过滤器和自定义过滤器;都支持双向数据绑定;都不支持低端浏览器。不同点:AngularJS的学习成本高,比如增加了Dependency Injection特性,而Vue.js本身提供的API都比较简单、直观;在性能上,AngularJS依赖对数据做脏检查,所以Watcher越多越慢;Vue.js使用基于依
07
2020
07

Vue的路由实现:hash模式 和 history模式

hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash读取;特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 http://www.xxx.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误。history模式:history采用HTML5的新特性;且提供了两个新方法:pus
07
2020
07

Vue实现数据双向绑定的原理:Object.defineProperty()

vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访
07
2020
07

什么是MVVM?

MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Mod
07
2020
07

mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

mvc和mvvm其实区别并不大。都是一种设计思想。主要就是mvc中Controller演变成mvvm中的viewModel。mvvm主要解决了mvc中大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。区别:vue数据驱动,通过数据来显示视图层而不是节点操作。场景:数据操作比较多的场景,更加便捷
07
2020
07

组件之间的传值?

父组件与子组件传值父组件通过标签上面定义传值子组件通过props方法接受数据子组件向父组件传递数据子组件通过$emit方法传递参数
07
2020
07

路由之间跳转

声明式(标签跳转) 编程式( js跳转)
07
2020
07

v-show和v-if指令的共同点和不同点

v-show指令是通过修改元素的display的CSS属性让其显示或者隐藏;v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果;使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。
07
2020
07

keep-alive /keep-alive的作用是什么?

包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染。
07
2020
07

Vue中引入组件的步骤?

1)采用ES6的import … from …语法或CommonJS的require()方法引入组件2)对组件进行注册,代码如下// 注册Vue.component(‘my-component’, { template:’A custom component!'})3)使用组件
07
2020
07

指令v-el的作用是什么?

提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标.可以是 CSS 选择器,也可以是一个 HTMLElement 实例
07
2020
07

在Vue中使用插件的步骤

采用ES6的import … from …语法或CommonJSd的require()方法引入插件使用全局方法Vue.use( plugin )使用插件,可以传入一个选项对象Vue.use(MyPlugin, { someOption: true })
07
2020
07

active-class是哪个组件的属性?

vue-router模块的router-link组件。
07
2020
07

怎么定义vue-router的动态路由以及如何获取传过来的动态参数?

在router目录下的index.js文件中,对path属性加上/:id。使用router对象的params.id。
07
2020
07

vue-router有哪几种导航钩子?

三种,一种是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前进行判断拦截。第二种:组件内的钩子;第三种:单独路由独享组件
07
2020
07

说出至少4种vue当中的指令和它的用法?

v-if:判断是否隐藏;v-for:数据循环;v-bind:class:绑定一个属性;v-model:实现双向绑定Vue如何创建自定义指令?
07
2020
07

scss是什么?在vue.cli中的安装使用步骤是?有哪几大特性?

答:css的预编译。使用步骤:第一步:先装css-loader、node-loader、sass-loader等加载器模块第二步:在build目录找到webpack.base.config.js,在那个extends属性中加一个拓展.scss第三步:在同一个文件,配置一个module属性第四步:然后在组件的style标签加上lang属性 ,例如:lang=”scss”特性:可以用变量,例如($变量名称=值);可以用混合器,例如()可以嵌套
07
2020
07

为什么使用key?

当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容。
07
2020
07

为什么避免 v-if 和 v-for 用在一起

当 Vue 处理指令时,v-for 比 v-if 具有更高的优先级,通过v-if 移动到容器元素,不会再重复遍历列表中的每个值。取而代之的是,我们只检查它一次,且不会在 v-if 为否的时候运算 v-for。
07
2020
07

VNode是什么?虚拟 DOM是什么?

Vue在 页面上渲染的节点,及其子节点称为“虚拟节点 (Virtual Node)”,简写为“VNode”。“虚拟 DOM”是由 Vue 组件树建立起来的整个 VNode 树的称呼。
07
2020
07

vue中如何解决页面不重新渲染问题

(1).修改对象属性后页面未重新渲染可以使用 this.$set(对象名称, '属性名', '属性值') (2).使用this.$forceUpdate()方法可重新渲染页面
07
2020
07

watch如何实现深度监听

watch: { obj: {  handler: function(val) {  },  deep: true // 深度监听 }}
07
2020
07

watch能监听到数组的pop行为吗

对于有返回值的数据,watch就能监听到,比如数组的pop,push, unshift,map等行为。
07
2020
07

介绍下什么是keep-alive

keep-alive是用于做组件缓存的,只会执行一次,不会被销毁。被keep-alive包裹的组件,没有create和beforeDestroyed等方法,但是有activated和deactivated方法。
07
2020
07

vue中的事件修饰符主要有哪些?分别是什么作用

.stop: 阻止事件冒泡.native: 绑定原生事件.once: 事件只执行一次.self:将事件绑定在自身身上,相当于阻止事件冒泡.prevent: 阻止默认事件.caption: 用于事件捕获
07
2020
07

vue中父组件能监听到子组件的生命周期吗

父组件能够监听到子组件的生命周期,通过@hook:进行监听代码如下:// 这里是父组件<template> <child @hook:mounted="getChildMounted" /></template><script>method: { getChildMounted () {  // 这里可以获取到子组件mounted的信息 }}</script>
07
2020
07

vue父组件和子组件生命周期的顺序

1.渲染过程顺序:父组件beforeCreate() -> 父组件created() -> 父组件beforeMount() -> 子组件beforeCreate() ->子组件created() -> 子组件beforeMount() -> 子组件mounted() -> 父组件mounted()2.更新过程顺序:父组件更新过程:父组件beforeUpdate() -> 父组件updated()子组件更新过程:父组件beforeUpdate()
07
2020
07

watch和computed的区别

watch作用通常是由一个值影响多个值的改变并且能监听到这个值变化时,会去执行一个回调函数,此时我们可以在这个回调函数中做一些逻辑处理computed是根据依赖的值衍生出一个新的值,并且依赖的值可以有多个,只有当被依赖的值发生改变时,才会重新去执行计算
07
2020
07

vue中父组件如何获取子组件的属性和方法

vue中通过在子组件上定义ref属性来获取子组件的属性和方法,代码如下:// 这里是父组件<templete> <child ref="child"/></templete><script>method: { getChild () {  this.$refs.child.属性名(方法名) }}</script>
07
2020
07

vue同级组件间怎么传值

1.如果是兄弟组件,可通过父元素作为中间组件进行传值 2.通过创建一个bus,进行传值// 创建一个文件,定义bus中间件,并导出const bus = new Vue()// 在一个组件中发送事件bus.$emit('事件名称', 传递的参数)// 在另一个组件中监听事件bus.$on('事件名称', 得到传过来的参数)
07
2020
07

beforeDestroy里面一般进行什么操作

beforedestoryed是组件销毁之前执行的一个生命周期,在这个生命周期里,我们可以进行回调函数或定时器的清除,不用的dom元素的清除等
07
2020
07

v-if和v-for一起使用的弊端以及解决办法

由于v-for的优先级比v-if高,所以导致每循环一次就会去v-if一次,而v-if是通过创建和销毁dom元素来控制元素的显示与隐藏,所以就会不停的去创建和销毁元素,造成页面卡顿,性能下降。解决办法:在v-for的外层或内层包裹一个元素来使用v-if
06
2020
07

vue-router有两种传参方式

(1)通过在router.js文件中配置path的地方动态传递参数 eg: path: '/detail/:id' 然后在组件内通过this.$route.params.id即可获取(2).在router-link标签中传递参数<router-link :to={params: { x: 1 }} />也通过this.$route.params获取注意:这里通过router-link传递参数的方式是隐式传参
06
2020
07

vuex是什么?怎么使用?哪种功能场景使用它?

答:vue框架中状态管理。在main.js引入store,注入。新建了一个目录store.js,….. export 。场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车
06
2020
07

vuex有哪几种属性?

答:有五种,分别是 State、 Getter、Mutation 、Action、 Modulestate => 基本数据(数据源存放地)getters => 从基本数据派生出来的数据mutations => 提交更改数据的方法,同步!actions => 像一个装饰器,包裹mutations,使之可以异步。modules => 模块化Vuex
06
2020
07

Vue.js中ajax请求代码应该写在组件的methods中还是vuex的actions中?

答:如果请求来的数据是不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入vuex 的state里。如果被其他地方复用,这个很大几率上是需要的,如果需要,请将请求放入action里,方便复用。
06
2020
07

vue-router实现路由懒加载( 动态加载路由 )

答:三种方式第一种:vue异步组件技术 ==== 异步加载,vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 .但是,这种情况下一个组件生成一个js文件。第二种:路由懒加载(使用import)。第三种:webpack提供的require.ensure(),vue-router配置路由,使用webpack的require.ensure技术,也可以实现按需加载。这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。
06
2020
07

vue-router的两种模式

答:hash模式:即地址栏 URL 中的 # 符号;history模式:window.history对象打印出来可以看到里边提供的方法和记录长度。利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。(需要特定浏览器支持)。
06
2020
07

$route 和 $router 的区别

答:$router是VueRouter的实例,在script标签中想要导航到不同的URL,使用$router.push方法。返回上一个历史history用$router.to(-1)$route为当前router跳转对象。里面可以获取当前路由的name,path,query,parmas等。
06
2020
07

vue-router 是什么?它有哪些组件

答:vue用来写路由一个插件。router-link、router-view
06
2020
07

active-class 是哪个组件的属性?

答:vue-router模块的router-link组件。children数组来定义子路由
06
2020
07

怎么定义 vue-router 的动态路由? 怎么获取传过来的值?

答:在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id。
06
2020
07

vue-router 有哪几种导航钩子?

答:三种,第一种:是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前进行判断拦截。第二种:组件内的钩子第三种:单独路由独享组件
06
2020
07

mvvm 框架是什么?

答:vue是实现了双向数据绑定的mvvm框架,当视图改变更新模型层,当模型层改变更新视图层。在vue中,使用了双向绑定技术,就是View的变化能实时让Model发生变化,而Model的变化也能实时更新到View。
06
2020
07

请详细说下你对vue生命周期的理解?

答:总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后。创建前/后: 在beforeCreated阶段,vue实例的挂载元素$el和**数据对象**data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,$el还没有。载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点,data.message还未替换。在mounted阶段,vue实例挂载完成,data.message成功渲染。
06
2020
07

vue获取数据在哪个周期函数

答:一般 created/beforeMount/mounted 皆可.比如如果你要操作 DOM , 那肯定 mounted 时候才能操作.
06
2020
07

created和mounted的区别

答:created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。
06
2020
07

简述每个周期具体适合哪些场景

答:beforeCreate:在new一个vue实例后,只有一些默认的生命周期钩子和默认事件,其他的东西都还没创建。在beforeCreate生命周期执行的时候,data和methods中的数据都还没有初始化。不能在这个阶段使用data中的数据和methods中的方法create:data 和 methods都已经被初始化好了,如果要调用 methods 中的方法,或者操作 data 中的数据,最早可以在这个阶段中操作beforeMount:执行到这个钩子的时候,在内存中已经编译好了模板了,但是
06
2020
07

什么是 vue 生命周期?有什么作用?

答:每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做 生命周期钩子 的函数,这给了用户在不同阶段添加自己的代码的机会。(ps:生命周期钩子就是生命周期函数)例如,如果要通过某些插件操作DOM节点,如想在页面渲染完后弹出广告窗, 那我们最早可在mounted 中进行。相关文章:vue修改打包后静态资源路径的修改vue常用的UI组件库 axios的特点有哪些RouterL
05
2020
07

vue修改打包后静态资源路径的修改

答:cli2版本:将 config/index.js 里的 assetsPublicPath 的值改为 './' 。build: {...assetsPublicPath: './',... }cli3版本:在根目录下新建vue.config.js 文件,然后加上以下内容:(如果已经有此文件就直接修改)module.exports = {publicPath: '', // 相对于 HTML 页面(目录相同) }
01
2020
07

vue常用的UI组件库

答:Mint UI,element,VUX


01
2020
07

axios的特点有哪些

答:从浏览器中创建XMLHttpRequests;node.js创建http请求;支持Promise API;拦截请求和响应;转换请求数据和响应数据;取消请求;自动换成json。axios中的发送字段的参数是data跟params两个,两者的区别在于params是跟请求地址一起发送的,data的作为一个请求体进行发送params一般适用于get请求,data一般适用于post put 请求。
01
2020
07

RouterLink在IE和Firefox中不起作用(路由不跳转)的问题

答: 方法一:只用a标签,不适用button标签;方法二:使用button标签和Router.navigate方法
01
2020
07

vue更新数组时触发视图更新的方法

答:push();pop();shift();unshift();splice(); sort();reverse()
01
2020
07

vue初始化页面闪动问题

答:使用vue开发时,在vue初始化之前,由于div是不归vue管的,所以我们写的代码在还没有解析的情况下会容易出现花屏现象,看到类似于{{message}}的字样,虽然一般情况下这个时间很短暂,但是我们还是有必要让解决这个问题的。首先:在css里加上[v-cloak] {display: none;}。如果没有彻底解决问题,则在根元素加上style="display: none;" :style="{display: 'block'}"
01
2020
07

params和query的区别

答:用法:query要用path来引入,params要用name来引入,接收参数都是类似的,分别是this.$route.query.name和this.$route.params.name。url地址显示:query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示注意点:query刷新不会丢失query里面的数据params刷新 会 丢失 params里面的数据。
01
2020
07

请说下封装 vue 组件的过程?

答:1. 建立组件的模板,先把架子搭起来,写写样式,考虑好组件的基本逻辑。(os:思考1小时,码码10分钟,程序猿的准则。)  2. 准备好组件的数据输入。即分析好逻辑,定好 props 里面的数据、类型。  3. 准备好组件的数据输出。即根据组件逻辑,做好要暴露出来的方法。  4. 封装完毕了,直接调用即可
24
2020
06

Vue2中注册在router-link上事件无效解决方法

答: 使用@click.native。原因:router-link会阻止click事件,.native指直接监听一个原生事件。
24
2020
06

Vue里面router-link在电脑上有用,在安卓上没反应怎么解决?

答:Vue路由在Android机上有问题,babel问题,安装babel polypill插件解决。
24
2020
06

你们vue项目是打包了一个js文件,一个css文件,还是有多个文件?

答:根据vue-cli脚手架规范,一个js文件,一个CSS文件。
24
2020
06

vue slot

答:简单来说,假如父组件需要在子组件内放一些DOM,那么这些DOM是显示、不显示、在哪个地方显示、如何显示,就是slot分发负责的活。
21
2020
06

Vue-router跳转和location.href有什么区别

答:使用location.href='/url'来跳转,简单方便,但是刷新了页面;使用history.pushState('/url'),无刷新页面,静态跳转;引进router,然后使用router.push('/url')来跳转,使用了diff算法,实现了按需加载,减少了dom的消耗。其实使用router跳转和使用history.pushState()没什么差别的,因为vue-router就是用了history.pushState(),尤其是在h
19
2020
06

SPA首屏加载慢如何解决

答:安装动态懒加载所需插件;使用CDN资源。
19
2020
06

delete和Vue.delete删除数组的区别

答:delete只是被删除的元素变成了 empty/undefined 其他的元素的键值还是不变。Vue.delete 直接删除了数组 改变了数组的键值。
19
2020
06

引进组件的步骤

答: 在template中引入组件;在script的第一行用import引入路径;用component中写上组件名称。
19
2020
06

vue的两个核心点

答:数据驱动、组件系统数据驱动:ViewModel,保证数据和视图的一致性。组件系统:应用类UI可以看作全部是由组件树构成的。
19
2020
06

vue常用的修饰符

答:.stop:等同于JavaScript中的event.stopPropagation(),防止事件冒泡;.prevent:等同于JavaScript中的event.preventDefault(),防止执行预设的行为(如果事件可取消,则取消该事件,而不停止事件的进一步传播);.capture:与事件冒泡的方向相反,事件捕获由外到内;.self:只会触发自己范围内的事件,不包含子元素;.once:只会触发一次。
17
2020
06

v-if和v-for的优先级

答:当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中。所以,不推荐v-if和v-for同时使用。如果v-if和v-for一起用的话,vue中的的会自动提示v-if应该放到外层去。
17
2020
06

单页面应用和多页面应用区别及优缺点

答:单页面应用(SPA),通俗一点说就是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html, js, css。所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段),然后在交互的时候由路由程序动态载入,单页面的页面跳转,仅刷新局部资源。多应用于pc端。多页面(MPA),就是指一个应用中有多个页面,页面跳转时是整页刷新单页面的优点:用户体验好,快,内容的改变不需要重新加载整个页面,基于这一点spa对服务器压力较小;前后端分离;页面效果会比较炫酷(比如切换页面内
17
2020
06

Vue中双向数据绑定是如何实现的?

答:vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法。
17
2020
06

渐进式框架的理解

答:主张最少;可以根据不同的需求选择不同的层级;
17
2020
06

vue组件中data为什么必须是一个函数?

答:因为JavaScript的特性所导致,在component中,data必须以函数的形式存在,不可以是对象。  组建中的data写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的data,相当于每个组件实例都有自己私有的数据空间,它们只负责各自维护的数据,不会造成混乱。而单纯的写成对象形式,就是所有的组件实例共用了一个data,这样改一个全都改了。
17
2020
06

$nextTick的使用

答:当你修改了data的值然后马上获取这个dom元素的值,是不能获取到更新后的值,你需要使用$nextTick这个回调,让修改后的data值渲染更新到dom元素之后在获取,才能成功。
17
2020
06

Dubbo服务之间的调用是阻塞的吗?

默认是同步等待结果阻塞的,支持异步调用。Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。异步调用流程图如下。
16
2020
06

v-on可以监听多个方法吗?

答:可以,栗子:<input type="text" v-on="{ input:onInput,focus:onFocus,blur:onBlur, }">。
16
2020
06

分别简述computed和watch的使用场景

答:computed:    当一个属性受多个属性影响的时候就需要用到computed    最典型的栗子: 购物车商品结算的时候watch:    当一条数据影响多条数据的时候就需要用watch    栗子:搜索数据
16
2020
06

请说出vue.cli项目中src目录每个文件夹和文件的用法?

答:assets文件夹是放静态资源;components是放组件;router是定义路由相关的配置; app.vue是一个应用主组件;main.js是入口文件。
16
2020
06

v-modal的使用。

答:v-model用于表单数据的双向绑定,其实它就是一个语法糖,这个背后就做了两个操作:v-bind绑定一个value属性;v-on指令给当前元素绑定input事件。
16
2020
06

axios及安装?

答:请求后台资源的模块。npm install axios --save装好,js中使用import进来,然后.get或.post。返回在.then函数中如果成功,失败则是在.catch函数中。
16
2020
06

为什么使用key?

答:需要使用key来给每个节点做一个唯一标识,Diff算法就可以正确的识别此节点。作用主要是为了高效的更新虚拟DOM。
16
2020
06

说出几种vue当中的指令和它的用法?

答:v-model双向数据绑定;v-for循环;v-if v-show 显示与隐藏;v-on事件;v-once: 只绑定一次。
16
2020
06

如何获取dom?

答:ref="domName" 用法:this.$refs.domName
16
2020
06

keep-alive /keep-alive的作用是什么?

答:keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
16
2020
06

如何让CSS只在当前组件中起作用?

答:在组件中的style前面加上scoped
16
2020
06

v-show和v-if指令的共同点和不同点?

答: 共同点:都能控制元素的显示和隐藏;不同点:实现本质方法不同,v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v-if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。而且v-if不停的销毁和创建比较消耗性能。总结:如果要频繁切换某节点,使用v-show(切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用v-if(初始渲染开销较小,切换开销比较大)。
16
2020
06

子组件像父组件传递事件?

答:$emit方法
16
2020
06

vue父组件向子组件传递数据?

答:通过props
16
2020
06

vue优点?

答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;双向数据绑定:保留了angular的特点,在数据操作方面更为简单;组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势;视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;虚拟DOM:dom操作是非常耗费性能的, 不再使用原生的dom操作节点,极大解放dom操作,但具体
15
2020
06

描述一下TEidt和TListView的类派生顺序,并说明它们的来源区别。

TObject-TPersistent-TComponent-TControl-TWinControl-TCustomEdit-TEditTObject-TPersistent-TComponent-TControl-TWinControl-TCustomListControl-TCustomMultiSelectListControl-TCustomListView-TListView
08
2020
06

请解释Angular 2应用程序的生命周期hooks是什么?

Angular 2组件/指令具有生命周期事件,是由@angular/core管理的。@angular/core会创建组件,渲染它,创建并呈现它的后代。当@angular/core的数据绑定属性更改时,处理就会更改,在从DOM中删除其模板之前,就会销毁掉它。Angular提供了一组生命周期hooks(特殊事件),可以被分接到生命周期中,并在需要时执行操作。构造函数会在所有生命周期事件之前执行。每个接口都有一个前缀为ng的hook方法。例如,ngOnint界面的OnInit方法,这个方法必须在组件中
02
2020
06

. $apply()和$digest()的区别

安全性:$apply()可以接收一个参数作为function(),这个function会被包装到一个try…catch块中,所以一旦有异常发生,该异常会被$exceptionHandler service处理。$apply会使ng进入$digest cycle ,并从$rootScope开始遍历(深度优先)检查数据变更。$digest仅会检查该scope和它的子scope,当你确定当前操作仅影响它们时,用$digest可以稍微提升性能。
02
2020
06

angular的缺点有哪些?

1.强约束导致学习成本较高,对前端不友好。但遵守AngularJS的约定时,生产力会很高,对Java程序员友好。2.不利于SEO因为所有内容都是动态获取并渲染生成的,搜索引擎没法爬取。一种解决办法是,对于正常用户的访问,服务器响应AngularJS应用的内容;对于搜索引擎的访问,则响应专门针对SEO的HTML页面。3..性能问题作为MVVM框架,因为实现了数据的双向绑定,对于大数组、复杂对象会存在性能问题。可以用来优化Angular应用的性能 的办法:减少监控项(比如对不会变化的数据采用单向绑定
02
2020
06

分属不同团队进行开发的angular应用,如果要做整合,可能会遇到哪些问题,如何解决?

可能会遇到不同模块之间的冲突。比如一个团队所有的开发在moduleA下进行,另一团队开发的代码在moduleB下angular.module('myApp.moduleA', []).factory('serviceA', function(){...})angular.module('myApp.moduleB', []).factory('serviceA', function(){...})angular.module(
02
2020
06

angular应用常用哪些路由库,各自的区别是什么?

Angular1.x中常用ngRoute和ui.router,还有一种为Angular2设计的new router(面向组件)。后面那个没在实际项目中用过,就不讲了。无论是ngRoute还是ui.router,作为框架额外的附加功能,都必须以 模块依赖 的形式被引入。区别ngRoute模块是Angular自带的路由模块,而ui.router模块是基于ngRoute模块开发的第三方模块。ui.router是基于state(状态)的,ngRoute是基于url的,ui.router模块具有更强大的功
02
2020
06

一个angular应用应当如何良好地分层?

目录结构的划分1、对于小型项目,可以按照文件类型组织,比如:cssJs  {controllersmodelsservicesfilters}templates2、但是对于规模较大的项目,最好按业务模块划分,比如:cssModulesaccountcontrollersmodelsservicesfilterstemplatesdiskcontrollersmodelsservicesfilterstemplatesmodules下最好再有一个common目录来存放公共的东西。3.逻辑
02
2020
06

两个平级界面块a和b,如果a中触发一个事件,有哪些方式能让b知道?详述原理

这个问题换一种说法就是,如何在平级界面模块间进行通信。有两种方法,一种是共用服务,一种是基于事件。(1)共用服务在Angular中,通过factory可以生成一个单例对象,在需要通信的模块a和b中注入这个对象即可。(2)基于事件这个又分两种方式第一种是借助父controller。在子controller中向父controller触发($emit)一个事件,然后在父controller中监听($on)事件,再广播($broadcast)给子controller,这样通过事件携带的参数,实现了数据经
02
2020
06

factory、service和provider是什么关系?

1.factory把service的方法和数据放在一个对象里,并返回这个对象app.factory('FooService', function(){return {target: 'factory',sayHello: function(){return 'hello ' + this.target;}}});2.service通过构造函数方式创建service,返回一个实例化对象app.service('FooService',
02
2020
06

{{now | 'yyyy-MM-dd'}}这种表达式里面,竖线和后面的参数通过什么方式可以自定义?

filter,格式化数据,接收一个输入,按某规则处理,返回处理结果。内置filter1、ng内置的filter有九种:1.date(日期)2.currency(货币)3.limitTo(限制数组或字符串长度)4.orderBy(排序)5.lowercase(小写)6.uppercase(大写)7.number(格式化数字,加上千位分隔符,并接收参数限定小数点位数)8.filter(处理一个数组,过滤出含有某个子串的元素)9.json(格式化json对象)2、filter有两种使用方法,1)是直接
02
2020
06

有哪些措施可以改善Angular性能

1.官方提倡的,关闭debug,$compileProvidermyApp.config(function ($compileProvider) {$compileProvider.debugInfoEnabled(false);});2.使用一次绑定表达式即{{::yourModel}}3.减少watcher数量4.在无限滚动加载中避免使用ng-repeat5.使用性能测试的小工具去挖掘你的angular性能问题,我们可以使用简单的console.time()也可以借助开发者工具以及Batar
02
2020
06

Angular Directive中restrict中分别可以怎样设置?scope中@,=,&有什么区别?

restrict中可以分别设置:A匹配属性E匹配标签C匹配classM 匹配注释当然你可以设置多个值比如AEC,进行多个匹配。在scope中,@,=,&在进行值绑定时分别表示@获取一个设置的字符串,它可以自己设置的也可以使用{{yourModel}}进行绑定的;= 双向绑定,绑定scope上的一些属性;& 用于执行父级scope上的一些表达式,常见我们设置一些需要执行的函数< 进行单向绑定。angular.module('docsIsolationExample&#
02
2020
06

如何取消$timeout,以及停止一个$watch()?

停止$timeout我们可以用cancel:var customTimeout = $timeout(function () {// your code}, 1000);$timeout.cancel(customTimeout);停掉一个$watch:// .$watch()会返回一个停止注册的函数function that we store to a variablevar deregisterWatchFn = $rootScope.$watch(‘someGloballyAvailabl
02
2020
06

表达式{{yourModel}}是如何工作的?

它依赖于$interpolation服务,在初始化页面html后,它会找到这些表达式,并且进行标记,于是每遇见一个{{}},则会设置一个$watch。而$interpolation会返回一个带有上下文参数的函数,最后该函数执行,则算是表达式$parse到那个作用域上。
02
2020
06

ng-show/ng-hide与ng-if的区别?

第一点区别是,ng-if在后面表达式为true的时候才创建这个dom节点,ng-show是初始时就创建了,用display:block和display:none来控制显示和不显示。第二点区别是,ng-if会(隐式地)产生新作用域,ng-switch、ng-include等会动态创建一块界面的也是如此。这样会导致,在ng-if中用基本变量绑定ng-model,并在外层div中把此model绑定给另一个显示区域,内层改变时,外层不会同步改变,因为此时已经是两个变量了。{{name}}ng-show不
24
2020
05

Dubbo有哪几种配置方式?

1)Spring 配置方式2)Java API 配置方式
24
2020
05

Dubbo 核心的配置有哪些?

我曾经面试就遇到过面试官让你写这些配置配置之间的关系见下图。
24
2020
05

在 Provider 上可以配置的 Consumer 端的属性有哪些?

1)timeout:方法调用超时2)retries:失败重试次数,默认重试 2 次3)loadbalance:负载均衡算法,默认随机4)actives 消费者端,最大并发调用限制
24
2020
05

Dubbo推荐使用什么序列化框架,你知道的还有哪些?

推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。
24
2020
05

Dubbo默认使用的是什么通信框架,还有别的选择吗?

24
2020
05

Dubbo有哪几种负载均衡策略,默认是哪种?

Dubbo有哪几种负载均衡策略,默认是哪种?
24
2020
05

注册了多个同一样的服务,如果测试指定的某一个服务呢?

可以配置环境点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者列表。
24
2020
05

当一个服务接口有多种实现时怎么做?

当一个接口有多种实现时,可以用 group 属性来分组,服务提供方和消费方都指定同一个 group 即可。
24
2020
05

服务上线怎么兼容旧版本?

可以用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务相互间不引用。这个和服务分组的概念有一点类似。
24
2020
05

Dubbo可以对结果进行缓存吗?

可以,Dubbo 提供了声明式缓存,用于加速热门数据的访问速度,以减少用户加缓存的工作量。
24
2020
05

Dubbo支持分布式事务吗?

目前暂时不支持,后续可能采用基于 JTA/XA 规范实现,如以图所示。
24
2020
05

Dubbo telnet 命令能做什么?

dubbo 通过 telnet 命令来进行服务治理,具体使用看这篇文章《dubbo服务调试管理实用命令》。telnet localhost 8090
24
2020
05

Dubbo支持服务降级吗?

Dubbo 2.2.0 以上版本支持。
24
2020
05

Dubbo如何优雅停机?

Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。
24
2020
05

服务提供者能实现失效踢出是什么原理?

服务失效踢出基于 Zookeeper 的临时节点原理。
24
2020
05

如何解决服务调用链过长的问题?

Dubbo 可以使用 Pinpoint 和 Apache Skywalking(Incubator) 实现分布式服务追踪,当然还有其他很多方案。
24
2020
05

说说 Dubbo 服务暴露的过程。

Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo 会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export 方法,而该方法真正实现了服务的(异步或者非异步)发布。
24
2020
05

Dubbo的管理控制台能做什么?

管理控制台主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。
24
2020
05

Dubbo必须依赖的包有哪些?

Dubbo 必须依赖 JDK,其他为可选。
24
2020
05

服务读写推荐的容错策略是怎样的?

读操作建议使用 Failover 失败自动切换,默认重试两次其他服务器。写操作建议使用 Failfast 快速失败,发一次调用失败就立即报错。
24
2020
05

你还了解别的分布式框架吗?

别的还有 Spring cloud、Facebook 的 Thrift、Twitter 的 Finagle 等。
24
2020
05

Dubbo 停止维护了吗?

2014 年开始停止维护过几年,17 年开始重新维护,并进入了 Apache 项目。
24
2020
05

Dubbo 和 Dubbox 有什么区别?

Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如加了服务可 Restful 调用,更新了开源组件等。
24
2020
05

Dubbo 能集成 Spring Boot 吗?

可以的,项目地址如下。https://github.com/apache/incubator-dubbo-spring-boot-project
24
2020
05

在使用过程中都遇到了些什么问题?

Dubbo 的设计目的是为了满足高并发小数据量的 rpc 调用,在大数据量下的性能表现并不好,建议使用 rmi 或 http 协议。
24
2020
05

你读过 Dubbo 的源码吗?

要了解 Dubbo 就必须看其源码,了解其原理,花点时间看下吧,网上也有很多教程,后续有时间我也会在公众号上分享 Dubbo 的源码。
22
2020
05

什么是事件冒泡?

当事件发生在DOM元素上时,该事件并不完全发生在那个元素上。在冒泡阶段,事件冒泡,或者事件发生在它的父代,祖父母,祖父母的父代,直到到达window为止。假设有如下的 HTML 结构:<div class="grandparent">  <div class="parent">    <div class="child">1</div>  </
22
2020
05

什么是事件传播?

当事件发生在DOM元素上时,该事件并不完全发生在那个元素上。在“冒泡阶段”中,事件冒泡或向上传播至父级,祖父母,祖父母或父级,直到到达window为止;而在“捕获阶段”中,事件从window开始向下触发元素 事件或event.target。事件传播有三个阶段:捕获阶段–事件从 window 开始,然后向下到每个元素,直到到达目标元素。目标阶段–事件已达到目标元素。冒泡阶段–事件从目标元素冒泡,然后上升到每个元素,直到到达 window。
22
2020
05

DOM 是什么?

DOM 代表文档对象模型,是 HTML 和 XML 文档的接口(API)。当浏览器第一次读取(解析)HTML文档时,它会创建一个大对象,一个基于 HTM L文档的非常大的对象,这就是DOM。它是一个从 HTML 文档中建模的树状结构。DOM 用于交互和修改DOM结构或特定元素或节点。假设我们有这样的 HTML 结构:<!DOCTYPE html><html lang="en"><head>   <meta char
22
2020
05

使用 + 或一元加运算符是将字符串转换为数字的最快方法吗?

根据MDN文档,+是将字符串转换为数字的最快方法,因为如果值已经是数字,它不会执行任何操作。
22
2020
05

|| 运算符能做什么

||也叫或逻辑或,在其操作数中找到第一个真值表达式并返回它。这也使用了短路来防止不必要的工作。在支持 ES6 默认函数参数之前,它用于初始化函数中的默认参数值。console.log(null || 1 || undefined); // 1function logName(name) {  var n = name || "Mark";  console.log(n);}logName(); // "Mark"
22
2020
05

&& 运算符能做什么

&& 也可以叫逻辑与,在其操作数中找到第一个虚值表达式并返回它,如果没有找到任何虚值表达式,则返回最后一个真值表达式。它采用短路来防止不必要的工作。console.log(false && 1 && []); // falseconsole.log(" " && true && 5); // 5使用if语句const router: Router = Router();router.get(
22
2020
05

undefined 和 null 有什么区别?

在理解undefined和null之间的差异之前,我们先来看看它们的相似类。它们属于 JavaScript 的 7 种基本类型。 let primitiveTypes = ['string','number','null','undefined','boolean','symbol', 'bigint'];它们是属于虚值,可以使用Boolean(value)或!!value将
22
2020
05

有哪些方法可以处理 JS 中的异步代码?

回调Promiseasync/await还有一些库:async.js, bluebird, q, co
22
2020
05

函数表达式和函数声明之间有什么区别?

看下面的例子:hoistedFunc();notHoistedFunc();function hoistedFunc(){  console.log("注意:我会被提升");}var notHoistedFunc = function(){  console.log("注意:我没有被提升");}notHoistedFunc调用抛出异常:Uncaught TypeError: notHoistedFunc is not a functio
22
2020
05

调用函数,可以使用哪些方法?

在 JS 中有4种方法可以调用函数。作为函数调用——如果一个函数没有作为方法、构造函数、apply、call 调用时,此时 this 指向的是 window 对象(非严格模式)  //Global Scope  function add(a,b){    console.log(this);    return a + b;  }  add(1,5); // 打印 "window" 对象和 6&n
22
2020
05

什么是缓存及它有什么作用?

缓存是建立一个函数的过程,这个函数能够记住之前计算的结果或值。使用缓存函数是为了避免在最后一次使用相同参数的计算中已经执行的函数的计算。这节省了时间,但也有不利的一面,即我们将消耗更多的内存来保存以前的结果。
22
2020
05

手动实现缓存方法

function memoize(fn) {  const cache = {};  return function (param) {    if (cache[param]) {      console.log('cached');      return cache[param];    } else {      let
22
2020
05

为什么typeof null 返回 object?如何检查一个值是否为 null?

typeof null == 'object'总是返回true,因为这是自 JS 诞生以来null的实现。曾经有人提出将typeof null == 'object'修改为typeof null == 'null',但是被拒绝了,因为这将导致更多的bug。我们可以使用严格相等运算符===来检查值是否为null。function isNull(value){  return value === null;}
22
2020
05

new 关键字有什么作用?

new关键字与构造函数一起使用以创建对象在JavaScript中。下面看看例子:function Employee(name, position, yearHired) {  this.name = name;  this.position = position;  this.yearHired = yearHired;};const emp = new Employee("Marko Polo", "Software Develope
22
2020
05

你能解释一下 ES5 和 ES6 之间的区别吗?

ECMAScript 5(ES5):ECMAScript 的第 5 版,于 2009 年标准化。这个标准已在所有现代浏览器中完全实现。ECMAScript 6(ES6)或 ECMAScript 2015(ES2015):第 6 版 ECMAScript,于 2015 年标准化。这个标准已在大多数现代浏览器中部分实现。以下是 ES5 和 ES6 之间的一些主要区别:箭头函数和字符串插值:const greetings = (name) => { return `hello ${na
22
2020
05

如何检查一个数字是否为整数?

检查一个数字是小数还是整数,可以使用一种非常简单的方法,就是将它对 1 进行取模,看看是否有余数。function isInt(num) { return num % 1 === 0;}console.log(isInt(4)); // trueconsole.log(isInt(12.2)); // falseconsole.log(isInt(0.3)); // false
22
2020
05

JavaScript 中的 let 关键字有什么用?

除了可以在函数级别声明变量之外,ES6 还允许你使用 let 关键字在代码块({..})中声明变量。
22
2020
05

解释事件冒泡以及如何阻止它?

事件冒泡是指嵌套最深的元素触发一个事件,然后这个事件顺着嵌套顺序在父元素上触发。防止事件冒泡的一种方法是使用 event.cancelBubble 或 event.stopPropagation()(低于 IE 9)。
22
2020
05

解释 JavaScript 中的值和类型。

JavaScript提供两种数据类型: 基本数据类型和引用数据类型基本数据类型有:StringNumberBooleanNullUndefinedSymbol引用数据类型有:ObjectArrayFunction
22
2020
05

编写一个可以执行如下操作的函数。

var addSix = createBase(6);addSix(10); // 返回 16addSix(21); // 返回 27可以创建一个闭包来存放传递给函数 createBase 的值。被返回的内部函数是在外部函数中创建的,内部函数就成了一个闭包,它可以访问外部函数中的变量,在本例中是变量 baseNumber。function createBase(baseNumber) { return function(N) { // 我们在这里访问 baseNumber,即
22
2020
05

解释 JavaScript 中的 null 和 undefined。

JavaScript 中有两种底层类型:null 和 undefined。它们代表了不同的含义:尚未初始化:undefined;空值:null。null和undefined是两个不同的对象, 有图为证:
22
2020
05

“use strict”的作用是什么?

use strict 出现在 JavaScript 代码的顶部或函数的顶部,可以帮助你写出更安全的 JavaScript 代码。如果你错误地创建了全局变量,它会通过抛出错误的方式来警告你。例如,以下程序将抛出错误:function doSomething(val) { "use strict";  x = val + 10;}它会抛出一个错误,因为 x 没有被定义,并使用了全局作用域中的某个值对其进行赋值,而 use strict 不允许这样做。
22
2020
05

解释什么是回调函数,并提供一个简单的例子。

回调函数是可以作为参数传递给另一个函数的函数,并在某些操作完成后执行。下面是一个简单的回调函数示例,这个函数在某些操作完成后打印消息到控制台。function modifyArray(arr, callback) { // 对 arr 做一些操作 arr.push(100); // 执行传进来的 callback 函数 callback();}var arr = [1, 2, 3, 4, 5];modifyArray(arr, function() {&n
22
2020
05

解释 JavaScript 中的相等性。

JavaScript 中有严格比较和类型转换比较:严格比较(例如 ===)在不允许强制转型的情况下检查两个值是否相等;抽象比较(例如 ==)在允许强制转型的情况下检查两个值是否相等。var a = "42";var b = 42;a == b; // truea === b; // false一些简单的规则:如果被比较的任何一个值可能是 true 或 false,要用 ===,而不是 ==;如果被比较的任何一个值是这些特定值(0、“”或 []),要用 ===,而不是 ==;在
22
2020
05

JavaScript 中的作用域(scope)是指什么?

在 JavaScript 中,每个函数都有自己的作用域。作用域基本上是变量以及如何通过名称访问这些变量的规则的集合。只有函数中的代码才能访问函数作用域内的变量。同一个作用域中的变量名必须是唯一的。一个作用域可以嵌套在另一个作用域内。如果一个作用域嵌套在另一个作用域内,最内部作用域内的代码可以访问另一个作用域的变量。
22
2020
05

JavaScript 中的强制转型是指什么?

在 JavaScript 中,两种不同的内置类型间的转换被称为强制转型。强制转型在 JavaScript 中有两种形式:显式和隐式。这是一个显式强制转型的例子:var a = "42";var b = Number( a );a; // "42"b; // 42 -- 是个数字!这是一个隐式强制转型的例子:var a = "42";var b = a * 1; // "42" 隐式转型成 42 a; //
21
2020
05

解释for-in循环?

for-in循环用于循环对象的属性。for-in循环的语法是:在每次循环中,来自对象的一个属性与变量名相关联,循环继续,直到对象的所有属性都被耗尽。
21
2020
05

描述JavaScript中的匿名函数?

被声明为没有任何命名标识符的函数被称为匿名函数。一般来说,匿名函数在声明后无法访问。匿名函数声明:
21
2020
05

call()和.apply()之间有什么区别?

函数.call()和.apply()在使用上非常相似,只是有一点区别。当程序员知道函数参数的编号时,使用.call(),因为它们必须在调用语句中被提及为参数。另一方面,当不知道数字时使用.apply(),函数.apply()期望参数为数组。.call()和.apply()之间的基本区别在于将参数传递给函数。它们的用法可以通过给定的例子进行说明。
21
2020
05

定义事件冒泡?

JavaScript允许DOM元素嵌套在一起。在这种情况下,如果单击子级的处理程序,父级的处理程序也将执行同样的工作。
21
2020
05

什么样的布尔运算符可以在JavaScript中使用?

“And”运算符(&&),'Or'运算符(||)和'Not'运算符(!)可以在JavaScript中使用。*运算符没有括号。
21
2020
05

如何分配对象属性?

将属性分配给对象的方式与赋值给变量值相同。例如,表单对象的操作值以下列方式分配为“‘submit”:Document.form.action =“submit”
21
2020
05

在JavaScript中读取和写入文件的方法是什么?

可以通过使用JavaScript扩展(从JavaScript编辑器运行),打开文件的示例来完成:fh = fopen(getScriptPath(), 0);
21
2020
05

在JavaScript中如何使用DOM?

DOM代表文档对象模型,并且负责文档中各种对象的相互交互。DOM是开发网页所必需的,其中包括诸如段落,链接等对象。可以操作这些对象以包括添加或删除等操作,DOM还需要向网页添加额外的功能。除此之外,API的使用比其他更有优势。
21
2020
05

JavaScript中如何使用事件处理程序?

事件是由用户生成活动(例如单击链接或填写表单)导致的操作。需要一个事件处理程序来管理所有这些事件的正确执行。事件处理程序是对象的额外属性。此属性包括事件的名称以及事件发生时采取的操作。
21
2020
05

解释延迟脚本在JavaScript中的作用?

默认情况下,在页面加载期间,HTML代码的解析将暂停,直到脚本停止执行。这意味着,如果服务器速度较慢或者脚本特别沉重,则会导致网页延迟。在使用Deferred时,脚本会延迟执行直到HTML解析器运行。这减少了网页加载时间,并且它们的显示速度更快。
21
2020
05

JavaScript中的各种功能组件是什么?

JavaScript中的不同功能组件是:First-class函数:JavaScript中的函数被用作第一类对象。这通常意味着这些函数可以作为参数传递给其他函数,作为其他函数的值返回,分配给变量,也可以存储在数据结构中。嵌套函数:在其他函数中定义的函数称为嵌套函数。
21
2020
05

decodeURI()和encodeURI()是什么?

EncodeURl()用于将URL转换为十六进制编码。而DecodeURI()用于将编码的URL转换回正常。
21
2020
05

如何在不支持JavaScript的旧浏览器中隐藏JavaScript代码?

在<script>标签之后的代码中添加“<! - ”,不带引号。在<script>标签之前添加“// - >”代码中没有引号。旧浏览器现在将JavaScript代码视为一个长的HTML注释。而支持JavaScript的浏览器则将“<! - ”和“// - >”作为一行注释。
21
2020
05

什么时候触发垃圾回收?

垃圾回收器周期性运行,如果分配的内存非常多,那么回收工作也会很艰巨,确定垃圾回收时间间隔就变成了一个值得思考的问题。IE6的垃圾回收是根据内存分配量运行的,当环境中的变量,对象,字符串达到一定数量时触发垃圾回收。垃圾回收器一直处于工作状态,严重影响浏览器性能。IE7中,垃圾回收器会根据内存分配量与程序占用内存的比例进行动态调整,开始回收工作。
21
2020
05

Java 的 的 XML 数据绑定是什么

答:Java 的 XML 绑定指从 XML 文件中创建类和对象,使用 Java 编程语言修改 XML 文档。XML绑定的 Java API,JAXB 提供了绑定 XML 文档和 Java 对象的便利方式。另一个可选的 XML 绑定方法是使用开源库,比如 XML Beans。Java 中 XML 绑定的一个最大的优势就是利用 Java编程能力创建和修改 XML 文档。以上的 XML 面试问答题收集自很多编程人员,但它们对于使用 XML 技术的每个人都是有用的。由于 XML 具有平台独立的特性,XP
21
2020
05

XML CDATA 是什么

答:这道题很简单也很重要,但很多编程人员对它的了解并不深。CDATA 是指字符数据,它有特殊的指令被 XML 解析器解析。XML 解析器解析 XML 文档中所有的文本,比如<name>Thisis name of person</name>,标签的值也会被解析,因为标签值也可能包含 XML 标签,比如<name><firstname>First Name</firstname></name>。CDATA 部分不会被 XML
21
2020
05

DOM 和 和 SAX 解析器有什么区别

答:这又是一道常见面试题,不仅出现在 XML 面试题中,在 Java 面试中也会问到。DOM 和SAX 解析器的主要区别在于它们解析 XML 文档的方式。使用 DOM 解析时,XML 文档以树形结构的形式加载到内存中,而 SAX 是事件驱动的解析器。这个问题更详细的回答查看 DOM和 SAX 解析器之间的区别。
21
2020
05

XML 命名空间是什么?它为什么很重要?

答:XML 命名空间与 Java 的 package 类似,用来避免不同来源名称相同的标签发生冲突。XML 命名空间在 XML 文档顶部使用 xmlns 属性定义,语法为 xmlns:prefix=’URI’。prefix 与XML 文档中实际标签一起使用。下面例子为 XML 命名空间的使用。<root xmlns:inst="http://instruments.com/inst"<inst:phone><inst:number>8373632
21
2020
05

什么是格式良好的 XML

答:这个问题经常在电话面试中出现。一个格式良好的 XML 意味着该 XML 文档语法上是正确的,比如它有一个根元素,所有的开放标签合适地闭合,属性值必须加引号等等。如果一个 XML 不是格式良好的,那么它可能不能被各种 XML 解析器正确地处理和解析。
21
2020
05

什么是 XML 元素和属性

答:最好举个例子来解释。下面是简单的 XML 片断。<Orders><Order id="123"><Symbol>6758.T</Symbol><Price>2300</Price><Order><Orders>例子中 id 是元素的一个属性,其他元素都没有属性。
21
2020
05

XSLT 是什么?

答:XSLT 也是常用的 XML 技术,用于将一个 XML 文件转换为另一种 XML,HTML 或者其他的格式。XSLT 为转换 XML 文件详细定义了自己的语法,函数和操作符。通常由 XSLT 引擎完成转换,XSLT 引擎读取 XSLT 语法编写的 XML 样式表或者 XSL 文件的指令。XSLT 大量使用递归来执行转换。一个常见 XSLT 使用就是将 XML 文件中的数据作为 HTML 页面显示。XSLT 也可以很方便地把一种 XML 文件转换为另一种 XML 文档
21
2020
05

XPath 是什么?

答:XPath 是用于从 XML 文档检索元素的 XML 技术。XML 文档是结构化的,因此 XPath 可以从 XML 文件定位和检索元素、属性或值。从数据检索方面来说,XPath与 SQL 很相似,但是它有自己的语法和规则。了解更多查看怎样使用 XPath 从 XML 文档中检索数据
21
2020
05

DTD 与 与 XML Schema 有什么区别?

答:DTD 与 XML Schema 有以下区别:DTD 不使用 XML 编写而 XML Schema 本身就是 xml 文件,这意味着XML解析器等已有的XML工具可以用来处理XML Schema。而且XML Schema 是设计于 DTD 之后的,它提供了更多的类型来映射 xml 文件不同的数据类型。DTD 即文档类型描述(Document Type definition)是定义 XML 文件结构的传统方式。
21
2020
05

单例模式的好处?如何实现单例模式?

好处:①封装了唯一性,可严格控制客户怎样访问以及何时访问; ②内存中只有一个对象,可节约系统资源,提高系统性能;如何实现:①将构造函数私有化 ②使用一个公开静态类 ③使用一个静态属性进行判断当前窗口是否被创建 public partial class DetailedWndow : Window {  //将构造函数私有化  private DetailedWndow(int qq)    {      &
21
2020
05

类和结构的区别?

类:属于引用类型,可有字段赋值,可继承和被继承,可有属性,有构造函数和析构函数 ;结构:属于值类型,没有字段赋值,不能继承和被继承,没有属性,没有构造函数但可以添加,没有析构函数
21
2020
05

请描述Socket进行同步通讯编程的详细步骤?

服务端:①创建一个Socket属性,Socket();②绑定IP地址、端口等信息到Socket上,bind();③开启监听,listen();④接收客户端的连接,accept();⑤收发数据,send()和receive();⑥关闭网络连接;⑦关闭监听客户端:①创建一个Socket属性,Socket();②绑定IP地址、端口号等信息到Socket上,bind();③设置要连接的对方IP地址和端口号等属性;④连接服务器,connect();⑤收发数据,send()和receive();⑥关闭网络连
21
2020
05

…NET中的错误处理机制是什么?

采用 try-catch-finally结构,发生错误时,层层上抛,直到找到匹配的catch为止。
21
2020
05

请详细描述C#中的访问修饰符都有哪些?

private:私有成员,类内部可访问;protected:保护成员,类内部和继承类可访问;public:公开成员,没有访问限制;internal:同一程序集可访问;protected internal/internal protected:同一程序集和子类可访问
21
2020
05

名词解释SQL/XAML/XML/HTML/OOP/CTS/CLR/CLS

SQL:结构化查询语言(structured Query Language)XAML:可扩展应用程序标记语言(eXtensible Application Markup Language)XML:可扩展标记语言(eXtensible Markup Language)HTML:超文本标记语言(Hyper Text Markup Language)OOP:面向对象编程(Object Oriented Programming)CTS:通用类型系统(Common Type System)CLR:公共语言
21
2020
05

重写和重载的区别?

重写:当一个子类继承一个父类,而子类中的方法与父类中的方法名称、参数个数、参数类型一致时,就说明这个子类重写了父类的方法;重载:方法名称相同,参数类型不同。调用时,编译器会根据实际传入参数的形式,选择与其匹配的行。
21
2020
05

详细描述值类型和引用类型的异同?

值类型:存放在堆栈中,存储空间小,调用速度快,直接存储其值,从System.ValueType中派生,内存自动释放,简单类型,枚举,结构;引用类型:存放在堆中,存储空间大,调用速度慢,存储对值的引用,从System.Object中派生,由GC自动释放,接口类型,数组类型,委托类型;
21
2020
05

数组和集合的区别?

数组声明元素类型,集合不声明;数组定长,占用内存小,速度快,集合不定长,占用内存大,速度慢;数组存放类型只能是一种,集合不止一种
19
2020
05

你觉得用 Dubbo 好还是 Spring Cloud 好?

扩展性的问题,没有好坏,只有适合不适合,不过我好像更倾向于使用 Dubbo, Spring Cloud 版本升级太快,组件更新替换太频繁,配置太繁琐,还有很多我觉得是没有 Dubbo 顺手的地方……
19
2020
05

T-SQL语言包含哪三种常用语言?详细描述

数据定义语言(DDL):Data Definition Language,用来定义和管理数据库及其对象,例如:create、alter、drop等;数据操纵语言(DML):Data Manipulation Language,实现对数据库表,各对象的操作,例如:insert、update等;数据控制语言(DCL):Data Control Language,实现对数据库进行安全管理和权限管理等控制,例如:grant、revoke、deny等
19
2020
05

抽象类和接口的区别?

①抽象类可以实现成员,接口中的方法只能声明不能实现;②抽象类可以有字段,接口中没有字段,但有属性;③抽象类的成员可以使用公开或其他修饰符,而接口成员是隐式公开的,不需修饰;④抽象类不支持多重继承,而一个类可以实现多个接口
19
2020
05

详细描述三层架构开发模式以及三层架构的好处?

界面层:设计界面,与用户交互;业务逻辑层(BLL):维护界面层和数据访问层之间的安全性,对传送的数据进行判断分析,将正确值进行传送;数据访问层(DAL):主要是存放对数据类的访问,即对数据库的增删改查的操作;好处:目的是“高内聚,低耦合“的思想,分工明确,条理清晰,易于调试 ,而且具有可扩展性
19
2020
05

SQL中的左联接和右联接查询区别?

左联接:如果左表的某一行在右表中没有匹配行,则右联接的结果集行中,右表的所有选择列表均为空(上下排列);右联接:将返回表中的所有行,如果右表的某一行在左表中没有匹配行,则左表返回空值(左右排列)
19
2020
05

什么是SQL注入?应如何防止?

利用SQL关键字对网站进行攻击;防止:①通过存储过程执行所有查询; ②限制表单或查询字符串输入的长度
19
2020
05

SQL Server的聚合函数都有哪些?

Min():最小值 Max():最大值 Sum():总和 Avg():平均值 Count():总数distinct():去重 Having():重复记录
19
2020
05

叙述索引、视图、触发器、事务、存储过程?

索引:索引像书的目录,它提供了数据的逻辑,合理划分索引能够大大提高数据库性能;视图:视图是一种虚拟表,可对虚拟表进行增改查操作;触发器:触发器是一种特殊类型的存储过程,主要通过事件触发而被执行;事务:事务是指一个工作单元,它包含了一组数据操作命令,这组命令要么执行,要么不执行;存储过程:是指一组编译的SQL语句
19
2020
05

SQL Server数据库中的基本约束及其作用?

主键约束:确定表中的标识列,必须是非空唯一,一个表只有一个主键;唯一约束:确定这个字段的数据必须是唯一的,如果添加内容,内容不能重复;外键约束:确定表与表之间的联系;检查约束:确定这个字段中的数据特性;非空约束:确定这个字段的数据不能为空;默认约束:确定这个字段数据的默认值
19
2020
05

SQL Server是什么类型数据库,保证数据库的完整性都有什么?

常见的数据类型:网状模型、层次模型、关系模型SQL Server是一种关系型数据库;保证数据库完整性:实体完整性、区域完整性、参照完整性
19
2020
05

事务的四大特性?

原子性: 事务是一个整体的工作单元,事务对数据库所做的操作要么全部执行,要么全部取消,如果某条语句执行失败,那么所有语句全部回滚;一致性:完成事务时,所有数据必须一致;隔离性:由事务所做的修改必须与其他事务修改隔离;持久性:提交事务后,对数据库所做的修改就会永久性的保存下来。
19
2020
05

ADO.NET中读写数据库需用到哪些对象?作用是什么?

DataConnection 连接数据库DataCommand 执行语句命令DataSet 数据存储器DataAdapter 适配器,用于填充数据DataReader 数据读取器,用于向前只读的数据流
15
2020
05

什么是Cookie 隔离?(或者:请求资源的时候不要带cookie怎么做)

通过使用多个非主要域名来请求静态文件,如果静态文件都放在主域名下,那静态文件请求的时候带有的cookie的数据提交给server是非常浪费的,还不如隔离开。因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请求头的大小,降低请求时间,从而达到降低整体请求延时的目的。同时这种方式不会将cookie传入server,也减少了server对cookie的处理分析环节,提高了server的http请求的解析速度。
15
2020
05

有效的javascript变量定义规则

第一个字符必须是一个字母、下划线(_)或一个美元符号($);其他字符可以是字母、下划线、美元符号或数字。
15
2020
05

Ajax请求的页面历史记录状态问题?

(1)通过location.hash记录状态,让浏览器记录Ajax请求时页面状态的变化。(2)通过HTML5的history.pushstate,来实现浏览器地址栏的无刷新改变。
15
2020
05

可视区的大小:

(1)innerXXX(不兼容ie)window.innerHeight 可视区高度,包含滚动条宽度window.innerWidth 可视区宽度,包含滚动条宽度(2)document.documentElement.clientXXX(兼容ie)document.documentElement.clientWidth可视区宽度,不包含滚动条宽度document.documentElement.clientHeight可视区高度,不包含滚动条宽度
15
2020
05

”==”和“===”的不同

答案:前者会自动转换类型,再判断是否相等后者不会自动类型转换,直接去比较
15
2020
05

form标签上定义请求类型的是哪个属性?定义请求地址的是哪个属性?

答:form表单定义请求类型的是  method 属性  , 定义请求地址的是  action属性
15
2020
05

请至少写出5个H5的新标签

答: header  nav  footer canvas datalist  article  mark 
15
2020
05

很多网站不常用table iframe这两个元素,知道原因吗?

因为浏览器页面渲染的时候是从上至下的,而table 和 iframe 这两种元素会改变这样渲染规则,他们是要等待自己元素内的内容加载完才整体渲染。用户体验会很不友好。
15
2020
05

请写出table标签下面会包含哪些标签元素

答: tr th  td  thead  tbody  tfoot 等
15
2020
05

请写出至少5个HTML行内元素标签

答:span  a  i  label  img  input  button  textarea select 等
15
2020
05

请写出至少5个HTML块元素标签

答: div  p  ul  li  table  h1 h2 h3 ... h6  form 等 
15
2020
05

写出5条Firefox和IE的脚本兼容问题?

绑定监听:IE是attatchEvent()  、 firefox是addEventListener();计算样式:IE是computedStyle、 firefox是getComputedSyle();滚动事件:IE是MouseWheel、 firefox是onmousewheel表单元素:IE是 document.forms(”formname”) , firefox是document.forms["formname"]事件对象: IE是window.event
15
2020
05

在网页设计与制作时,为了使制作出来的网页下载速度快、布局合理、浏览方便、和谐悦目,应注意哪些问题?

1.网页文件大小2.页面布局3.页面导航4.图像大小5.颜色搭配6.背景图像
15
2020
05

一个网页制作完成后,在发布之前,我们会对页面进行测试,测试内容主要包括哪几个方面?

兼容性、js特效的bug、流畅度、加载速度的测试。
15
2020
05

请列举IE6的一些Bug的解决办法。

双倍margin:浮动的方向设置的和marign方便不相同即可。有链接的图片的边框:img{border:none}即可。3px bug :给容器设置display:inline-block即可。overflow:hidden失效,用zoom:1;来解决。
15
2020
05

以下链接到电子邮件的正确格式是:

(B) A.<a href=”mailto://123@abcd.com”>邮箱</a>B.<a href=”mailto:123@abcd.com”>邮箱</a>C.<a href=”#mailto:123@abcd.com”>邮箱</a>D.<a href=”mail to://123@abcd.com”>邮箱</a><a href="mailto:123@email.c
15
2020
05

CSS的伪类有哪些?有什么作用?在各个浏览器下都兼容吗?

:hover、:visited、:link、:active。link没有点击的visited:点击过的hover悬停的active是按下那一瞬间。都兼容,但是要按照“爱恨准则”link、visited、hover、active放置。
15
2020
05

谈谈对CSS Sprites技术优缺点的理解。

CSS精灵技术,优点就是减少HTTP的请求数量,加快网页渲染速度。便于一整套更换,比如圣诞节了,此时可以改变CSS中的各种按钮、logo变成圣诞风格,一下子全变了。缺点就是不能随意改变之前已经在精灵上面的图片的位置,做repeat-x、repeat-y精灵难以实现。
15
2020
05

下面哪一个属性可以在新窗口打开一个链接

(B) A. _parent    B. _blank     C. _self      D. _top
15
2020
05

写一段CSS代码,让Chrome支持小于12px的文字。

font-size:12px; -webkit-transform:scale(0.8);
15
2020
05

在HTML页面中,position的默认值是什么?

static。
15
2020
05

定位的值有哪几种?区别是什么?

absolute:绝对定位。使用left,right,top,bottom等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位。如果不存在这样的父对象,则依据body对象。而其层叠通过z-index属性定义。当对象定位在浏览器窗口以外,浏览器因此显示滚动条。 relative:相对定位。将依据left,right,top,bottom等属性在正常文档流中偏移位置。当对象定位在浏览器窗口以外,浏览器因此显示滚动条。 static:元素框正常生成。块级元素生成一个矩形框,作
15
2020
05

如何解决IE6下select优先级高于div而导致的无法遮盖问题?

再写一个div,用此div盖住select。当select应该出现的时候,此时让div盖住它。
15
2020
05

请解释一下CSS的优先级,并说明优先级如何计算?

当多个选择器定义了同一个属性为不同值,根据优先级来确定以谁为准。id最大,类第二,标签名第三。数个数即可。比如:#box ul li.spec  权重就是(1,1,2)#box ul li权重就是(1,0,2)如果是继承,权重是0。如果都是继承,有“就近原则”。
15
2020
05

请用div+css简单写出一段“返回顶部”的悬浮效果。

<a name="top"></a>........<div class="top">    <a href="#top"></a></div> 样式:.top{position:fixed;right:20px;bottom:20px;width:100px;height:100px;}
15
2020
05

介绍你所知道的CSS hack技巧。

hack就是浏览器留的后门,方便对这一个版本的浏览器单独定义样式,_ 和 - 针对IE6,*width、+width用于IE7及以下。color:red\0; 是IE8、9、10的hack。color:red\9\0:是IE9、10的hask还有HTML中:<!--[if lte IE 7]> 代码 <![endif]-->
15
2020
05

标签的定义与用法,你常用的DOCTYPE是什么?

用在html标签之前,定义是HTML什么版本和XHTML什么版本。我常用<!DOCTYPE html>是html5的声明头。Strict版本不能使用b、u、itransitional版本可以使用b、u、i,所以HTML4中我经常使用这个。
15
2020
05

介绍盒子模型,说说标准盒子模型和IE盒子模型有什么区别,以及触发不同模型的条件?

标准盒子模型padding、margin外扩IE盒子模型是padding、marign内减。如同写上了box-sizing:border-box; width=content+padding+border要加上标准DTD,可以让IE使用标准盒子模型。去掉DTD此时浏览器叫做Quirk(怪异模式)。 
15
2020
05

当p的元素设置为bold时,以下哪条CSS语句的说法是正确的

(D)                                    A.<p style=”text-size:bold;”> B.<p style=”font-size:bold;”>C.p{text-size:bold;}D.p{font-weight:bold
15
2020
05

定义一个div,在IE8下高度为100px,在IE7下为120px,在IE6下为140px。

height:120px;-height:140px;height:100px\0;还有HTML的hack:<!--[if lt IE 7]><!--您的代码--><![endif]-->
15
2020
05

列举CSS中position的参数和作用?

四种定位:absolute、relative、fixed、static。展开说三种定位的参考点是什么。absolute:绝对定位。使用left,right,top,bottom等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位。如果不存在这样的父对象,则依据body对象。而其层叠通过z-index属性定义。当对象定位在浏览器窗口以外,浏览器因此显示滚动条。 relative:相对定位。将依据left,right,top,bottom等属性在正常文档流中偏移位置。当对象定位在浏览
15
2020
05

Form中的input可以设置readonly和disable,请问这两项属性有什么区别?

readonly表示只读,  不能更改元素内容。仅仅能作用在text/password/textarea上面。disabled表示不可用,能作用在所有控件上面,比如select、radio、checkbox。
15
2020
05

img src=”name” align=”left”的意思是?

(A)A.图像对于周围的文本左对齐B.图像对于周围的文本右对齐C.图像对于周围的文本底部对齐D.图像对于周围的文本顶部对齐
15
2020
05

&nbsp;&nbsp;前端工程师html&nbsp;&nbsp; 以上代码中不合理的部分有哪些?

首先如果要空格,应该使用css中的text-indent:2em; 并且如果要换行,应该使用语义标签p。非要用br,也要写<br />,而不是标签对儿。
15
2020
05

font-size:62.5%,解释一下如此设计字体大小的原因?

因为默认情况下html标签的默认字号是16px,此时如果取默认,那么1em就是16px,此时fotn-size:62.5%; 此时就能将HTML这个根元素的字号变为10px。此时页面上所有元素的尺寸就方便计算了。但是62.5%逐步退出了历史舞台,因为Chrome30版本不支持12px以下的字号了。
15
2020
05

下面哪一个是&的符号码

(B) A.&quot       B.&amp     C.&comp       D.&nbsp
15
2020
05

下面哪一个标签可以产生一个回车换行

(b) A.<hr>     B.<br>     C.<tr>     D.<tl>
15
2020
05

rem为什么可以缩放,以什么为基准?

rem以html的字号为基准,比如2rem,而html的字号是16px,此时2rem就是32px。写一段JS让html根元素的字号随着浏览器宽度的变化而等比例变化,此时造成页面等比例缩放的现象。
15
2020
05

清除浮动和闭合浮动的不同点?

设置高度的元素叫做闭合浮动。清除浮动回答清除浮动的5种方法即可。
15
2020
05

标签上的alt与title属性区别是什么?

alt是alternate的简写,当图片不可以显示的时候的替代文本title是a、img、label等等标签的悬浮提示文本。
15
2020
05

给文字添加阴影用哪个属性?

text-shadow:1px 1px 1px red;
15
2020
05

如何区别CSS中的display:none和visibility:hidden?

display:none; 释放了自己的位置,后面的元素会上来占据现有位置,并且如果内部有img元素,此时img元素不会加载;visibility:hidden如同opacity:0;只是不可见了,位置还是保留的。
15
2020
05

你如何理解HTML的语义化?能否接触或了解重构?

根据语义来选择合适的标签,而不是表现形式。HTML只负责语义,不是说要加粗了,就放一个h,只是可以让开发者能写出优雅的代码,并且利于SEO。网页重构指的是将Table布局的网页变为标准DIV+CSS代码,让结构和表现分离,方便维护
15
2020
05

一个页面(HTML)由哪几部分构成?分别是什么?作用是什么?

由head和body构成。head里面放置一些配置信息,比如配置title、keyword、description、charset等等信息,不会显示在浏览器中。body是内容,会显示在浏览器的屏幕中。
15
2020
05

在HTML代码中如何做SEO?

1.h标签合理使用,strong标签语义比较强,合理使用。2.title、<meta name="description" />、<meta name="keywords" />要合理设置3.a标签要写title,img要写alt4.div要有合理类名,比如.content、.header、.address,便于搜索引擎爬虫检索5.HTML层次清晰,id不要重复,便于搜索引擎爬虫检索
15
2020
05

以下有若干个CSS选择器,请给出他们的优先级顺序。 div h1、 #div h1、 div h1 #_h、 div h1.c_h

div h1权重(0,0,2)#div h1权重(1,0,1)div h1 #_h权重(1,0,2)  这个最大div h1.c_h  权重(0,1,2) 
15
2020
05

请解释浏览器是如何根据CSS选择器选择对应元素的?

#表示id,浏览器会寻找拥有id的元素。.表示类名class属性,空格表示后代,> 表示子元素, + 表示下一个兄弟 , ~ 后面所有兄弟。
15
2020
05

CSS层叠是什么?

CSS全名叫做层叠式样式表,cascading style sheet,cascading就是层叠的意思。层叠具体有两层含义:1) 比如一个标签它可以通过多种手段给他添加属性。<h1 id="logo" class="spec"></h1>#logo{}.spec{}h1{}body{}此时这个标签就被多个选择器添加属性,如果属性有冲突,CSS有精确的权重计算方法来确定“听谁的”。2) 一个选择器可以同时作用在多个标签身上,比如同一
15
2020
05

简述一下什么是内容与表现分离。

HTML就是负责语义,其他什么都不需要管。HTML不要用b、u、i来设置加粗、下划线、倾斜,而是写font-weight:bold;  text-decoration:underline; font-style:italic; 用CSS来表示。再比如,logo可以用h1,用背景替换文字来呈递图片。text-indent:-999em;CSS负责样式,不要写行内样式。
15
2020
05

在书写高效CSS时,需要考虑哪些问题?

基本原则是:去掉不必要的样式、合并相同的样式、尽可能缩小样式的大小、多用公共类、让css变得不臃肿。我在工作中,经常使用gulp中有一个插件叫做gulp-csso,可以智能合并相同的样式,比如div p{font-size:10px;color:green;}  p{color:green;} 它会智能变为:div p{font-size:10px;}  p{color:green;}。
15
2020
05

CSS引入的方法有哪些?都有什么区别?

外链式(也叫作外联式)<link href="1.css" type="text/css" rel="stylesheet" />内嵌式(也叫作内联式)<style type="text/css"></style>导入式<style>@import url(1.css)</style>行内式<div style="width:200px;ba
15
2020
05

行内元素和块级元素的区别,行内元素有哪些,块级元素有哪些?

行内元素不能设置宽度、高度,但是能并排显示,浏览器视行内元素是“文本流元素”。span、a、em、b、u、i。块级元素能设置宽度、高度,但是不能并排显示。div、h1、ul、p、li、section、header。
15
2020
05

简单说明绝对定位和浮动的区别和应用。

绝对定位脱离标准文档流,它的参考点是文档的左上角或者右上角。如果有任何父元素有定位属性,此时就依据“子绝父相”规则来设置自己的定位参考元素。在做网页时候非常的灵活方便。制作覆盖效果的时候,会大量使用绝对定位。浮动脱离标准文档流,通常用于制作并排显示的元素,通常用于大的布局,或者无序列表比如图片的并排。可以使用clear:both属性让标准流中的其他元素在此之后依次排列。
15
2020
05

描述一下浮动会造成什么影响,如何居中一个浮动元素?

【脱标】浮动的元素脱离标准文档流,【贴边】左浮动就会贴左边,又浮动贴右边,贴上一个兄弟元素的边,【字围】字会环绕这个浮动元素,【收缩】不区分行内元素和块级元素了,原来的行内元素现在可以设置宽度、高度,原来的块级元素如果不写width现在会自动缩减为内容宽度。浮动的元素要想居中,必须相对定位。相对定位利用margin-left:50%; left:-宽度一半。原理就是margin-left:50%;此时元素的左边线就会到屏幕中线,拉回自己的width一半即可。所以要用相对定位拉动。或者transf
15
2020
05

如何清除一个标签的子标签的浮动?

清除浮动的几种方法:1.父元素有高度,此时就没有浮动的影响了2.父元素如果不愿意设置固定死的高度,而是自动适配,就写overflow:hidden;_zoom:1;3.后面的元素父盒子加上clear:both;盒子还是没有高度,margin失效;4.两个盒子之前加上一个<div class="cl"></div>   .cl{clear:both},隔墙法,盒子还是没有高度。5.盒子加上::after{content:""
07
2020
05

谈一下领域驱动设计

主要关注核心领域逻辑。基于领域的模型检测复杂设计。这涉及与公司层面领域方面的专家定期合作,以解决与领域相关的问题并改进应用程序的模型。在回答这个微服务面试问题时,您还需要提及DDD的核心基础知识。他们是:DDD主要关注领域逻辑和领域本身。复杂的设计完全基于领域的模型。为了改进模型的设计并解决任何新出现的问题,DDD不断与公司领域方面的专家合作。
07
2020
05

PACT如何运作?

PACT是一个开源工具。它有助于测试消费者和服务提供商之间的互动。消费者服务开发人员首先编写一个测试,该测试定义了与服务提供者的交互模式。测试包括提供者的状态,请求正文和预期的响应。基于此,PACT创建了一个针对其执行测试的存根。输出存储在JSON文件中。
07
2020
05

为什么人们会犹豫使用微服务?

我见过许多开发者在这个问题上摸索。毕竟,在面试微服务架构师角色时,他们会被问到这个问题,所以承认它的缺点可能有点棘手。以下是一些很好的答案:它们需要大量协作 - 微服务需要大量的合作。不同的微服务模块,可能分散在不同的团队,团队之间需要始终保持良好的同步。他们需要建立繁重的架构 - 系统是分布式的,架构涉及很多。他们需要过多的计划来处理操作开销 - 如果您计划使用微服务架构,则需要为操作开销做好准备。需要熟练的专业人员,他们可以支持异构分布的微服务。
07
2020
05

为什么在微服务中需要Reports报告和Dashboards仪表板?

报告和仪表板主要用于监视和维护微服务。有多种工具可以帮助实现此目的。报告 和仪表板可用于:找出哪些微服务公开了哪些资源。找出组件发生变化时受影响的服务。提供一个简单的点,只要需要文档,就可以访问它。部署的组件的版本。
07
2020
05

为什么要选择微服务架构?

这是一个非常常见的微服务面试问题,你应该准备好了!微服务架构提供了许多优点。这里有几个:微服务可以轻松适应其他框架或技术。单个进程的失败不会影响整个系统。为大企业和小型团队提供支持。可以在相对较短的时间内独立部署。
07
2020
05

如何设置服务发现?

有多种方法可以设置服务发现。我将选择我认为效率最高的那个,Netflix的Eureka。这是一个简单的程序,不会对应用程序造成太大影响。此外,它支持多种类型的Web应用程序。Eureka配置包括两个步骤 - 客户端配置和服务器配置。使用属性文件可以轻松完成客户端配置。在clas spath中,Eureka搜索一个eureka-client.properties文件。它还搜索由特定于环境的属性文件中的环境引起的覆盖。对于服务器配置,您必须首先配置客户端。完成后,服务器启动一个客户端,该客户端用于查
07
2020
05

什么是Semantic监控?

它结合了对整个应用程序的监控以及自动化测试。语义监控的主要好处是找出对您的业务更有利可图的因素。从业务角度来看,语义监控以及服务层监控可以监控微服务。一旦检测到问题,它们就可以实现更快的隔离和 错误分类,从而减少修复所需的主要时间。它对服务层和事务层进行分类,以确定受可用性或性能不佳影响的事务。
07
2020
05

微服务的端到端测试意味着什么?

端到端测试 验证工作流中的所有流程,以检查一切是否按预期工作。它还确保系统以统一的方式工作,从而满足业务需求。
07
2020
05

Spring Boot支持哪些嵌入式容器?

无论何时创建Java应用程序,都可以通过两种方法进行部署:使用外部的应用程序容器。将容器嵌入jar文件中。Spring Boot包含Jetty,Tomcat和Undertow服务器,所有服务器都是嵌入式的。Jetty - 用于大量项目,Eclipse Jetty可以嵌入到框架,应用程序服务器,工具和集群中。Tomcat - Apache Tomcat是一个开源JavaServer Pages实现,可以很好地与嵌入式系统配合使用。Undertow - 一个灵活而突出的Web服务器,它使用小型单一处
07
2020
05

如何在Spring Boot应用程序中实现Spring安全性?

实施需要最少的配置。您需要做的就是spring-boot-starter-security在pom.xml文件中添加starter。您还需要创建一个Spring配置类,它将覆盖所需的方法,同时扩展 WebSecurityConfigurerAdapter 应用程序中的安全性。这是一些示例代码:<pre style="box-sizing: inherit; font-family: Menlo, Monaco, Consolas, "Courier New",
07
2020
05

Actuator在Spring Boot中的作用

它是最重要的功能之一,可帮助您访问在生产环境中运行的应用程序的当前状态。有多个指标可用于检查当前状态。它们还为RESTful Web服务提供端点,可以简单地用于检查不同的度量标准。
07
2020
05

什么是Spring Boot?

Spring boot是微服务面试问题的主要话题。随着新功能的加入,Spring变得越来越复杂。无论何时启动新项目,都必须添加新的构建路径或Maven依赖项。简而言之,你需要从头开始做每件事。Spring Boot是一种帮助您避免所有代码配置的解决方案。
07
2020
05

如何覆盖Spring Boot项目的默认属性?

这可以通过在application.properties文件中指定属性来完成。例如,在Spring MVC应用程序中,您必须指定后缀和前缀。这可以通过在application.properties文件中输入下面提到的属性来完成。对于后缀 - spring.mvc.view.suffix: .jsp对于前缀 - spring.mvc.view.prefix: /WEB-INF/
06
2020
05

Bean 工厂和 Application contexts 有什么区别?

Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册为监听器的bean发布事件。另外,在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,可以在Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法。
06
2020
05

什么是Spring框架?

Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说的Spring框架就是Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是核心容器、数据访问/集成、Web、AOP(面向切面编程)、工具、消息和测试模块。比如Core Container中的Core组件是Spring所有组件的核心,Beans组件和Context组件是实现IOC和DI的基础,AOP组件用来实现面向切面编程。Spring官网(https://s
06
2020
05

列举一些重要的Spring模块?

下图对应的是Spring 4.x的版本,目前最新的5.x版本中Web模块的Portlet组件已经被废弃掉,同时增加了用于异步响应式处理的WebFlux组件。Spring Core:基础,可以说Spring其他所有的功能都依赖于该类库。主要提供IOC和DI功能。Spring Aspects:该模块为与AspectJ的集成提供支持。Spring AOP:提供面向方面的编程实现。Spring JDBC:Java数据库连接。Spring JMS:Java消息服务。Spring ORM:用于支持Hiber
06
2020
05

谈谈自己对于Spring IOC和AOP的理解

IOCIOC(Inversion Of Controll,控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由给Spring框架来管理。IOC在其他语言中也有应用,并非Spring特有。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个Map(key, value),Map中存放的是各种对象。将对象之间的相互依赖关系交给IOC容器来管理,并由IOC容器完成对象的注入。这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来。IOC容器就像是一个工厂
06
2020
05

Spring中的单例bean的线程安全问题了解吗?

大部分时候我们并没有在系统中使用多线程,所以很少有人会关注这个问题。单例bean存在线程问题,主要是因为当多个线程操作同一个对象的时候,对这个对象的非静态成员变量的写操作会存在线程安全问题。有两种常见的解决方案:1.在bean对象中尽量避免定义可变的成员变量(不太现实)。2.在类中定义一个ThreadLocal成员变量,将需要的可变成员变量保存在ThreadLocal中(推荐的一种方式)。
06
2020
05

Spring中的bean的作用域有哪些?

1.singleton:唯一bean实例,Spring中的bean默认都是单例的。2.prototype:每次请求都会创建一个新的bean实例。3.request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。4.session:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP session内有效。5.global-session:全局session作用域,仅仅在基于Portlet的Web应用中才有意义,Spring5中已经
06
2020
05

Spring AOP和AspectJ AOP有什么区别?

Spring AOP是属于运行时增强,而AspectJ是编译时增强。Spring AOP基于代理(Proxying),而AspectJ基于字节码操作(Bytecode Manipulation)。Spring AOP已经集成了AspectJ,AspectJ应该算得上是Java生态系统中最完整的AOP框架了。AspectJ相比于Spring AOP功能更加强大,但是Spring AOP相对来说更简单。如果我们的切面比较少,那么两者性能差异不大。但是,当切面太多的话,最好选择AspectJ,它比Sp
06
2020
05

Spring中的bean生命周期?

1.Bean容器找到配置文件中Spring Bean的定义。2.Bean容器利用Java Reflection API创建一个Bean的实例。3.如果涉及到一些属性值,利用set()方法设置一些属性值。4.如果Bean实现了BeanNameAware接口,调用setBeanName()方法,传入Bean的名字。5.如果Bean实现了BeanClassLoaderAware接口,调用setBeanClassLoader()方法,传入ClassLoader对象的实例。6.如果Bean实现了BeanF
06
2020
05

说说自己对于Spring MVC的了解?

谈到这个问题,我们不得不提提之前Model1和Model2这两个没有Spring MVC的时代。Model1时代:很多学Java比较晚的后端程序员可能并没有接触过Model1模式下的JavaWeb应用开发。在Model1模式下,整个Web应用几乎全部用JSP页面组成,只用少量的JavaBean来处理数据库连接,访问等操作。这个模式下JSP即是控制层又是表现层。显而易见,这种模式存在很多问题。比如将控制逻辑和表现逻辑混杂在一起,导致代码重用率极低;又比如前端和后端相互依赖,难以进行测试并且开发效率
06
2020
05

Spring MVC的工作原理了解嘛?

流程说明: 1.客户端(浏览器)发送请求,直接请求到DispatcherServlet。 2.DispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler。 3.解析到对应的Handler(也就是我们平常说的Controller控制器)。 4.HandlerAdapter会根据Handler来调用真正的处理器来处理请求和执行相对应的业务逻辑。 5.处理器处理完业务后,会返回一个ModelAndV
06
2020
05

Spring框架中用到了哪些设计模式

1.工厂设计模式:Spring使用工厂模式通过BeanFactory和ApplicationContext创建bean对象。2.代理设计模式:Spring AOP功能的实现。3.单例设计模式:Spring中的bean默认都是单例的。4.模板方法模式:Spring中的jdbcTemplate、hibernateTemplate等以Template结尾的对数据库操作的类,它们就使用到了模板模式。5.包装器设计模式:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。
06
2020
05

@Component和@Bean的区别是什么

1.作用对象不同。@Component注解作用于类,而@Bean注解作用于方法。2.@Component注解通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中(我们可以使用@ComponentScan注解定义要扫描的路径)。@Bean注解通常是在标有该注解的方法中定义产生这个bean,告诉Spring这是某个类的实例,当我需要用它的时候还给我。3.@Bean注解比@Component注解的自定义性更强,而且很多地方只能通过@Bean注解来注册bean。比如当引用第三方库的类需要装配到
06
2020
05

将一个类声明为Spring的bean的注解有哪些?

我们一般使用@Autowired注解去自动装配bean。而想要把一个类标识为可以用@Autowired注解自动装配的bean,可以采用以下的注解实现:1.@Component注解。通用的注解,可标注任意类为Spring组件。如果一个Bean不知道属于哪一个层,可以使用@Component注解标注。2.@Repository注解。对应持久层,即Dao层,主要用于数据库相关操作。3.@Service注解。对应服务层,即Service层,主要涉及一些复杂的逻辑,需要用到Dao层(注入)。4.@Cont
06
2020
05

Spring事务管理的方式有几种?

1.编程式事务:在代码中硬编码(不推荐使用)。2.声明式事务:在配置文件中配置(推荐使用),分为基于XML的声明式事务和基于注解的声明式事务。
06
2020
05

Spring事务中的隔离级别有哪几种?

在TransactionDefinition接口中定义了五个表示隔离级别的常量:ISOLATION_DEFAULT:使用后端数据库默认的隔离级别,Mysql默认采用的REPEATABLE_READ隔离级别;Oracle默认采用的READ_COMMITTED隔离级别。ISOLATION_READ_UNCOMMITTED:最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。ISOLATION_READ_COMMITTED:允许读取并发事务已经提交的数据,可以阻止脏读,但是幻
06
2020
05

Spring事务中有哪几种事务传播行为?

在TransactionDefinition接口中定义了八个表示事务传播行为的常量。支持当前事务的情况:PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。PROPAGATION_SUPPORTS: 如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。PROPAGATION_MANDATORY: 如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。(mandatory:强制性)。不支持当前事务的情况:P
06
2020
05

介绍一下 WebApplicationContext

WebApplicationContext 是 ApplicationContext 的扩展。它具有 Web 应用程序所需的一些额外功能。它与普通的 ApplicationContext 在解析主题和决定与哪个 servlet 关联的能力方面有所不同。
06
2020
05

描述一下 DispatcherServlet 的工作流程

DispatcherServlet 的工作流程可以用一幅图来说明:向服务器发送 HTTP 请求,请求被前端控制器 DispatcherServlet 捕获。DispatcherServlet 根据 -servlet.xml 中的配置对请求的 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对象对应的拦截器),最后以HandlerExecutionC
06
2020
05

Spring MVC 框架有什么用?

Spring Web MVC 框架提供 模型-视图-控制器 架构和随时可用的组件,用于开发灵活且松散耦合的 Web 应用程序。 MVC 模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和 UI 逻辑,同时在所有这些元素之间提供松散耦合。
06
2020
05

什么是编织(Weaving)?

为了创建一个 advice 对象而链接一个 aspect 和其它应用类型或对象,称为编织(Weaving)。在 Spring AOP 中,编织在运行时执行。请参考下图:
06
2020
05

如何理解 Spring 中的代理?

将 Advice 应用于目标对象后创建的对象称为代理。在客户端对象的情况下,目标对象和代理对象是相同的。Advice + Target Object = Proxy
06
2020
05

Spring AOP and AspectJ AOP 有什么区别?

Spring AOP 基于动态代理方式实现;AspectJ 基于静态代理方式实现。Spring AOP 仅支持方法级别的 PointCut;提供了完全的 AOP 支持,它还支持属性级别的 PointCut。
06
2020
05

AOP 有哪些实现方式?

实现 AOP 的技术,主要分为两大类:静态代理 - 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;编译时编织(特殊编译器实现)类加载时编织(特殊的类加载器实现)。动态代理 - 在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。JDK 动态代理CGLIB
06
2020
05

指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处。

concern 是我们想要在应用程序的特定模块中定义的行为。它可以定义为我们想要实现的功能。cross-cutting concern 是一个适用于整个应用的行为,这会影响整个应用程序。例如,日志记录,安全性和数据传输是应用程序几乎每个模块都需要关注的问题,因此它们是跨领域的问题。
06
2020
05

有哪些类型的通知(Advice)?

Before - 这些类型的 Advice 在 joinpoint 方法之前执行,并使用 @Before 注解标记进行配置。After Returning - 这些类型的 Advice 在连接点方法正常执行后执行,并使用@AfterReturning 注解标记进行配置。After Throwing - 这些类型的 Advice 仅在 joinpoint 方法通过抛出异常退出并使用 @AfterThrowing 注解标记配置时执行。After (finally) - 这些类型的 Advice 在连
06
2020
05

什么是通知(Advice)?

特定 JoinPoint 处的 Aspect 所采取的动作称为 Advice。Spring AOP 使用一个 Advice 作为拦截器,在 JoinPoint “周围”维护一系列的拦截器。
06
2020
05

什么是切点(JoinPoint)

程序运行中的一些时间点, 例如一个方法的执行, 或者是一个异常的处理.在 Spring AOP 中, join point 总是方法的执行点。
06
2020
05

什么是 Aspect?

aspect 由 pointcount 和 advice 组成, 它既包含了横切逻辑的定义, 也包括了连接点的定义. Spring AOP 就是负责实施切面的框架, 它将切面所定义的横切逻辑编织到切面所指定的连接点中.AOP 的工作重心在于如何将增强编织目标对象的连接点上, 这里包含两个工作:如何通过 pointcut 和 advice 定位到特定的 joinpoint 上如何在 advice 中编写切面代码.可以简单地认为, 使用 @Aspect 注解的类就是切面.
06
2020
05

什么是 AOP?

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角.在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面)
06
2020
05

spring 支持哪些 ORM 框架

HibernateiBatisJPAJDOOJB
06
2020
05

列举 spring 支持的事务管理类型

Spring 支持两种类型的事务管理:程序化事务管理:在此过程中,在编程的帮助下管理事务。它为您提供极大的灵活性,但维护起来非常困难。声明式事务管理:在此,事务管理与业务代码分离。仅使用注解或基于 XML 的配置来管理事务。
06
2020
05

使用 Spring 访问 Hibernate 的方法有哪些?

我们可以通过两种方式使用 Spring 访问 Hibernate:使用 Hibernate 模板和回调进行控制反转扩展 HibernateDAOSupport 并应用 AOP 拦截器节点
06
2020
05

spring DAO 有什么用?

Spring DAO 使得 JDBC,Hibernate 或 JDO 这样的数据访问技术更容易以一种统一的方式工作。这使得用户容易在持久性技术之间切换。它还允许您在编写代码时,无需考虑捕获每种技术不同的异常。
06
2020
05

@RequestMapping 注解有什么用?

@RequestMapping 注解用于将特定 HTTP 请求方法映射到将处理相应请求的控制器中的特定类/方法。此注释可应用于两个级别:类级别:映射请求的 URL方法级别:映射 URL 以及 HTTP 请求方法
06
2020
05

@Qualifier 注解有什么用?

当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可以使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean 来消除歧义。例如,这里我们分别有两个类,Employee 和 EmpAccount。在 EmpAccount 中,使用@Qualifier 指定了必须装配 id 为 emp1 的 bean。Employee.javapublic class Employee {    private String n
06
2020
05

@Autowired 注解有什么用?

@Autowired 可以更准确地控制应该在何处以及如何进行自动装配。此注解用于在 setter 方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配 bean。默认情况下,它是类型驱动的注入。public class Employee {    private String name;    @Autowired    public void setName(String name) {     
06
2020
05

@Required 注解有什么用?

@Required 应用于 bean 属性 setter 方法。此注解仅指示必须在配置时使用 bean 定义中的显式属性值或使用自动装配填充受影响的 bean 属性。如果尚未填充受影响的 bean 属性,则容器将抛出 BeanInitializationException。示例:public class Employee {    private String name;    @Required    public void setN
06
2020
05

@Component, @Controller, @Repository, @Service 有何区别?

@Component:这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境中。@Controller:这将一个类标记为 Spring Web MVC 控制器。标有它的 Bean 会自动导入到 IoC 容器中。@Service:此注解是组件注解的特化。它不会对 @Component 注解提供任何其他行为。您可以在服务层类中使用 @Service 而不是 @Component,因为它以更好的方式指定了意图
06
2020
05

如何在 spring 中启动注解装配?

默认情况下,Spring 容器中未打开注解装配。因此,要使用基于注解装配,我们必须通过配置<context:annotation-config /> 元素在 Spring 配置文件中启用它。
06
2020
05

什么是基于注解的容器配置

不使用 XML 来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上使用注解将配置移动到组件类本身。它可以作为 XML 设置的替代方案。例如:Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。@Bean 注解扮演与 元素相同的角色。@Configuration 类允许通过简单地调用同一个类中的其他 @Bean 方法来定义 bean 间依赖关系。例如:@Configurationpublic class StudentConfig {&n
06
2020
05

自动装配有什么局限?

覆盖的可能性 - 您始终可以使用 <constructor-arg> 和 <property> 设置指定依赖项,这将覆盖自动装配。基本元数据类型 - 简单属性(如原数据类型,字符串和类)无法自动装配。令人困惑的性质 - 总是喜欢使用明确的装配,因为自动装配不太精确。
06
2020
05

自动装配有哪些方式?

Spring 容器能够自动装配 bean。也就是说,可以通过检查 BeanFactory 的内容让 Spring 自动解析 bean 的协作者。自动装配的不同模式:no - 这是默认设置,表示没有自动装配。应使用显式 bean 引用进行装配。byName - 它根据 bean 的名称注入对象依赖项。它匹配并装配其属性与 XML 文件中由相同名称定义的 bean。byType - 它根据类型注入对象依赖项。如果属性的类型与 XML 文件中的一个 bean 名称匹配,则匹配并装配属性。构造函数 -
06
2020
05

什么是 spring 装配

当 bean 在 Spring 容器中组合在一起时,它被称为装配或 bean 装配。 Spring 容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定在一起,同时装配 bean。
06
2020
05

什么是 spring 的内部 bean?

只有将 bean 用作另一个 bean 的属性时,才能将 bean 声明为内部 bean。为了定义 bean,Spring 的基于 XML 的配置元数据在 <property> 或 <constructor-arg> 中提供了 <bean> 元素的使用。内部 bean 总是匿名的,它们总是作为原型。例如,假设我们有一个 Student 类,其中引用了 Person 类。这里我们将只创建一个 Person 类实例并在 Student 中使用它。Student.j
06
2020
05

spring bean 容器的生命周期是什么样的?

spring bean 容器的生命周期流程如下:Spring 容器根据配置中的 bean 定义中实例化 bean。Spring 使用依赖注入填充所有属性,如 bean 中所定义的配置。如果 bean 实现 BeanNameAware 接口,则工厂通过传递 bean 的 ID 来调用 setBeanName()。如果 bean 实现 BeanFactoryAware 接口,工厂通过传递自身的实例来调用 setBeanFactory()。如果存在与 bean 关联的任何 BeanPostProces
06
2020
05

spring 支持集中 bean scope?

Spring bean 支持 5 种 scope:Singleton - 每个 Spring IoC 容器仅有一个单实例。Prototype - 每次请求都会产生一个新的实例。Request - 每一次 HTTP 请求都会产生一个新的实例,并且该 bean 仅在当前 HTTP 请求内有效。Session - 每一次 HTTP 请求都会产生一个新的 bean,同时该 bean 仅在当前 HTTP session 内有效。Global-session - 类似于标准的 HTTP Session 作用
06
2020
05

spring 提供了哪些配置方式?

基于 xml 配置bean 所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常包含许多 bean 定义和特定于应用程序的配置选项。它们通常以 bean 标签开头。例如:<bean id="studentbean" class="org.edureka.firstSpring.StudentBean"> <property name="name" value="Edureka&quo
06
2020
05

什么是 spring bean?

它们是构成用户应用程序主干的对象。Bean 由 Spring IoC 容器管理。它们由 Spring IoC 容器实例化,配置,装配和管理。Bean 是基于用户提供给容器的配置元数据创建。
06
2020
05

Spring IoC 的实现机制。

Spring 中的 IoC 的实现原理就是工厂模式加反射机制。示例:interface Fruit {     public abstract void eat();}class Apple implements Fruit {    public void eat(){        System.out.println("Apple");    }}class O
06
2020
05

列举 IoC 的一些好处。

IoC 的一些好处是:它将最小化应用程序中的代码量。它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例或 JNDI 查找机制。它以最小的影响和最少的侵入机制促进松耦合。它支持即时的实例化和延迟加载服务。
06
2020
05

区分 BeanFactory 和 ApplicationContext。

BeanFactory:它使用懒加载它使用语法显式提供资源对象不支持国际化不支持基于依赖的注解ApplicationContext:它使用即时加载它自己创建和管理资源对象支持国际化支持基于依赖的注解
06
2020
05

spring 中有多少种 IOC 容器?

BeanFactory - BeanFactory 就像一个包含 bean 集合的工厂类。它会在客户端要求时实例化 bean。ApplicationContext - ApplicationContext 接口扩展了 BeanFactory 接口。它在 BeanFactory 基础上提供了一些额外的功能。
06
2020
05

区分构造函数注入和 setter 注入。

构造函数注入:没有部分注入不会覆盖 setter 属性任意修改都会创建一个新实例适用于设置很多属性setter 注入:有部分注入会覆盖 setter 属性任意修改不会创建一个新实例适用于设置少量属性
06
2020
05

可以通过多少种方式完成依赖注入?

通常,依赖注入可以通过三种方式完成,即:构造函数注入setter 注入接口注入在 Spring Framework 中,仅使用构造函数和 setter 注入。
06
2020
05

什么是依赖注入?

在依赖注入中,您不必创建对象,但必须描述如何创建它们。您不是直接在代码中将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。由 IoC 容器将它们装配在一起。
06
2020
05

什么是 Spring IOC 容器?

Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。该元数据可以通过 XML,Java 注解或 Java 代码提供。
06
2020
05

使用 Spring 有哪些方式?

使用 Spring 有以下方式:作为一个成熟的 Spring Web 应用程序。作为第三方 Web 框架,使用 Spring Frameworks 中间层。用于远程使用。作为企业级 Java Bean,它可以包装现有的 POJO(Plain Old Java Objects)。
06
2020
05

Spring 应用程序有哪些不同组件?

Spring 应用一般有以下组件:接口 - 定义功能。Bean 类 - 它包含属性,setter 和 getter 方法,函数等。Spring 面向切面编程(AOP) - 提供面向切面编程的功能。Bean 配置文件 - 包含类的信息以及如何配置它们。用户程序 - 它使用接口。
06
2020
05

什么是 Spring 配置文件?

Spring 配置文件是 XML 文件。该文件主要包含类信息。它描述了这些类是如何配置以及相互引入的。但是,XML 配置文件冗长且更加干净。如果没有正确规划和编写,那么在大项目中管理变得非常困难。
06
2020
05

Spring Framework 中有多少个模块,它们分别是什么?

Spring 核心容器 – 该层基本上是 Spring Framework 的核心。它包含以下模块:Spring CoreSpring BeanSpEL (Spring Expression Language)Spring Context数据访问/集成 – 该层提供与数据库交互的支持。它包含以下模块:JDBC (Java DataBase Connectivity)ORM (Object Relational Mapping)OXM (Object XML Mappers)JMS (Java M
06
2020
05

Spring Framework 有哪些不同的功能?

轻量级 - Spring 在代码量和透明度方面都很轻便。IOC - 控制反转AOP - 面向切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。容器 - Spring 负责创建和管理对象(Bean)的生命周期和配置。MVC - 对 web 应用提供了高度可配置性,其他框架的集成也十分方便。事务管理 - 提供了用于事务管理的通用抽象层。Spring 的事务支持也可用于容器较少的环境。JDBC 异常 - Spring 的 JDBC 抽象层提供了一个异常层次结构,简化了错误处理策略。
06
2020
05

列举 Spring Framework 的优点。

由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集成和可测试性。由于依赖注入和控制反转,JDBC 得以简化。它是开源免费的。
06
2020
05

什么是 Spring Framework?

Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。它可以集成其他框架,如 Structs、Hibernate、EJB 等,所以又称为框架的框架。
06
2020
05

不同版本的 Spring Framework 有哪些主要功能?

Spring 2.5 发布于 2007 年。这是第一个支持注解的版本。Spring 3.0 发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。Spring 4.0 发布于 2013 年。这是第一个完全支持 JAVA8 的版本。
06
2020
05

@RequestMapping 注解

该注解是用来映射一个URL到一个类或一个特定的方处理法上。
06
2020
05

@Controller 注解

该注解表明该类扮演控制器的角色,Spring不需要你继承任何其他控制器基类或引用Servlet API。
06
2020
05

什么是Spring MVC框架的控制器?

控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。Spring用一个非常抽象的方式实现了一个控制层,允许用户创建多种用途的控制器。
06
2020
05

WebApplicationContext

WebApplicationContext 继承了ApplicationContext  并增加了一些WEB应用必备的特有功能,它不同于一般的ApplicationContext ,因为它能处理主题,并找到被关联的servlet。
06
2020
05

DispatcherServlet

Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。
06
2020
05

什么是Spring的MVC框架?

Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。
06
2020
05

解释基于注解的切面实现

在这种情况下(基于@AspectJ的实现),涉及到的切面声明的风格与带有java5标注的普通java类一致。
06
2020
05

解释基于XML Schema方式的切面实现。

在这种情况下,切面由常规类以及基于XML的配置实现。
06
2020
05

什么是织入。什么是织入应用的不同点?

织入是将切面和到其他应用类型或对象连接或创建一个被通知对象的过程。织入可以在编译时,加载时,或运行时完成。
06
2020
05

有几种不同类型的自动代理?

BeanNameAutoProxyCreatorDefaultAdvisorAutoProxyCreatorMetadata autoproxying
06
2020
05

什么是代理?

代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。
06
2020
05

什么是目标对象?

被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。
06
2020
05

什么是引入?

引入允许我们在已存在的类中增加新的方法和属性。
06
2020
05

切点

切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点。
06
2020
05

通知

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。Spring切面可以应用五种类型的通知:before:前置通知,在一个方法执行前被调用。after: 在方法执行之后调用的通知,无论方法执行是否成功。after-returning: 仅当方法成功完成后执行的通知。after-throwing: 在方法抛出异常退出时执行的通知。around: 在方法执行之前和之后调用的通知。
06
2020
05

连接点

连接点代表一个应用程序的某个位置,在这个位置我们可以插入一个AOP切面,它实际上是个应用程序执行Spring AOP的位置。
06
2020
05

在Spring AOP 中,关注点和横切关注的区别是什么?

关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。
06
2020
05

Aspect 切面

AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。比如,一个日志模块可以被称作日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。在Spring AOP中,切面通过带有@Aspect注解的类实现。
06
2020
05

你更倾向用那种事务管理类型?

大多数Spring框架的用户选择声明式事务管理,因为它对应用代码的影响最小,因此更符合一个无侵入的轻量级容器的思想。声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。
06
2020
05

Spring支持的事务管理类型

Spring支持两种类型的事务管理:编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
06
2020
05

如何通过HibernateDaoSupport将Spring和Hibernate结合起来?

用Spring的 SessionFactory 调用 LocalSessionFactory。集成过程分三步:配置the Hibernate SessionFactory。继承HibernateDaoSupport实现一个DAO。在AOP支持的事务中装配。
06
2020
05

Spring支持的ORM

Spring支持以下ORM:HibernateiBatisJPA (Java Persistence API)TopLinkJDO (Java Data Objects)OJB
06
2020
05

使用Spring通过什么方式访问Hibernate?

在Spring中有两种方式访问Hibernate:控制反转  Hibernate Template和 Callback。继承 HibernateDAOSupport提供一个AOP 拦截器。
06
2020
05

Spring对DAO的支持

Spring对数据访问对象(DAO)的支持旨在简化它和数据访问技术如JDBC,Hibernate or JDO 结合使用。这使我们可以方便切换持久层。编码时也不用担心会捕获每种技术特有的异常。
06
2020
05

JdbcTemplate

JdbcTemplate 类提供了很多便利的方法解决诸如把数据库数据转变成基本数据类型或对象,执行写好的或可调用的数据库操作语句,提供自定义的数据错误处理。
06
2020
05

在Spring框架中如何更有效地使用JDBC?

使用SpringJDBC 框架,资源管理和错误处理的代价都会被减轻。所以开发者只需写statements 和 queries从数据存取数据,JDBC也可以在Spring框架提供的模板类的帮助下更有效地被使用,这个模板叫JdbcTemplate (例子见这里here)
06
2020
05

@Qualifier 注解

当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。
06
2020
05

@Autowired 注解

@Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法。
06
2020
05

@Required 注解

这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。
06
2020
05

什么是基于注解的容器配置?

相对于XML文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明。开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用xml表述bean的装配关系。
06
2020
05

你可以在Spring中注入一个null 和一个空字符串吗?

可以。
06
2020
05

自动装配有哪些局限性 ?

自动装配的局限性是:重写: 你仍需用 <constructor-arg>和 <property> 配置来定义依赖,意味着总要重写自动装配。基本数据类型:你不能自动装配简单的属性,如基本数据类型,String字符串,和类。模糊特性:自动装配不如显式装配精确,如果有可能,建议使用显式装配。
06
2020
05

解释不同方式的自动装配 。

有五种自动装配的方式,可以用来指导Spring容器用自动装配方式来进行依赖注入。no:默认的方式是不进行自动装配,通过显式设置ref 属性来进行装配。byName:通过参数名 自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该bean的属性具有相同名字的bean。byType::通过参数类型自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byType,之后容器试图匹配、装配和该bean的属性具有
06
2020
05

什么是bean的自动装配?

Spring 容器能够自动装配相互合作的bean,这意味着容器不需要<constructor-arg>和<property>配置,能通过Bean工厂自动处理bean之间的协作。
06
2020
05

什么是bean装配?

装配,或bean 装配是指在Spring 容器中把bean组装到一起,前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起。
06
2020
05

什么是Spring的内部bean?

当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean,为了定义inner bean,在Spring 的 基于XML的 配置元数据中,可以在 <property/>或 <constructor-arg/> 元素内使用<bean/> 元素,内部bean通常是匿名的,它们的Scope一般是prototype。
06
2020
05

哪些是重要的bean生命周期方法? 你能重载它们吗?

有两个重要的bean 生命周期方法,第一个是setup , 它是在容器加载bean的时候被调用。第二个方法是 teardown  它是在容器卸载类的时候被调用。The bean 标签有两个重要的属性(init-method和destroy-method)。用它们你可以自己定制初始化和注销方法。它们也有相应的注解(@PostConstruct和@PreDestroy)。
06
2020
05

你怎样定义类的作用域?

当定义一个<bean> 在Spring里,我们还能给这个bean声明一个作用域。它可以通过bean 定义中的scope属性来定义。如,当Spring要在需要的时候每次生产一个新的bean实例,bean的scope属性被指定为prototype。另一方面,一个bean每次使用的时候必须返回同一个实例,这个bean的scope 属性 必须设为 singleton。
06
2020
05

如何给Spring 容器提供配置元数据

这里有三种重要的方法给Spring 容器提供配置元数据。XML配置文件。基于注解的配置。基于java的配置。
06
2020
05

一个 Spring Bean 定义 包含什么?

一个Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖。
06
2020
05

什么是Spring beans?

Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中<bean/> 的形式定义。Spring 框架定义的beans都是单件beans。在bean tag中有个属性”singleton”,如果它被赋为TRUE,bean 就是单件,否则就是一个 prototype bean。默认是TRUE,所以所有在Spring框架中的beans 缺省都是单件。
06
2020
05

哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入?

你两种依赖方式都可以使用,构造器注入和Setter方法注入。最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖。
06
2020
05

一个Spring的应用看起来象什么?

一个定义了一些功能的接口。这实现包括属性,它的Setter , getter 方法和函数等。Spring AOP。Spring 的XML 配置文件。使用以上功能的客户端程序。
06
2020
05

Bean 工厂和 Application contexts 有什么区别?

Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册为监听器的bean发布事件。另外,在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,可以在Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法。
06
2020
05

pplicationContext通常的实现是什么?

FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean。
06
2020
05

Spring配置文件

Spring配置文件是个XML 文件,这个文件包含了类信息,描述了如何配置它们,以及如何相互调用。
06
2020
05

解释WEB 模块。

Spring的WEB模块是构建在application context 模块基础之上,提供一个适合web应用的上下文。这个模块也包括支持多种面向web的任务,如透明地处理多个文件上传请求和程序级请求参数的绑定到你的业务对象。它也有对Jakarta Struts的支持。
06
2020
05

解释对象/关系映射集成模块。

Spring 通过提供ORM模块,支持我们在直接JDBC之上使用一个对象/关系映射映射(ORM)工具,Spring 支持集成主流的ORM框架,如Hiberate,JDO和 iBATIS SQL Maps。Spring的事务管理同样支持以上所有ORM框架及JDBC。
06
2020
05

解释JDBC抽象和DAO模块。

通过使用JDBC抽象和DAO模块,保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层。它还利用Spring的AOP 模块给Spring应用中的对象提供事务管理服务。
06
2020
05

解释AOP模块

AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。
06
2020
05

Spring由哪些模块组成?

以下是Spring 框架的基本模块:Core moduleBean moduleContext moduleExpression Language moduleJDBC moduleORM moduleOXM moduleJava Messaging Service(JMS) moduleTransaction moduleWeb moduleWeb-Servlet moduleWeb-Struts moduleWeb-Portlet module
06
2020
05

Spring框架中的单例bean是线程安全的吗?

    不,Spring框架中的单例bean不是线程安全的。
06
2020
05

spring核心类有哪些?各有什么作用?

  BeanFactory:产生一个新的实例,可以实现单例模式BeanWrapper:提供统一的get及set方法ApplicationContext:提供框架的实现,包括BeanFactory的所有功能
06
2020
05

怎样开启注解装配?

注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在Spring配置文件中配置 <context:annotation-config/>元素。
06
2020
05

解释Spring支持的几种bean的作用域。

Spring容器中的bean可以分为5个范围:(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。(2)prototype:为每一个bean请求提供一个实例。(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。(5)global-session:全局作
06
2020
05

Spring的自动装配:

在spring中,对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象,使用autowire来配置自动装载模式。在Spring框架xml配置中共有5种自动装配:(1)no:默认的方式是不进行自动装配的,通过手工设置ref属性来进行装配bean。(2)byName:通过bean的名称进行自动装配,如果一个bean的 property 与另一bean 的name 相同,就进行自动装配。 (3)byType:通过参数的数据类型进行自动装配。(4)const
06
2020
05

spring事务的实现及其原理

Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。(1)Spring事务的种类:spring支持编程式事务管理和声明式事务管理两种方式:①编程式事务管理使用TransactionTemplate。②声明式事务管理建立在AOP之上的。其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要在业务逻辑代码
06
2020
05

什么是IOC、DI 及其两者的优点 、 有哪几种注入方式

IOC:控制反转,把创建对象的控制权利由代码转移到spring的配置文件中。最直观的表达就是,IOC让对象的创建不用去new了,可以由spring自动生产,使用java的反射机制,根据配置文件在运行时动态的去创建对象以及管理对象,并调用对象的方法的。DI:依赖注入,在程序运行期间,由外部容器动态地将依赖对象注入到组件中。简单定义就是当一个对象需要另一个对象时,可以把另一个对象注入到对象中去。优点就是把应用的代码量降到最低,达到松散耦合度。注入的方式:构造注入Set注入接口注入Spring提供以下
06
2020
05

谈谈对AOP理解?

aop面向切面编程,关键在于代理模式,Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是每次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。动态代理可以减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理。Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理:JDK代理:基于接口的代理,不支持类的
06
2020
05

什么是spring、为什么要用spring及其优点、spring有哪些模块组成 ?

什么是springSpring 是个Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,它使得开发者只需要关心业务需求。spring优点spring属于低侵入式设计,代码的污染极低;spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性;Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。spring
30
2020
04

HashMap初始容量10000即new HashMap(10000),当往里put 10000个元素时,需要resize几次(初始化的那次不算)?

0次解释:比10000大,且最接近的2的n次方数是16384,默认负载因子是0.75,16384*0.75 = 12288>10000,因而不需要扩容。
30
2020
04

String get(String string, T t) { return string; } 此方法:

编译正确解释:尖括号里的每个元素都指代一种未知类型,在定义处只具备执行Object方法的能力,在编译期间,所有的泛型信息都会被擦除,编译后,get()的两个参数是Object,返回值也是Object。
30
2020
04

String a = null; switch(a)匹配case中的哪一项?

直接抛出异常解释:在Java编程语言的设计者的判断中,这比静默跳过整个开关语句要合理,因为使用null作为开关标签的话,编写的代码将永远不会执行。
30
2020
04

某个类有两个重载方法:void g(double d) 和 void g(Integer i),那么g(1)的会调用哪个方法?

前者解释:1)精确匹配->2)基本数据类型(自动转换成更大范围)->3)封装类(自动拆箱与装箱)->4)子类向上转型依次匹配->5)可变参数匹配,本题是进行到第二步匹配上了。
30
2020
04

某个类有两个重载方法:void f(String s) 和 void f(Integer i),那么f(null)的会调用哪个方法?

 编译出错解释:1)精确匹配->2)基本数据类型(自动转换成更大范围)->3)封装类(自动拆箱与装箱)->4)子类向上转型依次匹配->5)可变参数匹配。子类向上转型,两者的父类都是object类(null默认类型是object),因而会同时匹配上两者,编译器会报Ambiguous method call. Both错误
30
2020
04

>>和>>>的区别是?

正整数一定没有区别解释:>>>表示不带符号向右移动二进制数,移动后前面统统补0;两个箭头表示带符号移动,正整数的符号位是0,因而两者没有区别
30
2020
04

System.out.println(0.0 / 0.0); 的结果是什么?

NaN解释:java源码,Double包装类下,public static final double NaN = 0.0d / 0.0;NAN表示非数字,它与任何值都不相等,甚至不等于它自己。
30
2020
04

System.out.println(1.0 / 0); 的结果是什么?

Infinity解释:在整型运算中,除数是不能为0的,否则直接运行异常。但是在浮点数运算中,引入了无限这个概念。可以看一下源码Double的定义, public static final double POSITIVE_INFINITY = 1.0 / 0.0;
30
2020
04

double c = 0.8; double d = 0.7; double e = 0.6; 那么c-d与d-e是否相等?

false解释:类似十进制里面的分数1/3,就是无限循环数,无法精确表示出来,同理浮点数里有些数值也没法精确表示出来。System.out.println(0.8-0.7);//输出0.10000000000000009System.out.println(0.7-0.6);//输出0.09999999999999998
30
2020
04

float a = 0.125f; double b = 0.125d; System.out.println((a - b) == 0.0); 代码的输出结果是什么?

true解释:首先浮点数是由符号位、指数位、有效数字三个部分组成,而0.125f、0.125d均可以精确的表示出来,不存在精度丢失,因而a-b==0.0。
30
2020
04

介绍几款常见的可视化HTML编辑器(WYSIWYG).

目前HTML编辑器可以说是种类繁多, 特别是国外, 开源的商业的, 各种版本, 不一而足. 我只是简单介绍几个常见的免费/开源 的可视化HTML编辑器 (WYSIWYG).HTMLArea功能一般, 文件不大, 支持是几种语言, 比较容易定制, 使用广泛,支持IE/Firefox/Mozilla等多种浏览器. 遵循BSD版权, 目前最新版是3.0.官方网站: http://www.htmlarea.com/ FCKEditor庞大, 功能强大, 加载慢. 在很多地方使用广泛, 比如CSDN的bl
30
2020
04

什么是事件发射器?它是怎样在Angular 2中工作的?

Angular 2不具有双向digest cycle。这是与Angular 1不同的。在Angular2中,组件中发生的不论什么改变总是从当前组件传播到其全部子组件中。假设一个子组件的更改须要反映到其父组件的层次结构中,我们能够通过使用事件发射器api来发出事件。简而言之,EventEmitter是在@ angular/core模块中定义的类。由组件和指令使用。用来发出自己定义事件。@output() somethingChanged = new EventEmitter();我们使用somet
30
2020
04

Angular 2中的路由工作原理是什么?

路由是能够让用户在视图/组件之间导航的机制。Angular 2简化了路由,并提供了在模块级(延迟载入)下配置和定义的灵活性。 Angular应用程序具有路由器服务的单个实例。而且每当URL改变时。对应的路由就与路由配置数组进行匹配。在成功匹配时,它会应用重定向,此时路由器会构建ActivatedRoute对象的树。同一时候包括路由器的当前状态。在重定向之前,路由器将通过执行保护(CanActivate)来检查是否同意新的状态。Route Guard仅仅是路由器执行来检查路由授权的接口方
30
2020
04

使用Angular 2,和使用Angular 1相比。有什么优势?

1.Angular 2是一个平台,不仅是一种语言2.更好的速度和性能3.更简单的依赖注入4.模块化。跨平台5.具备ES6和Typescript的优点。6.灵活的路由,具备延迟载入功能7.更easy学习
30
2020
04

请解释Angular 2应用程序的生命周期hooks是什么?

Angular 2组件/指令具有生命周期事件。是由@angular/core管理的。@angular/core会创建组件。渲染它。创建并呈现它的后代。当@angular/core的数据绑定属性更改时,处理就会更改,在从DOM中删除其模板之前,就会销毁掉它。Angular提供了一组生命周期hooks(特殊事件)。能够被分接到生命周期中,并在须要时执行操作。构造函数会在全部生命周期事件之前执行。每一个接口都有一个前缀为ng的hook方法。比如,ngOnint界面的OnInit方法,这种方法必须在组件
30
2020
04

在angular中MVVM模式主要分为四部分

View:它专注于界面的显示和渲染,在angular中则是包含一堆声明式Directive的视图模板。ViewModel:它是View和Model的粘合体,负责View和Model的交互和协作,它负责给View提供显示的数据,以及提供了View中Command事件操作Model的途径;在angular中$scope对象充当了这个ViewModel的角色;Model:它是与应用程序的业务逻辑相关的数据的封装载体,它是业务领域的对象,Model并不关心会被如何显示或操作,所以模型也不会包含任何界面显
29
2020
04

操作系统进程和线程的区别

1.简而言之,一个程序至少有一个进程,一个进程至少有一个线程.2.线程的划分尺度小于进程,使得多线程程序的并发性高。3.另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。4.多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配
29
2020
04

Serializable 和 Parcelable 的区别

在使用内存的时候,Parcelable 类比 Serializable 性能高,所以推荐使用 Parcelable 类。Serializable 在序列化的时候会产生大量的临时变量,从而引起频繁的 GC。Parcelable 不能使用在要将数据存储在磁盘上的情况。尽管 Serializable 效率低点,但在这 种情况下,还是建议你用 Serializable 。
29
2020
04

Bitmap的处理

1.当使用ImageView的时候,可能图片的像素大于ImageView,此时就可以通过BitmapFactory.Option来对图片进行压缩,inSampleSize表示缩小2^(inSampleSize-1)倍。2.BitMap的缓存:1.同步加载只创建一个线程然后按照顺序进行图片加载2.异步加载使用线程池,让存在的加载任务都处于不同线程3.为了不开启过多的异步任务,只在列表静止的时候开启图片加载1.使用LruCache进行内存缓存。2.使用DiskLruCache进行硬盘缓存。3.实现一
29
2020
04

过度绘制、卡顿优化:

1.过度绘制:1.移除Window默认的Background:getWidow.setBackgroundDrawable(null);2.移除XML布局文件中非必需的Background3.减少布局嵌套(扁平化的一个体现,减少View数的深度,也就减少了View树的遍历时间,渲染的时候,前后期的工作,总是按View树结点来)4.在引入布局文件里面,最外层可以用merge替代LinearLayout,RelativeLayout,这样把子UI元素直接衔接在include位置5.工具:Hierar
29
2020
04

view绘制机制和加载过程,请详细说整个流程

1.ViewRootImpl会调用performTraversals(),其内部会调用performMeasure()、performLayout、performDraw()。2.performMeasure()会调用最外层的ViewGroup的measure()-->onMeasure(),ViewGroup的onMeasure()是抽象方法,但其提供了measureChildren(),这之中会遍历子View然后循环调用measureChild()这之中会用getChildMeasur
29
2020
04

Bitmap图像模式有哪几种,给出一张1080 * 1920的,ARGB 8888格式的占用内存是多大

Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。ARGB:指的
29
2020
04

图片优化

对图片本身进行操作。尽量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource来设置一张大图,因为这些方法在完成decode后, 最终都是通过java层的createBitmap来完成的,需要消耗更多内存.图片进行缩放的比例,SDK中建议其值是2的指数值,值越大会导致图片不清晰。不用的图片记得调用图片的recycle()方法
29
2020
04

Android UI适配

字体使用sp,使用dp,多使用match_parent,wrap_content,weight 图片资源,不同图片的的分辨率,放在相应的文件夹下可使用百分比代替。
29
2020
04

Android中的几种动画

帧动画:Drawable Animation,指通过指定每一帧的图片和播放时间,有序的进行播放而形成动画效果,比如想听的律动条。补间动画:View Animation(Tween Animation),指通过指定View的初始状态、变化时间、方式,通过一系列的算法去进行图形变换,从而形成动画效果,主要有Alpha、Scale、Translate、Rotate四种效果。注意:只是在视图层实现了动画效果,并没有真正改变View的属性,比如滑动列表,改变标题栏的透明度。属性动画:Property An
29
2020
04

HybridApp WebView和JS交互

Android与JS通过WebView互相调用方法,实际上是: Android去调用JS的代码通过WebView的loadUrl(),使用该方法比较简洁,方便。但是效率比较低,获取返回值比较困难。通过WebView的evaluateJavascript(),该方法效率高,但是4.4以上的版本才支持,4.4以下版本不支持。所以建议两者混合使用。 JS去调用Android的代码通过WebView的addJavascriptInterface()进行对象映射 ,该方法使用简单,仅将Android对象和
29
2020
04

解决ScrollView嵌套ListView和GridView冲突的方法

重写ListView的onMeasure方法,来自定义高度: 解决ScrollView嵌套ListView和GridView冲突的方法 重写ListView的onMeasure方法,来自定义高度:@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = MeasureSpec.makeMeasureSpec
29
2020
04

ScrollView是否可以和ListView混合使用?如何可以,说明混合使用的方式,如果不行,说明原因。

可以,计算整个ListView的高度,填充数据后重新设置ListView高度,重写onMeasure和onInterceptTouchEvent方法
29
2020
04

如何将一个Activity设置成窗口的样式?

第一种方法,在styles.xml文件中,可以新建如下的类似Dialog的style。<style name="Theme.FloatActivity" parent="android:style/Theme.Dialog"> </style>。第二种方法,在AndroidManifest.xml中在需要显示为窗口的Activity中添加如下属性: android:theme=“@style/Theme.FloatActivity”
29
2020
04

数据存储有哪些方式?

1.sharedpreferences 2.file 3.Sqlite 4.ContentProvide 5.网络存储
29
2020
04

保存Activity状态

onSaveInstanceState(Bundle)会在activity转入后台状态之前被调用,也就是onStop()方法之前,onPause方法之后被调用;
29
2020
04

Android 中如何捕获未捕获的异常

自 定 义 一 个 Application , 比 如 叫 MyApplication 继 承 Application 实 现 UncaughtExceptionHandler。 覆写 UncaughtExceptionHandler 的 onCreate 和 uncaughtException 方法。
29
2020
04

如何规避oom?

使用更加轻量的数据结构避免在Android里面使用Enum减小Bitmap对象的内存占用使用更小的图片复用系统自带的资源注意在ListView/GridView等出现大量重复子组件的图里面对ConvertView的复用Bitmap对象的复用避免在onDraw方法里面执行对象的创建避免对象的内存泄露(重点)考虑使用Application Context而不是Activity Context注意WebView的泄漏(重点)资源文件需要选择合适的文件夹进行存放谨慎使用static对象(重点)特别留意单
29
2020
04

Fragment与Fragment、Activity通信的方式

直接在一个Fragment中调用另外一个Fragment中的方法使用接口回调使用广播Fragment直接调用Activity中的public方法
29
2020
04

Android中touch事件的传递机制是怎样的?

1.Touch事件传递的相关API有dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent2.Touch事件相关的类有View、ViewGroup、Activity3.Touch事件会被封装成MotionEvent对象,该对象封装了手势按下、移动、松开等动作4.Touch事件通常从Activity#dispatchTouchEvent发出,只要没有被消费,会一直往下传递,到最底层的View5.如果Touch事件传递到的每个View都不消费事件,
29
2020
04

View,ViewGroup事件分发

Touch事件分发中只有两个主角:ViewGroup和View。ViewGroup包含onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent三个相关事件。View包含dispatchTouchEvent、onTouchEvent两个相关事件。其中ViewGroup又继承于View。ViewGroup和View组成了一个树状结构,根节点为Activity内部包含的一个ViwGroup。触摸事件由Action_Down、Action_Move、Ac
29
2020
04

View的绘制流程

自定义控件: 1、组合控件。这种自定义控件不需要我们自己绘制,而是使用原生控件组合成的新控件。如标题栏。 2、继承原有的控件。这种自定义控件在原生控件提供的方法外,可以自己添加一些方法。如制作圆角,圆形图片。 3、完全自定义控件:这个View上所展现的内容全部都是我们自己绘制出来的。比如说制作水波纹进度条。View的绘制流程:OnMeasure()——>OnLayout()——>OnDraw()第一步:OnMeasure():测量视图大小。从顶层父View到子View递归调用meas
29
2020
04

Service的onCreate回调在UI线程中吗?

Service生命周期的各个回调和其他的应用组件一样,是跑在主线程中,会影响到你的UI操作或者阻塞主线程中的其他事情。
29
2020
04

理解Activity,View,Window三者关系

这个问题真的很不好回答。所以这里先来个算是比较恰当的比喻来形容下它们的关系吧。Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图)LayoutInflater像剪刀,Xml配置像窗花图纸。 1:Activity构造的时候会初始化一个Window,准确的说是PhoneWindow。 2:这个PhoneWindow有一个“ViewRoot”,这个“ViewRoot”是一个View或者说ViewGroup,是最初始的根视图。 3:“ViewRoot”通过a
29
2020
04

谈谈你对Android中Context的理解?

Context是一个抽象基类。在翻译为上下文,也可以理解为环境,是提供一些程序的运行环境基础信息。Context下有两个子类,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能的实现类。而ContextWrapper又有三个直接的子类, ContextThemeWrapper、Service和Application。其中,ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity,所以Activity和Service以
29
2020
04

Android启动Service的两种方式是什么? 它们的适用情况是什么?

如果后台服务开始后基本可以独立运行的话,可以用startService。音乐播放器就可以这样用。它们会一直运行直到你调用 stopSelf或者stopService。你可以通过发送Intent或者接收Intent来与正在运行的后台服务通信,但大部分时间,你只是启动服务并让它独立运行。如果你需要与后台服务通过一个持续的连接来比较频繁地通信,建议使用bind()。比如你需要定位服务不停地把更新后的地理位置传给UI。Binder比Intent开发起来复杂一些,但如果真的需要,你也只能使用它。start
29
2020
04

Android的布局方式有哪些?

LinearLayout,RelativeLayout,TableLayout,FrameLayout,AbsoluteLayout,GridLayout
29
2020
04

在创建fragment时如何传递初始化参数?

Fragment初始化一定要提供默认构造函数。不能用构造函数传递参数!不要写带参数的构造函数。在Fragment里添加获取Fragment的newInstance函数,以后获取Fragment就使用这个函数,不要使用构造函数新建Fragment!使用setArgument和getArgument传递参数
29
2020
04

设备横竖屏切换的时候,接下来会发生什么?

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationCha
29
2020
04

静态的Broadcast 和动态的有什么区别

1.动态的比静态的安全2.静态在app启动的时候就初始化了 动态使用代码初始化3.静态需要配置 动态不需要4.生存期,静态广播的生存期可以比动态广播的长很多5.优先级动态广播的优先级比静态广播高6.静态不受页面生命周期的影响,即使退出了页面,也可以收到广播这种广播一般用于想开机自启动啊等等,由于这种注册的方式的广播是常驻型广播,所以会占用CPU的资源。7.动态叫非常驻型广播,收到生命周期的影响,退出页面后,就不会收到广播,我们通常运用在更新UI方面。这种注册方式优先级较高。最后需要解绑,否会会内
29
2020
04

Service的生命周期,两种启动方法,有什么区别

context.startService() ->onCreate()- >onStart()->Service running-->(如果调用context.stopService() )->onDestroy() ->Service shut down1.如果Service还没有运行,则调用onCreate()然后调用onStart();2.如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次
29
2020
04

Activity缓存方法

1.配置改变导致Activity被杀死,横屏变竖屏:在onStop之前会调用onSaveInstanceState()保存数据在重建Activity之后,会在onStart()之后调用onRestoreInstanceState(),并把保存下来的Bundle传给onCreate()和它会默认重建Activity当前的视图,我们可以在onCreate()中,回复自己的数据。2.内存不足杀掉Activity,优先级分别是:前台可见,可见非前台,后台。
29
2020
04

Activity的启动模式

standard:默认标准模式,每启动一个都会创建一个实例,singleTop:栈顶复用,如果在栈顶就调用onNewIntent复用,从onResume()开始singleTask:栈内复用,本栈内只要用该类型Activity就会将其顶部的activity出栈singleInstance:单例模式,除了3中特性,系统会单独给该Activity创建一个栈,
29
2020
04

Activity的启动过程(不要回答生命周期)

app启动的过程有两种情况,第一种是从桌面launcher上点击相应的应用图标,第二种是在activity中通过调用startActivity来启动一个新的activity。 我们创建一个新的项目,默认的根activity都是MainActivity,而所有的activity都是保存在堆栈中的,我们启动一个新的activity就会放在上一个activity上面,而我们从桌面点击应用图标的时候,由于launcher本身也是一个应用,当我们点击图标的时候,系统就会调用startActivitySat
29
2020
04

Activity生命周期?

onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy()
29
2020
04

启用属性,索引和存储的用途是什么?

enabled属性适用于各类ElasticSearch特定/创建领域,如index和size。用户提供的字段没有“已启用”属性。 存储意味着数据由Lucene存储,如果询问,将返回这些数据。存储字段不一定是可搜索的。默认情况下,字段不存储,但源文件是完整的。因为您希望使用默认值(这是有意义的),所以不要设置store属性 该指数属性用于搜索。索引属性只能用于搜索。只有索引域可以进行搜索。差异的原因是在分析期间对索引字段进行了转换,因此如果需要的话,您不能检索原始数据。
29
2020
04

什么是ElasticSearch中的编译器?

编译器用于将字符串分解为术语或标记流。一个简单的编译器可能会将字符串拆分为任何遇到空格或标点的地方。Elasticsearch有许多内置标记器,可用于构建自定义分析器。
29
2020
04

什么是ElasticSearch中的过滤器?

数据由Tokenizer处理后,在编制索引之前,过滤器会对其进行处理。  
29
2020
04

ElasticSearch中的副本是什么?

一个索引被分解成碎片以便于分发和扩展。副本是分片的副本。一个节点是一个属于一个集群的ElasticSearch的运行实例。一个集群由一个或多个共享相同集群名称的节点组成。
29
2020
04

ElasticSearch中的分析器是什么?

在ElasticSearch中索引数据时,数据由为索引定义的Analyzer在内部进行转换。 分析器由一个Tokenizer和零个或多个TokenFilter组成。编译器可以在一个或多个CharFilter之前。分析模块允许您在逻辑名称下注册分析器,然后可以在映射定义或某些API中引用它们。Elasticsearch附带了许多可以随时使用的预建分析器。或者,您可以组合内置的字符过滤器,编译器和过滤器器来创建自定义分析器。 
29
2020
04

ElasticSearch中的集群、节点、索引、文档、类型是什么?

群集是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入群集,则该节点只能是群集的一部分。节点是属于集群一部分的单个服务器。它存储数据并参与群集索引和搜索功能。索引就像关系数据库中的“数据库”。它有一个定义多种类型的映射。索引是逻辑名称空间,映射到一个或多个主分片,并且可以有零个或多个副本分片。 MySQL =>数据库 ElasticSea
29
2020
04

ElasticSearch是否有架构?

ElasticSearch可以有一个架构。架构是描述文档类型以及如何处理文档的不同字段的一个或多个字段的描述。Elasticsearch中的架构是一种映射,它描述了JSON文档中的字段及其数据类型,以及它们应该如何在Lucene索引中进行索引。因此,在Elasticsearch术语中,我们通常将此模式称为“映射”。 Elasticsearch具有架构灵活的能力,这意味着可以在不明确提供架构的情况下索引文档。如果未指定映射,则默认情况下,Elasticsearch会在索引期间检测文档中的
29
2020
04

ElasticSearch中的分片是什么?

在大多数环境中,每个节点都在单独的盒子或虚拟机上运行。 索引 - 在Elasticsearch中,索引是文档的集合。 分片 -因为Elasticsearch是一个分布式搜索引擎,所以索引通常被分割成分布在多个节点上的被称为分片的元素。  
29
2020
04

什么是ElasticSearch?

Elasticsearch是一个基于Lucene的搜索引擎。它提供了具有HTTP Web界面和无架构JSON文档的分布式,多租户能力的全文搜索引擎。Elasticsearch是用Java开发的,根据Apache许可条款作为开源发布。
29
2020
04

您可以在文档上执行哪些基本操作?

可以在文档中进行以下操作: a.使用ELASTICSEARCH索引文档内容。 b.使用ELASTICSEARCH抓取文档内容。 C.使用ELASTICSEARCH更新文档内容。 d.使用ELASTICSEARCH删除文档内容。 
29
2020
04

Elasticsearch中的倒排索引是什么?

倒排索引是搜索引擎的核心。搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索。倒排索引是一种像数据结构一样的散列图,可将用户从单词导向文档或网页。它是搜索引擎的核心。其主要目标是快速搜索从数百万文件中查找数据。 一般情况下,像下面的一样,在书中我们已经倒过来索引。根据这个词,我们可以找到这个词所在的页面。 请考虑以下列语句:javainuse是一个很好的网站 javainuse是很好的网站之一。 为了索引的目的,上述文本被标记为单独的术语,并且所有
29
2020
04

描述以下变量的区别:null,undefined或undeclared?

JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。但是,上面这样的区分,在实践中很快就被证明不可行。目前,null和undefined基本是同义的,只有一些细微的差别。null表示"没有对象",即该处不应该有值。典型用法是:用来初始化一个变量,这个变量可能被赋值为一个对象。用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个
29
2020
04

解释下为什么接下来这段代码不是IIFE(立即调用的函数表达式):function foo(){}();.

要做哪些改动使它变成IIFE?因为在解析器解析全局的function或者function内部function关键字的时候,默认是认为function声明,而不是function表达式,如果你不显示告诉编译器,它默认会声明成一个缺少名字的function,并且抛出一个语法错误信息,因为function声明需要一个名字。1 var foo = function() {2     // doSomeThing.3 };4 5 foo();
29
2020
04

什么是哈希表?

散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
29
2020
04

解释下原型继承的原理。

以下代码展示了JS引擎如何查找属性:1 function getProperty(obj,prop) {2     if (obj.hasOwnProperty(prop)) {3         return obj[prop];4     } else if (obj.__proto__!==null) {5         return getProperty(obj._
29
2020
04

解释下JavaScript中this是如何工作的。

this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。匿名函数或不处于任何对象中的函数指向window 。1.如果是call,apply,with,指定的this是谁,就是谁。2.普通的函数调用,函数被谁调用,this就是谁。
29
2020
04

解释下事件代理。

JavaScript事件代理则是一种简单的技巧,通过它你可以把事件处理器添加到一个父级元素上,这样就避免了把事件处理器添加到多个子级元素上。当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委托给父节点来触发处理函数。这主要得益于浏览器的事件冒泡机制。事件代理用到了两个在JavaSciprt事件中常被忽略的特性:事件冒泡以及目标元素。1 function getEventTarget(e) {2     e=e||window.event;3 &nb
29
2020
04

你目前在使用哪一套CSS框架,或者在产品线上使用过哪一套?(Bootstrap,PureCSS,Foundation等等)

如果有,请问是哪一套?如果可以,你如何改善CSS框架?请问你有使用过CSS Flexbox或者Grid specs吗?如果有,请问在性能和效率的方面你是怎么看的?
29
2020
04

请罗列出你所知道的display属性的全部值。

display属性的值列表如下:
29
2020
04

解释一下你对盒模型的理解,以及如何在CSS中告诉浏览器使用不同的盒模型来渲染你的布局。

关于盒模型请看文章CSS之布局与定位。请解释一下*{box-sizing:border-box;}的作用,并且说明使用它有什么好处?说到IE的bug,在IE6以前的版本中,IE对盒模型的解析出现一些问题,跟其它浏览器不同,将border与padding都包含在width之内。而另外一些浏览器则与它相反,是不包括border和padding的。在我们开发的过程中会发现,有时候,如果对页面中的大区域进行设置时,将border、padding计算到width和height之内,反而更灵活。但W3C的C
29
2020
04

解释下浏览器是如何判断元素是否匹配某个CSS选择器?

从后往前判断。浏览器先产生一个元素集合,这个集合往往由最后一个部分的索引产生(如果没有索引就是所有元素的集合)。然后向上匹配,如果不符合上一个部分,就把元素从集合中删除,直到真个选择器都匹配完,还在集合中的元素就匹配这个选择器了。举个例子,有选择器:1 body.ready#wrapper>.lol233先把所有class中有lol233的元素拿出来组成一个集合,然后上一层,对每一个集合中的元素,如果元素的parent id不为#wrapper则把元素从集合中删去。再向上,从这个元素的父元
29
2020
04

如果设计中使用了非标准的字体,你该如何去实现?

所谓的标准字体是多数机器上都会有的,或者即使没有也可以由默认字体替代的字体。方法:用图片代替web fonts在线字库,如Google Webfonts,Typekit等等;http://www.chinaz.com/free/2012/0815/269267.shtml;@font-face,Webfonts(字体服务例如:Google Webfonts,Typekit等等。)
29
2020
04

使用CSS预处理器的优缺点有哪些?

   LESS&SassLESS是受Sass启发而开发的工具,它列出了如下开发的理由:     “为什么要开发一个Sass的替代品呢?原因很简单:首先是语法。Sass的一个关键特性是缩进式的语法,这种语法可以产生柱式外观的代码。但是你需要花费时间学习一门新的语法以及重新构建你现在的样式表。LESS给CSS带来了很多特性,使得LESS能够和CSS无缝地紧密结合在一起。因此,你可以平滑地由CSS迁移到LESS,如果你只是对使用变量或者操作感兴
29
2020
04

在书写高效CSS时会有哪些问题需要考虑?

1.样式是:从右向左的解析一个选择器;2.ID最快,Universal最慢有四种类型的key selector,解析速度由快到慢依次是:ID、class、tag和universal ;3.不要tag-qualify(永远不要这样做ul#main-navigation{}ID已经是唯一的,不需要Tag来标识,这样做会让选择器变慢。);4.后代选择器最糟糕(换句话说,下面这个选择器是很低效的:html body ul li a{});5.想清楚你为什么这样写;6.CSS3的效率问题(CSS3选择器(
29
2020
04

如何优化网页的打印样式?

<link rel = "stylesheet" type = "text/css" media = "screen" href = "xxx.css"/>其中media指定的属性就是设备,显示器上就是screen,打印机则是print,电视是tv,投影仪是projection。打印样式示例如下:<link rel = "stylesheet" type = "text
29
2020
04

你熟悉SVG样式的书写吗?

SVG 意为可缩放矢量图形(Scalable Vector Graphics)。什么是SVG?SVG 指可伸缩矢量图形 (Scalable Vector Graphics)SVG 用来定义用于网络的基于矢量的图形SVG 使用 XML 格式定义图形SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失SVG 是万维网联盟的标准SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体书写示例如下:1 <?xml version="1.0" standalone
29
2020
04

你用过媒体查询,或针对移动端的布局/CSS吗?

媒体查询,就是响应式布局。通过不同的媒介类型和条件定义样式表规则。媒介查询让CSS可以更精确作用于不同的媒介类型和同一媒介的不同条件。语法结构及用法:@media 设备名 only (选取条件) not (选取条件) and(设备选取条件),设备二{sRules}。示例如下: 1 /* 当浏览器的可视区域小于980px */ 2 @media screen and (max-width: 980px) { 3 #wrap {width: 90%; margin:0
29
2020
04

你用过栅格系统吗?如果使用过,你最喜欢哪种?

比如:Bootstrap,流式栅格系统,http://960.gs/,栅格系统延续美学。
29
2020
04

如何视觉隐藏网页内容,只让它们在屏幕阅读器中可用?

display:none;的缺陷搜索引擎可能认为被隐藏的文字属于垃圾信息而被忽略屏幕阅读器(是为视觉上有障碍的人设计的读取屏幕内容的程序)会忽略被隐藏的文字。visibility:hidden;的缺陷这个大家应该比较熟悉就是隐藏的内容会占据他所应该占据物理空间3.overflow:hidden;一个比较合理的方法.texthidden{display:block;/*统一转化为块级元素*/overflow:hidden;width:0;height:0;}就像上面的一段CSS所展示的方法,将宽度
29
2020
04

讨论CSS hacks,条件引用或者其他。

各个浏览器都认识,这里给firefox用;\9所有的ie浏览器可识别;background-color:yellow\0;\0是留给ie8的+background-color:pink;+ie7定了;__专门留给神奇的ie6;:root#test{background-color:purple\9;}:root是给ie9的,@media all and(min-width:0px){#test{background-color:black\0;}}这个是老是跟ie抢着认\0的神奇的opera,必
29
2020
04

你最喜欢的图片替换方法是什么,你如何选择使用。

<h2><span图片丢这里></span>Hello World</h2>把span背景设成文字内容,这样又可以保证seo,也有图片的效果在上面。一般都是:alt,title,onerror。
29
2020
04

解释下CSS sprites,以及你要如何在页面或网站中使用它。

CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background-repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。
29
2020
04

列举不同的清除浮动的技巧,并指出它们各自适用的使用场景。

1.使用空标签清除浮动。这种方法是在所有浮动标签后面添加一个空标签定义css clear:both.弊端就是增加了无意义标签。2.使用overflow。给包含浮动元素的父标签添加css属性overflow:auto;zoom:1;zoom:1用于兼容IE6。3.使用after伪对象清除浮动。该方法只适用于非IE浏览器。具体写法可参照以下示例。使用中需注意以下几点。一、该方法中必须为需要清除浮动元素的伪对象中设置height:0,否则该元素会比实际高出若干像素;二、content属性是必须的,但其
29
2020
04

解释下浮动和它的工作原理。

关于浮动我们需要了解,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。要想使元素浮动,必须为元素设置一个宽度(width)。虽然浮动元素不是文档流之中,但是它浮动后所处的位置依然是在浮动之前的水平方向上。由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样,下面的元素填补原来的位置。有些元素会在浮动元素的下方,但是这些元素的内容并不一定会被浮动的元素所遮盖,对内联元素进行定位时,这些元素会考虑浮动元素的边界,会围绕着浮动元素放置。也可以把
29
2020
04

描述下“reset”CSS文件的作用和使用它的好处。

因为浏览器的品种很多,每个浏览器的默认样式也是不同的,所以定义一个css reset可以使各浏览器的默认样式统一。
29
2020
04

使用XHTML的局限有哪些?

XHTML 与HTML的区别为:XHTML 元素必须被正确地嵌套。XHTML 元素必须被关闭。标签名必须用小写字母。XHTML 文档必须拥有根元素。局限:所有的 XHTML 元素都必须被正确地嵌套,XHTML 必须拥有良好的结构,所有的标签必须小写,并且所有的 XHTML 元素必须被关闭。所有的 XHTML 文档必须拥有 DOCTYPE 声明,并且 html、head、title 和 body 元素必须存在。虽然代码更加的优雅,但缺少容错性,不利于快速开发。
29
2020
04

请描述一下cookies,sessionStorage和localStorage的区别?

sessionStorage和localStorage是HTML5 Web Storage API提供的,可以方便的在web请求之间保存数据。有了本地数据,就可以避免数据在浏览器和服务器间不必要地来回传递。sessionStorage、localStorage、cookie都是在浏览器端存储的数据,其中sessionStorage的概念很特别,引入了一个“浏览器窗口”的概念。sessionStorage是在同源的同窗口(或tab)中,始终存在的数据。也就是说只要这个浏览器窗口没有关闭,即使刷新页
29
2020
04

如果把HTML5看作做一个开放平台,那它的构建模块有哪些?

<nav>,<header>,<section>,<footer>等。
29
2020
04

如果网页内容需要支持多语言,你会怎么做?

下面这些问题需要考虑:应用字符集的选择,选择UTF-8编码语言书写习惯&导航结构数据库驱动型网站
29
2020
04

浏览器标准模式和怪异模式之间的区别是什么?

W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。IE盒子模型和标准W3C盒子模型:ie的width包括:padding\border。标准的width不包括
29
2020
04

doctype(文档类型)的作用是什么?你知道多少种文档类型?

此标签可告知浏览器文档使用哪种HTML或XHTML规范。该标签可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的HTML文档。HTML 4.01规定了三种文档类型:Strict、Transitional以及Frameset。XHTML 1.0规定了三种XML文档类型:Strict、Transitional以及Frameset。Standards(标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,而Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器
29
2020
04

什么是FOUC(无样式内容闪烁)?你如何来避免FOUC?

FOUC(Flash Of Unstyled Content)--文档样式闪烁<style type="text/css"media="all">@import"../fouc.css";</style>而引用CSS文件的@import就是造成这个问题的罪魁祸首。IE会先加载整个HTML文档的DOM,然后再去导入外部的CSS文件,因此,在页面DOM加载完成到CSS导入完成中间会有一段时间页面上的内容是没有样式的,
29
2020
04

请谈一下你对网页标准和标准制定机构重要性的理解。

w3c存在的意义就是让浏览器兼容性问题尽量小,首先是他们对浏览器开发者的约束,然后是对开发者的约束。
29
2020
04

如果今年你打算熟练掌握一项新技术,那会是什么?

nodejs,html5,css3,less等。
29
2020
04

你都使用哪些工具来测试代码的性能?

Profiler,JSPerf(http://jsperf.com/nexttick-vs-setzerotimeout-vs-settimeout),Dromaeo。
29
2020
04

请写一个简单的幻灯效果页面

如果不使用JS来完成,可以加分。(如:纯CSS实现的幻灯片效果)
29
2020
04

如果你参与到一个项目中,发现他们使用Tab来缩进代码,但是你喜欢空格,你会怎么做?

建议这个项目使用像EditorConfig(http://editorconfig.org/)之类的规范为了保持一致性,接受项目原有的风格直接使用VIM的retab命令
29
2020
04

请说出三种减少页面加载时间的方法。(加载时间指感知的时间或者实际加载时间)

1.优化图片2.图像格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高的地方)3.优化CSS(压缩合并css,如margin-top,margin-left...)4.网址后加斜杠(如www.campr.com/目录,会判断这个“目录是什么文件类型,或者是目录。)5.标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,如果图片很多,浏览器需要不断地调整页面。这不但影响速度,也影响浏览体验。当浏览器知道了高度和宽度参数后,即使图片暂时无法显示,页面上也会腾出图片
29
2020
04

为什么利用多个域名来提供网站资源会更有效?

1.CDN缓存更方便2.突破浏览器并发限制(一般每个域名建立的链接不超过6个)3.Cookieless,节省带宽,尤其是上行带宽一般比下行要慢4.对于UGC的内容和主站隔离,防止不必要的安全问题(上传js窃取主站cookie之类的)。正是这个原因要求用户内容的域名必须不是自己主站的子域名,而是一个完全独立的第三方域名。5.数据做了划分,甚至切到了不同的物理集群,通过子域名来分流比较省事。这个可能被用的不多。PS:关于Cookie的问题,带宽是次要的,安全隔离才是主要的。关于多域名,也不是越多越好
29
2020
04

你能描述一下渐进增强和优雅降级之间的不同吗?

优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效.渐进增强:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。
29
2020
04

线程与进程的区别

一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程
29
2020
04

说说你对语义化的理解?

1:去掉或样式丢失的时候能让页面呈现清晰的结构:html本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式,默认样式的目的也是为了更好的表达html的语义,可以说浏览器的默认样式和语义化的HTML结构是不可分割的。2.屏幕阅读器(如果访客有视障)会完全根据你的
29
2020
04

你如何对网站的文件和资源进行优化?

期待的解决方案包括:文件合并文件最小化/文件压缩使用CDN托管缓存的使用(多个域名来提供缓存)其他。
28
2020
04

如何通过引用传递变量?

卡python面试题class PassByReference:    def __init__(self):        self.variable = 'Original'        self.change(self.variable)        print(self.variable)    def cha
28
2020
04

对keep-alive 的了解?

keep-alive是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。在vue 2.1.0 版本之后,keep-alive新加入了两个属性: include(包含的组件缓存) 与 exclude(排除的组件不缓存,优先级大于include) 。使用方法<keep-alive include='include_components' exclude='exclude_components'>  <component&
28
2020
04

css只在当前组件起作用

答:在style标签中写入scoped即可 例如:<style scoped></style>
28
2020
04

v-if 和 v-show 区别

答:v-if按照条件是否渲染,v-show是display的block或none
28
2020
04

vue.js的两个核心是什么?

答:数据驱动、组件系统
28
2020
04

vue几种常用的指令

答:v-for 、 v-if 、v-bind、v-on、v-show、v-else
28
2020
04

vue常用的修饰符?

答:.prevent: 提交事件不再重载页面;.stop: 阻止单击事件冒泡;.self: 当事件发生在该元素本身而不是子元素的时候会触发;.capture: 事件侦听,事件发生的时候会调用
28
2020
04

v-on 可以绑定多个方法吗?

答:可以
28
2020
04

vue中 key 值的作用?

答:当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。key的作用主要是为了高效的更新虚拟DOM。
28
2020
04

什么是vue的计算属性?

答:在模板中放入太多的逻辑会让模板过重且难以维护,在需要对数据进行复杂处理,且可能多次使用的情况下,尽量采取计算属性的方式。好处:①使得数据处理结构清晰;②依赖于数据,数据更新,处理结果自动更新;③计算属性内部this指向vm实例;④在template调用时,直接写计算属性名即可;⑤常用的是getter方法,获取数据,也可以使用set方法改变数据;⑥相较于methods,不管依赖的数据变不变,methods都会重新计算,但是依赖数据不变的时候computed从缓存中获取,不会重新计算。
28
2020
04

vue等单页面应用及其优缺点

答:优点:Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,核心是一个响应的数据绑定系统。MVVM、数据驱动、组件化、轻量、简洁、高效、快速、模块友好。缺点:不支持低版本的浏览器,最低只支持到IE9;不利于SEO的优化(如果要支持SEO,建议通过服务端来进行渲染组件);第一次加载首页耗时相对长一些;不可以使用浏览器的导航按钮需要自行实现前进、后退。
28
2020
04

怎么定义 vue-router 的动态路由? 怎么获取传过来的值

答:在 router 目录下的 index.js 文件中,对 path 属性加上 /:id,使用 router 对象的 params.id 获取。
28
2020
04

Vue组件间的参数传递

1.父组件与子组件传值父组件传给子组件:子组件通过props方法接受数据;子组件传给父组件:$emit方法传递参数2.非父子组件间的数据传递,兄弟组件传值eventBus,就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。项目比较小时,用这个比较合适。(虽然也有不少人推荐直接用VUEX,具体来说看需求咯。技术只是手段,目的达到才是王道。)
28
2020
04

Vue实现数据双向绑定的原理:Object.defineProperty()

vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访
28
2020
04

DOM 渲染在 哪个周期中就已经完成?

答:DOM 渲染在 mounted 中就已经完成了。
28
2020
04

第一次页面加载会触发哪几个钩子?

答:会触发 下面这几个beforeCreate, created, beforeMount, mounted 。
28
2020
04

vue生命周期总共有几个阶段?

答:它可以总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后。
28
2020
04

vue生命周期的作用是什么?

答:它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。
28
2020
04

什么是vue生命周期?

答: Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期。
28
2020
04

Vue的生命周期

beforeCreate(创建前) 在数据观测和初始化事件还未开始created(创建后) 完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来beforeMount(载入前) 在挂载开始之前被调用,相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。mounted(载入后) 在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替
28
2020
04

对于MVVM的理解?

MVVM 是 Model-View-ViewModel 的缩写。Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。View 代表UI 组件,它负责将数据模型转化成UI 展现出来。ViewModel 监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View。在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双
28
2020
04

微服务的优点缺点?说下开发项目中遇到的坑?

优点:1.每个服务直接足够内聚,代码容易理解2.开发效率高,一个服务只做一件事,适合小团队开发3.松耦合,有功能意义的服务。4.可以用不同语言开发,面向接口编程。5.易于第三方集成6.微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面结合.7.可以灵活搭配,连接公共库/连接独立库缺点:1.分布式系统的责任性2.多服务运维难度加大。3.系统部署依赖,服务间通信成本,数据一致性,系统集成测试,性能监控。
28
2020
04

什么是springcloud?

Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序
28
2020
04

spring cloud 和dubbo区别?

1.服务调用方式 dubbo是RPC springcloud Rest Api2.注册中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper3.服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。
28
2020
04

REST 和RPC对比

1.RPC主要的缺陷是服务提供方和调用方式之间的依赖太强,需要对每一个微服务进行接口的定义,并通过持续继承发布,严格版本控制才不会出现冲突。2.REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只需要一个约定进行规范。
28
2020
04

你所知道的微服务技术栈?

维度(springcloud)服务开发:springboot spring springmvc服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond服务注册与发现:Eureka,Zookeeper服务调用:Rest RPC gRpc服务熔断器:Hystrix服务负载均衡:Ribbon Nginx服务接口调用:Fegin消息队列:Kafka Rabbitmq activemq服务配置中心管理:SpringCloudConfig服务路由(API网关)Zuul事件消息总线:Spr
28
2020
04

负载均衡的意义是什么?

在计算中,负载均衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载均衡旨在优化资源使用,最大吞吐量,最小响应时间并避免任何单一资源的过载。使用多个组件进行负载均衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务进程。
28
2020
04

微服务之间是如何独立通讯的?

1.远程调用,比如feign调用,直接通过远程过程调用来访问别的service。2.消息中间件
28
2020
04

springcloud如何实现服务的注册?

1.服务发布时,指定对应的服务名,将服务注册到 注册中心(eureka zookeeper)2.注册中心加@EnableEurekaServer,服务用@EnableDiscoveryClient,然后用ribbon或feign进行服务直接的调用发现。
28
2020
04

Eureka和Zookeeper区别

1.Eureka取CAP的AP,注重可用性,Zookeeper取CAP的CP注重一致性。2.Zookeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但选举期间不可用。3.eureka的自我保护机制,会导致一个结果就是不会再从注册列表移除因长时间没收到心跳而过期的服务。依然能接受新服务的注册和查询请求,但不会被同步到其他节点。不会服务瘫痪。4.Zookeeper有Leader和Follower角色,Eureka各个节点平等。5.Zookeeper采用过半数存活原则,Eureka采用自我保护机
28
2020
04

eureka自我保护机制是什么?

1.当Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式。
28
2020
04

什么是服务熔断?什么是服务降级?

服务直接的调用,比如在高并发情况下出现进程阻塞,导致当前线程不可用,慢慢的全部线程阻塞,导致服务器雪崩。服务熔断:相当于保险丝,出现某个异常,直接熔断整个服务,而不是一直等到服务超时。通过维护一个自己的线程池,当线程到达阈值的时候就启动服务降级,如果其他请求继续访问就直接返回fallback的默认值。
28
2020
04

什么是Ribbon?

ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。feign默认集成了ribbon。
28
2020
04

什么是feigin?它的优点是什么?

1.feign采用的是基于接口的注解2.feign整合了ribbon,具有负载均衡的能力3.整合了Hystrix,具有熔断的能力使用:1.添加pom依赖。2.启动类添加@EnableFeignClients3.定义一个接口@FeignClient(name=“xxx”)指定调用哪个服务
28
2020
04

Ribbon和Feign的区别?

1.Ribbon都是调用其他服务的,但方式不同。2.启动类注解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients3.服务指定的位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。4.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign需要将调用的方法定义成抽象方法即可。
28
2020
04

架构?

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理,配置服务的配置文件放在git仓库,方便开发人员随时改配置。
28
2020
04

什么是Spring Cloud Bus?

spring cloud bus 将分布式的节点用轻量的消息代理连接起来,它可以用于广播配置文件的更改或者服务直接的通讯,也可用于监控。如果修改了配置文件,发送一次请求,所有的客户端便会重新读取配置文件。使用:1.添加依赖2.配置rabbimq
28
2020
04

springcloud断路器作用?

当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)断路器有完全打开状态:一段时间内 达到一定的次数无法调用 并且多次监测没有恢复的迹象 断路器完全打开 那么下次请求就不会请求到该服务半开:短时间内 有恢复迹象 断路器会将部分请求发给该服务,正常调用时 断路器关闭关闭:当服务一直处于正常状态 能正常调用
28
2020
04

什么是SpringCloudConfig?

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。使用:1、添加pom依赖2、配置文件添加相关配置3、启动类添加注解@EnableConfigServer
28
2020
04

Spring Cloud Gateway?

Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,
27
2020
04

常见的HTTP相应状态码

200:请求被正常处理204:请求被受理但没有资源可以返回206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。301:永久性重定向302:临时重定向303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上304:发送附带条件的请求时,条件不满足时返回,与重定向无关307:临时重定向,与302类似,只是强制要求使用POST方法400:请求报文语法有误,服务器无法识
27
2020
04

HTTP1.1版本新特性

a、默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求b、管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应c、断点续传实际上就是利用HTTP消息头使用分块传输编码,将实体主体分块传输。
27
2020
04

HTTP优化方案

我下面就简要概括一下:TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。压缩:将文本数据进行压缩,减少带宽SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密
27
2020
04

在使用angularjs项目开发中 你使用过那些第三方的插件?

AngularUi ui-router oclazyload等等
27
2020
04

controller之间怎么通讯?

1.event这里可以有两种方式,一种是$scope.$emit,然后通过监听$rootScope的事件获取参数;另一种是$rootScope.$broadcast,通过监听$scope的事件获取参数。这两种方法在最新版本的Angular中已经没有性能区别了,主要就是事件发送的方向不同,可以按实际情况选择。2.service可以创建一个专用的事件Service,也可以按照业务逻辑切分,将数据存储在相应的Service中3.$rootScope这个方法可能会比较dirty一点,胜在方便,也就是把数
27
2020
04

angular 中的 $http

$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象。1.链式调用$http服务是只能接受一个参数的函数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容。这个函数返回一个promise对象,具有success和error两个方法。2.返回一个promise对象3.快捷的get请求4.响应对象传送门
27
2020
04

单页应用有哪些优缺点?

单页Web应用(single page web application,SPA),就是只有一张Web页面的应用。单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。 浏览器一开始会加载必需的HTML、CSS和JavaScript,所有的操作都在这张页面上完成,都由JavaScript来控制。因此,对单页应用来说模块化的开发和设计显得相当重要。速度:更好的用户体验,让用户在web app感受native app的速度和流畅,MVC:经典MVC开
27
2020
04

{ {now | 'yyyy-MM-dd'} } 这种表达式里面,竖线和后面的参数通过什么方式可以自定义?

app.filter('过滤器名称',function(){    return function(需要过滤的对象, 过滤器参数1, 过滤器参数2, ...){        //...做一些事情           return 处理后的对象;    }}); <p>{{now | date : 'yyyy-M
27
2020
04

ng-show/ng-hide 与 ng-if的区别?

我们都知道ng-show/ng-hide实际上是通过display来进行隐藏和显示的。而ng-if实际上控制dom节点的增删除来实现的。因此如果我们是根据不同的条件来进行dom节点的加载的话,那么ng-if的性能好过ng-show.
27
2020
04

解释下什么是$rootScrope以及和$scope的区别?

通俗的说$rootScrope 页面所有$scope的父亲。我们来看下如何产生$rootScope和$scope吧。step1:Angular解析ng-app然后在内存中创建$rootScope。step2:angular回继续解析,找到{{}}表达式,并解析成变量。step3:接着会解析带有ng-controller的div然后指向到某个controller函数。这个时候在这个controller函数变成一个$scope对象实例。
27
2020
04

表达式 {{yourModel}}是如何工作的?

它依赖于 $interpolation服务,在初始化页面html后,它会找到这些表达式,并且进行标记,于是每遇见一个{{}},则会设置一个$watch。而$interpolation会返回一个带有上下文参数的函数,最后该函数执行,则算是表达式$parse到那个作用域上。
27
2020
04

Angular中的digest周期是什么?

每个digest周期中,angular总会对比scope上model的值,一般digest周期都是自动触发的,我们也可以使用$apply进行手动触发。更深层次的研究,可以移步The Digest Loop and apply。
27
2020
04

如何取消 $timeout, 以及停止一个$watch()? 停止 $timeout我们可以用cancel:

var customTimeout = $timeout(function () {    // your code}, 1000); $timeout.cancel(customTimeout);停掉一个$watch:// .$watch() 会返回一个停止注册的函数function that we store to a variable  var deregisterWatchFn = $rootScope.$watch(‘someGloballyAv
27
2020
04

Angular Directive中restrict 中分别可以怎样设置?scope中@,=,&有什么区别?

restrict中可以分别设置:


A匹配属性

E匹配标签

C匹配class

M 匹配注释

当然你可以设置多个值比如AEC,进行多个匹配。


在scope中,@,=,&在进行值绑定时分别表示


@获取一个设置的字符串,它可以自己设置的也可以使用{{yourModel}}进行绑定的;

= 双向绑定,绑定scope上的一些属性;

& 用于执行父级scope上的一些表达式,常见我们设置一些需要执行的函数

angular.module('docsIsolationExample', [])  

.controller('Controller', ['$scope', function($scope) {

  $scope.alertName = function() {

      alert('directive scope &');

  }

}])

.directive('myCustomer', function() {

  return {

    restrict: 'E',

    scope: {

      clickHandle: '&'

    },

    template: '<button ng-click="testClick()">Click Me</button>',

    controller: function($scope) {

 

      $scope.testClick = function() {

        $scope.clickHandle();

 

      }  

    }

  };

});


27
2020
04

列出至少三种实现不同模块之间通信方式?

Serviceevents,指定绑定的事件使用 $rootScopecontroller之间直接使用$parent, $$childHead等directive 指定属性进行数据绑定
27
2020
04

有哪些措施可以改善Angular 性能

官方提倡的,关闭debug,$compileProvidermyApp.config(function ($compileProvider) {    $compileProvider.debugInfoEnabled(false);});使用一次绑定表达式即{{::yourModel}}减少watcher数量在无限滚动加载中避免使用ng-repeat,关于解决方法可以参考这篇文章使用性能测试的小工具去挖掘你的angular性能问题,我们可以使用简单的console.time
27
2020
04

你认为在Angular中使用jQuery好么?

这是一个开放性的问题,尽管网上会有很多这样的争论,但是普遍还是认为这并不是一个特别好的尝试。其实当我们学习Angular的时候,我们应该做到从0去接受angular的思想,数据绑定,使用angular自带的一些api,合理的路由组织和,写相关指令和服务等等。angular自带了很多api可以完全替代掉jQuery中常用的api,我们可以使用angular.element,$http,$timeout,ng-init等。我们不妨再换个角度,如果业务需求,而对于一个新人(比较熟悉jQuery)的话,
27
2020
04

如何进行angular的单元测试

我们可以使用karam+jasmine 进行单元测试,我们通过ngMock引入angular app然后自行添加我们的测试用例。 一段简单的测试代码:describe('calculator', function () {   beforeEach(module('calculatorApp'));   var $controller;   beforeEach(inject(function(_$con
27
2020
04

angular的数据绑定采用什么机制?详述原理

angularjs的双向数据绑定采用脏检查(dirty-checking)机制。ng只有在指定事件触发后,才进入 $digest cycle : - DOM事件,譬如用户输入文本,点击按钮等。( ng-click ) - XHR响应事件 ( $http ) - 浏览器Location变更事件 ( $location ) - Timer事件( $timeout , $interval ) - 执行 $digest() 或 $apply()
27
2020
04

依赖注入(DI)

让我们可以不用自己实例化就能创建依赖对象的方法. 简单的来说, 依赖是以注入的方式传递的. 在Web应用中, Angular让我们可以通过DI来创建像Controllers和Directives这样的对象. 我们还可以创建自己的依赖对象, 当我们要实例化它们时, Angular能自动实现注入.
27
2020
04

compile和link的区别: 看到一个比较6的答案。性能力(性能和能力)

编译的时候,compile转换dom,碰到绑定监听器的地方就先存着,有几个存几个,到最后汇总成一个link函数,一并执行,提升了性能。function compile(tElement, tAttrs, transclude) { ... }tElement为编译前的elementfunction link(scope, iElement, iAttrs, controller) { ... }  iElement为编译后的element,已经与作用域关联起来,所以可以数据绑定如果指令
27
2020
04

$apply()和 $digest()的区别

安全性:$apply()可以接收一个参数作为function(),这个 function 会被包装到一个 try … catch 块中,所以一旦有异常发生,该异常会被 $exceptionHandler service 处理。$apply会使ng进入 $digest cycle , 并从$rootScope开始遍历(深度优先)检查数据变更。$digest仅会检查该scope和它的子scope,当你确定当前操作仅影响它们时,用$digest可以稍微提升性能。
27
2020
04

两个平级界面块 a 和 b,如果 a 中触发一个事件,有哪些方式能让 b 知道?详述原理

这个问题换一种说法就是,如何在平级界面模块间进行通信。有两种方法,一种是共用服务,一种是基于事件。共用服务在 Angular 中,通过 factory 可以生成一个单例对象,在需要通信的模块 a 和 b 中注入这个对象即可。基于事件这个又分两种方式第一种是借助父 controller。在子 controller 中向父 controller 触发( $emit )一个事件,然后在父 controller 中监听( $on )事件,再广播( $broadcast )给子 controller ,这
27
2020
04

angular 的数据绑定采用什么机制?详述原理

脏检查机制。双向数据绑定是 AngularJS 的核心机制之一。当 view 中有任何数据变化时,会更新到 model ,当 model 中数据有变化时,view 也会同步更新,显然,这需要一个监控。原理就是,Angular 在 scope 模型上设置了一个 监听队列,用来监听数据变化并更新 view 。每次绑定一个东西到 view 上时 AngularJS 就会往 $watch 队列里插入一条 $watch ,用来检测它监视的 model 里是否有变化的东西。当浏览器接收到可以被 angula
27
2020
04

ORM的实现原理?

概念: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。详细介绍: 让我们从O/R开始。字母O起源于”对象”(Object),而R则来自于”关系”(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。 当你开发一个应用程
27
2020
04

Flask框架默认session处理机制?

Flask的默认session利用了Werkzeug的SecureCookie,把信息做序列化(pickle)后编码(base64),放到cookie里了。过期时间是通过cookie的过期时间实现的。为了防止cookie内容被篡改,session会自动打上一个叫session的hash串,这个串是经过session内容、SECRET_KEY计算出来的,看得出,这种设计虽然不能保证session里的内容不泄露,但至少防止了不被篡改
27
2020
04

wtforms组件的作用?

WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。
27
2020
04

Flask中多app应用是怎么完成?

请求进来时,可以根据URL的不同,交给不同的APP处理
27
2020
04

简述Flask上下文管理流程?

每次有请求过来的时候,flask 会先创建当前线程或者进程需要处理的两个重要上下文对象,把它们保存到隔离的栈里面,这样视图函数进行处理的时候就能直接从栈上获取这些信息。
27
2020
04

列举使用过的Flask第三方组件?

flask_bootstrapflask-WTFflask_sqlalchemy
27
2020
04

Flask蓝图的作用?

蓝图Blueprint实现模块化的应用 - book_bp = Blueprint('book', __name__)创建蓝图对象 - 蓝图中使用路由@book_bp.route('url') - 在另一.py文件里导入和注册蓝图from book import book_bp app.register_blueprint(book_bp)作用将不同的功能模块化构建大型应用优化项目结构增强可读性,易于维护(跟Django的view功能
27
2020
04

Flask框架依赖组件?

Route(路由)templates(模板)Models(orm模型)blueprint(蓝图)Jinja2模板引擎
27
2020
04

什么是wsgi?

WSGI(Web Server Gateway Interface,Web 服务器网关接口)则是Python语言中1所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。Web Server接收H
27
2020
04

列举Http请求中常见的请求头?

User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。Cookie:这是最重要的请求头信息之一Content-Type:请求类型
27
2020
04

列举Http请求中的状态码?

404 请求的url地址不存在503 访问限制有权限200 访问成功302 重定向
27
2020
04

列举Http请求中常见的请求方式?

GET / POST/DELETE
27
2020
04

解释Python Flask中的数据库连接?

python中的数据库连接有两种方式在脚本中以用第三方库正常连接,用sql语句正常操作数据库,如mysql关系型数据库的pymsql库用ORM来进行数据库连接,flask中典型的flask_sqlalchemy,已面向对象的方式进行数据库的连接与操作
27
2020
04

Flask是一个MVC模型吗?如果是,可以示例一下吗? flask是一个典型的MVC框架 MVC框架,图形理解 flask项目中的MVC理解 7,

flask是一个典型的MVC框架MVC框架,图形理解 flask项目中的MVC理解 
27
2020
04

如何在Flask中访问会话?

会话(seesion)会话数据存储在服务器上。 会话是客户端登录到服务器并注销的时间间隔。 需要在此会话中进行的数据存储在服务器上的临时目录中。from flask import session导入会话对象session['name'] = 'admin'给会话添加变量session.pop('username', None)删除会话的变量
27
2020
04

Flask脚本的常用方式是什么?

在shell中运行脚本文件在python编译器中run
27
2020
04

Flask-WTF是什么,有什么特点?

Flask-wtf是一个用于表单处理,校验并提供csrf验证的功能的扩展库Flask-wtf能把正表单免受CSRF<跨站请求伪造>的攻击 eg:form.html<form action="{{ url_for('wtf_form') }}" method='post'>    {{ form.csrf_token }} #进入csrf验证    <p>{{
27
2020
04

Django和Flask有什么区别?

Flask轻量级web框架,默认依赖两个外部库:jinja2和Werkzeug WSGI工具适用于做小型网站以及web服务的API,开发大型网站无压力,但架构需要自己设计与关系型数据库的结合不弱于Django,而与非关系型数据库的结合远远优于DjangoDjango重量级web框架,功能齐全,提供一站式解决的思路,能让开发者不用在选择上花费大量时间。自带ORM(Object-Relational Mapping 对象关系映射)和模板引擎,支持jinja等非官方模板引擎。自带ORM使Django和
26
2020
04

什么是Flask,有什么优点?

概念解释Flask是一个Web框架,就是提供一个工具,库和技术来允许你构建一个Web应用程序。这个Web应用程序可以是一些Web页面,博客,wiki,基于Web的日里应用或商业网站。优点Flask属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖外部库的框架。 - 框架很轻量 - 更新时依赖小 - 专注于安全方面的bugFlask的依赖Werkzeug 一个WSGI工具包(web服务网关接口(Python Web Server Gatew
26
2020
04

工作当中会和后台交互吗? 那你能说说封装好的 ajax里的几个参数吗 ?

url: 发送请求的地址。type: 请求方式(post或get)默认为get。async: 同步异步请求,默认true所有请求均为异步请求。timeout : 超时时间设置,单位毫秒data:要求为Object或String类型的参数,发送到服务器的数据cache:默认为true(当dataType为script时,默认为false), 设置为false将不会从浏览器缓存中加载请求信息。dataType: 预期服务器返回的数据类型。可用的类型如下:xml:返回XML文档,可用JQuery处理。
26
2020
04

json数据 如果怎么处理 他的格式 你以前工作中有没有固定格式 如果我发送一个请求 删除数据里的一条数据 我怎么知道删除成功了 或者说 删除后 会在哪里显示

JSON.parse() 转换为JSON对象,根据数据进行解析,放到页面中。格式:{} 与 [] 结合拼接的JSON串发送请求删除数据,后台会返回处理的结果,前台根据返回的结果判断是否成功,然后处理页面元素。
26
2020
04

有没有遇到过这种情况 在ie浏览器中 后台图片数据已经改变 但是客户端没有发生改变 该怎么处理? 他提示说浏览器的缓存

JQuery.ajax() 方法,设置cache为false,就不会从浏览器缓存中加载请求,或者利用post方法,请求数据,不会缓存,每次都是重新请求数据
26
2020
04

选项卡的实现思路

鼠标悬浮时间,调用方法,传入this,对所有的选项卡内容部分隐藏操作,对this的进行显示操作,控制display
26
2020
04

级联 的实现思路

一般地区数据都是利用二维数组存储,从后台获取到以后存储起来,根据第一个下拉框的选项,找到对应的二维数组数据,循环new Option() add进下拉框
26
2020
04

轮播图的实现思路

第一种:把图片名称按顺序取好名字,利用定时器,每隔多少秒,更换图片的路径第二种:利用无缝滚动的技术,把图片都放入页面中,定时器进行scroll滚动,判断滚动距离取余(%) 图片宽度等于0,暂停定时器,多少秒后再开启定时器。
26
2020
04

说说你理解中的bootstrap

Bootstrap是基于HTML5和CSS3开发的,它在jQuery的基础上进行了更为个性化和人性化的完善,只需要给标签起上响应的Class名称,就可以形成一套Bootstrap自己独有的网站风格,并兼容大部分jQuery插件。
26
2020
04

angularjs和JQ的区别

JQ 先获取再使用。Angularjs 直接使用
26
2020
04

JQmobile和JQ的区别

jQuery Mobile 是创建移动 web 应用程序的框架。jQuery Mobile 适用于所有流行的智能手机和平板电脑。jQuery Mobile 使用 HTML5 和 CSS3 通过尽可能少的脚本对页面进行布局(1) jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。  (2) jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等。  (3) jQuery本身注重于后
26
2020
04

你工作当中用过那些库?

jQuery
26
2020
04

(1)冒泡排序,60秒倒计时,(2)页面加载更多li时怎么处理后台反回的json数据

1.双重循环,从第一位开始判断与后面每一位的大小,如果符合条件利用下面的原理换位置c = a;a = b;b = c;2.利用JSON.parse() 获得相应的JSON对象,循环添加li,数据放进去。
26
2020
04

全选的实现思路

点击全选复选框时,判断checked是true还是false,是true证明全都选中,获取到下面所有的对应的复选框,把checked改成true,否则改成false。
26
2020
04

有一个输入框,只允许输入数字或字母,如果输入不合法则将输入框的边框变为红色,写代码

var reg = /1+$/;if(!reg.text(输入框取出的value)){input.style.border = “red”;};
26
2020
04

有一个数组a=[1,2,3],如果数字a中包含1,则将数组内容复制一遍变为[1,2,3,1,2,3],写代码

for(var i = 0 ;i<a.length;i++){if(a[i] ==1){a.concat(a);break;}}
26
2020
04

写一个函数,用于生产随机密码,传入的参数为密码的长度,返回生产的随机密码,要求生成的随机密码必须含有大写字母、小写字母和数字

var padArr = [“a”,“b”,“c”,“d”,“e”,“f”,“g”,“h”,“i”,“j”,“k”,“l”,“m”,“n”,“o”,“p”,“q”,“r”,“s”,“t”,“u”,“v”,“w”,“x”,“y”,“z”,“A”,“B”,“C”,“D”,“E”,“F”,“G”,“H”,“I”,“J”,“K”,“L”,“M”,“N”,“O”,“P”,“Q”,“R”,“S”,“T”,“U”,“V”,“W”,“X”,“Y”,“Z”,“0”,“1”,“2”,“3”,“4”,“5”,“6”,
26
2020
04

点击按钮向后台发起请求,将返回的数据直接输出,如果3秒内没有获得返回的数据则显示“请求超时,请重新提交”,写代码

var ajaxTimeoutTest = $.ajax({  url:’’, //请求的URL  timeout : 1000, //超时时间设置,单位毫秒  type : ‘get’, //请求方式,get或post  data :{}, //请求所传参数,json格式  dataType:‘json’,//返回的数据格式  success:function(data){ //请求成功的回调函数    alert(“成功”);  },  complete : function(XMLHttp
26
2020
04

ajax的四部:

var xmlhttp = new XMLHttpRequest();xmlhttp.open(“post||get”,“URL”,true||false);xmlhttp.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”);xmlhttp.onreadystatechange = callBack;xmlhttp.send(null);
26
2020
04

ajax接受到的数据类型是什么?

StringJSON串JSON对象
26
2020
04

ajax接受到的数据如何处理?

JSON对象直接循环使用JSON串转JSON使用String直接使用
26
2020
04

哪些地方需要ajax,哪些地方不需要,ajax的优点是什么,缺点是什么?

页面不进行跳转刷新的时候,异步处理数据的时候,表单自动补全功能----使用Ajax,提交后不再使用原页面,可以进行跳转刷新的,查询之类的功能,可以不用Ajax优点:<1>.无刷新更新数据。AJAX最大优点就是能在不刷新整个页面的前提下与服务器通信维护数据。这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息,减少用户等待时间,带来非常好的用户体验。<2>.异步与服务器通信。AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的
26
2020
04

你对于跨域请求了解多少?

同源策略规定在访问时如果域名,协议,端口与发起请求的地方不一致时,就属于跨域请求,这种时候,需要使用一些跨域请求的技术,一:利用JQuery的方法,使用JSONP模式访问,dataType:‘jsonp’并且再url后传入callback=?JQuery会生成随机回调函数名称,或者你自己起名字。后台会获取callback的值,连接上() 把数据放入() 中,返回页面,相当于调用函数function名(data)。二:使用js标签加载方式利用script标签 src写想要请求的URL,地址后面连接
26
2020
04

前端常规开发优化策略?

1.  请减少HTTP请求2.  请正确理解 Repaint 和 Reflow3.  请减少对DOM的操作4.  使用JSON格式来进行数据交换5.  高效使用HTML标签和CSS样式6.  使用CDN加速(内容分发网络)7.  将CSS和JS放到外部文件中引用,CSS放头,JS放尾8.  精简CSS和JS文件(压缩)9.  压缩图片和使用图片Sprite技术10.  注意控制Cookie大小和污染
26
2020
04

为什么异步加载JS文件?加载方式?

平时常用的引入JS方式,是同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,也就是说,浏览器在下载或执行该js代码块时,后面的标签不会被解析。异步加载(async)JS文件,允许页面内容异步加载,仅适用于外部脚本。延迟加载(defer) 属性规定是否对脚本执行进行延迟,直到页面加载为止。
26
2020
04

如果对一个js对象进行深度拷贝?

function objCopy(obj){var copyObj = {};for(var key in obj){copyObj[key] = typeof obj[key] === ‘object’? objCopy(obj[key]):obj[key]}}
26
2020
04

JS中有哪些数据类型?

number boolean string underfind nullobject function array
26
2020
04

ajax交换模型?同步异步的区别?

触发事件 调用函数创建XMlHttpRequest 对象open连接,send发送后台服务器后台接收前端数据,根据业务需求访问数据库进行增删改查数据库返回后台程序所需要的数据后台拿到数据库数据,进行合理的处理,比如JSON串,返回给前端前端接收到后台的响应数据,进行解析,根据业务需求动态操作页面元素
26
2020
04

如何添加HTML事件,三种。

1.直接在html标签的属性上添加div2. 用dom的on...方法添加 document.getElementById('div').onclick = function () {alert('div')}; 3. 用事件监听addEventListener或attachEvent(IE)添加 document.getElementById('div').addEventListener('click', functi
26
2020
04

JS面向对象中继承的实现方式?

简单继承:function A(x){  this.x=x;}function B(x,y){  this.tmpObj=A;  this.tmpObj(x);  delete this.tmpObj;  this.y=y;}完美继承:function AA(x){this.x = x;}AA.prototype.xxx = 2;function Obj(){AA.call(this,22);this.cc = 11;this.constructor = arguments.callee;}Ob
26
2020
04

编写一个方法,判断字符串是否是这样的组成,第一个必须是字母,最后一个必须是数字。

function checkStr(str){var diyige = str.subStr(0,1);var dierge = str.subStr(str.length-1,1);var reg = /2$/if(reg.test(diyige) && !isNAN(dierge)){//第一个是字母,最后一个是数字}}
26
2020
04

如何隐藏一个DOM元素?

Object.style.dispaly = “none”; || Object.style.visibility = “hidden”;
26
2020
04

document.write,innerHTML和innertext区别是什么?

document.write只能重绘整个页面innerHTML可以重绘页面的一部分(包含标签+文字)innertext可以重绘页面的一部分(只包含文字)
26
2020
04

字符串abcdefg把de换成12,b后面接le,写出JS。

var str = “abcdefg”;str = str.replace(“de”,”12”);str = str.replace(“b”,”b1e”);或者var str = “abcdefg”;str = str.split(“de”,”12”);var str1 = str.subString(0,str.indexOf(‘b’)+1);var str2 = str.subString(str.indexOf(‘b’)+1);str = str1+”1e”+str2;
26
2020
04

判断每个字符出现的次数:hello,最后显示: h:1,e:1,l:2,o:1.

var str = “hello”;var o = [];for(var i = 0 ; i<str.length;i++){if(str.indexOf(str[i]) == i){o[str[i]] = str.split(str[i]).length-1;}}console.log(o);
26
2020
04

IE浏览器兼容性,你了解哪些,简单举例子。

addEventListener() || attachEvent()
26
2020
04

如何实现跨域?具体怎么实现?

第一种:JSONP,利用传递方法名的方式,告诉后台前端方法名是什么,后台取到后,在名称后面拼接(),把数据(DATA)放到小括号中,返回前端,相当于返回:方法名(data)到前端后就直接调用这个方法了。$.get(“ULR?callback=?”,function(data){console.log(data);})第二种:前端正常Ajax访问,后台开启同源策略限制!“Access-Control-Allow-Origin”,”*”
26
2020
04

什么是闭包?

简单理解成:定义在一个函数内部的函数闭包本质:将函数内部和函数外部连接起来的一座桥梁最大用处:1、可以读取函数内部变量2、就是让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在
26
2020
04

在上一家公司的要上线作品的具体流程是什么?

前后台项目整合,测试,上线
26
2020
04

手机端和PC端有什么区别,需要注意哪些方面?

本质上没有什么太大的区别,需要注意一些浏览器的兼容问题。
26
2020
04

用JQ完整的写出AJAX与后台交互的方法。

$.get(“url”,function(data){});$.post(“url”,{data},function(data){});$.ajax({url:””,………});
26
2020
04

JSP的9个内置对象和4个作用域?

(1)9 个内置对象: 1 request:封装客户端的请求,其中包含来自 GET 或 POST 请求的参数; 2 application:封装服务器运行环境的对象; 3 response:封装服务器对客户端的响应;4 session:封装用户会话的对象; 5 page:JSP 页面本身(相当于 Java 程序中的 this);6 config:Web 应用的配置对象; 7 exception:封装页面抛出异常的对象;8 pageContext:
26
2020
04

get请求和post请求的区别?

GET:1:从服务器上获取数据,一般不能使用在写操作接口2:由URL所限制,GET方式传输的数据大小有所限制,传送的数据量不超过2KB3:请求的数据会附加在URL之后,以?分隔URL和传输数据,多个参数用&连接4:安全性差POST:1:向服务器提交数据,一般处理写业务2:POST方式传送的数据量比较大,一般被默认为没有限制3:安全性高4:请的求的数据内容放置在HTML HEADER中
26
2020
04

请求转发(forward)和重定向(redirect)的区别?

1:效率上转发(forward) > 重定向(redirect)2:显示上重定向(redirect):显示新的URL转发(forward):地址栏不变3:数据上转发(forward):可以共享request里面的数据重定向(redirect):不能4:请求次数重定向(redirect)是两次转发(forward)是一次
26
2020
04

如何现实servlet的单线程模式?

<%@ page isThreadSafe="false" %>
26
2020
04

简述Servlet生命周期

1. init() 初始化2. service() 处理客户端请求3. destroy() 销毁方法
26
2020
04

Servlet和JSP的区别?

1. Servlet是一个运行在服务器上的Java类,依靠服务器支持向浏览器传输数据2 .JSP本质上是Servlet的一种简易形式,可以简化页面的生成3 .Servlet的应用逻辑在Java文件中,并且完全从HTML分离而来,JSP则是Java和HTML组合成一个扩展名为.jsp文件4 .JSP侧重于视图,而Servlet侧重于控制逻辑,在MVC架构模式中,JSP适合充当视图View,Servlet适合充当控制器Controller
26
2020
04

Netty 中有那种重要组件?

Channel:Netty 网络操作抽象类,它除了包括基本的 I/O 操作,如 bind、connect、read、write 等。EventLoop:主要是配合 Channel 处理 I/O 操作,用来处理连接的生命周期中所发生的事情。ChannelFuture:Netty 框架中所有的 I/O 操作都为异步的,因此我们需要 ChannelFuture 的 addListener()注册一个 ChannelFutureListener 监听事件,当操作执行成功或者失败时,监听就会自动触发返回结
26
2020
04

默认情况 Netty 起多少线程?何时启动?

Netty 默认是 CPU 处理器数的两倍,bind 完之后启动。
26
2020
04

四种类型的znode

1.持久化节点2.临时节点3.持久化顺序节点4.临时顺序节点
26
2020
04

Zookeeper通知机制

ZooKeeper的watcher机制,当ZNode的发生节点删除添加的操作或者节点内容发生改变,子节点的操作等,监听的Client会收到通知,然后我们可以在程序中进行自己进行处理
26
2020
04

应用场景

1、命名服务2、配置管理3、集群管理4、分布式锁5、队列管理
26
2020
04

命名服务

命名服务是指通过指定的名字来获取资源或者服务的地址,利用zk创建一个全局的路径,即是唯一的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。也就是我们常说的注册中心,进行服务的发布与消费,通过ZooKeeper协议进行服务的注册,将地址作为内容放到临时结点上,然后消费者可以通过ZooKeeper暴露出来的地址访问指定的服务名称获得服务的地址,然后服务间进行通信即可,与注册中心就无关了,一旦地址发生修改,ZooKeeper也会通过Watcher机制通知消
26
2020
04

集群管理

所谓集群管理无在乎两点:是否有机器退出和加入、选举master。对于第一点,所有机器约定在父目录下创建临时目录节点,然后监听父目录节点的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper的连接断开,其所创建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于是,所有人都知道:它上船了。新机器加入也是类似,所有机器收到通知:新兄弟目录加入,highcount又有了,对于第二点,我们稍微改变一下,所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为master就好。
26
2020
04

统一配置管理

程序分布式的部署在不同的机器上,将程序的配置信息放在zk的znode下,当有配置发生改变时,也就是znode发生变化时,可以通过改变zk中某个目录节点的内容,利用watcher通知给各个客户端,从而更改配置。将所有的配置文件都放在一个父节点下面,创建一个持久化节点,程序中只需要读取各自的配置文件信息即可,同时监听配置节点内容的修改,一旦内容修改就重启服务等系列的操作,实现了统一配置文件的处理
26
2020
04

分布式锁

分为两种1.保持独占锁在业务逻辑之前,每次都去尝试创建一个临时节点,谁创建到了这个临时节点,谁就拿到了锁,进行相应的业务逻辑操作,在逻辑操作结束之后对节点进行销毁也就是释放锁即可’2.顺序执行锁在业务逻辑之前,都在一个已经存在的节点下面创建一个临时顺序节点,保证每次都是顺序编号最小的节点进行业务逻辑操作,当逻辑操作结束后,删除该节点,然后继续是顺序编号最小的节点进行业务逻辑操作,同样可以保证每次都是只有一个节点也就是一个线程在进行逻辑操作
26
2020
04

获得分布式锁的流程

在获取分布式锁的时候在locker节点下创建临时顺序节点,释放锁的时候删除该临时节点。客户端调用createNode方法在locker下创建临时顺序节点,然后调用getChildren(“locker”)来获取locker下面的所有子节点,注意此时不用设置任何Watcher。客户端获取到所有的子节点path之后,如果发现自己创建的节点在所有创建的子节点序号最小,那么就认为该客户端获取到了锁。如果发现自己创建的节点并非locker所有子节点中最小的,说明自己还没有获取到锁,此时客户端需要找到比自己
26
2020
04

zookeeper是如何保证事务的顺序一致性的?

两段协议,首先会向其他的server发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行。
26
2020
04

Zookeeper队列管理(文件系统、通知机制)

两种类型的队列:1、同步队列,当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达。2、队列按照 FIFO 方式进行入队和出队操作。第一类,在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。第二类,和分布式锁服务中的控制时序场景基本原理一致,入列有编号,出列按编号。在特定的目录下创建PERSISTENT_SEQUENTIAL节点,创建成功时Watcher通知等待的队列,队列删除序列号最小的节点用以消费。此场景下Zookeeper的znode用于消息存储,znode存储
26
2020
04

Zookeeper数据复制

Zookeeper作为一个集群提供一致的数据服务,自然,它要在所有机器间做数据复制。数据复制的好处:1、容错:一个节点出错,不致于让整个系统停止工作,别的节点可以接管它的工作;2、提高系统的扩展能力 :把负载分布到多个节点上,或者增加节点来提高系统的负载能力;3、提高性能:让客户端本地访问就近的节点,提高用户访问速度。从客户端读写访问的透明度来看,数据复制集群系统分下面两种:1、写主(WriteMaster) :对数据的修改提交给指定的节点。读无此限制,可以读取任何一个节点。这种情况下客户端需要
26
2020
04

Zookeeper工作原理

Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。此时系统的不可用的,所以ZooKeeper采用的是CP原则
26
2020
04

Zookeeper 下 Server工作状态

每个Server在工作过程中有三种状态:looking:当前Server不知道leader是谁,正在搜寻leading:当前Server即为选举出来的leaderfollowing:leader已经选举出来,当前Server与之同步
26
2020
04

zookeeper负载均衡和nginx负载均衡区别

zookeeper不存在单点问题,zab机制保证单点故障可重新选举一个leader只负责服务的注册与发现,不负责转发,减少一次数据交换(消费方与服务方直接通信)需要自己实现相应的负载均衡算法nginx存在单点问题,单点负载高数据量大,需要通过KeepAlived+LVS备机实现高可用每次负载,都充当一次中间人转发角色,增加网络负载量(消费方与服务方间接通信)自带负载均衡算法
26
2020
04

zk节点宕机如何处理?

Zookeeper本身也是集群,推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。如果是一个Follower宕机,还有2台服务器提供访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;如果是一个Leader宕机,Zookeeper会选举出新的Leader。ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。
26
2020
04

机器中为什么会有leader?

在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader选举。
26
2020
04

Zookeeper同步流程

1、Leader等待server连接;2、Follower连接leader,将最大的zxid发送给leader;3、Leader根据follower的zxid确定同步点;4、完成同步后通知follower 已经成为uptodate状态;5、Follower收到uptodate消息后,又可以重新接受client的请求进行服务了。
25
2020
04

网站分类L

<li class="li-cate"><a href="http://haodro.com/category-1.html">分类</a><ul class="ul-subcates"><li class="li-subcate"><a href="http://haodro.com/category-7.html">jav
25
2020
04

网站分类

<li><a href="http://haodro.com/category-1.html">分类</a></li><li><a href="http://haodro.com/category-7.html">java面试题</a></li><li><a href="http://haodro.com/category-14.ht
25
2020
04

JAVA中的几种基本数据类型是什么,各自占用多少字节?

浮点类型:float(4字节)、double(8个字)整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)字符类型:char(2字节)布尔类型:boolean(4字节)
25
2020
04

画一画服务注册与发现的流程图

该图来自 Dubbo 官网,供你参考,如果你说你熟悉 Dubbo, 面试官经常会让你画这个图,记好了。
25
2020
04

Dubbo里面有哪几种节点角色?

Dubbo里面节点角色:
25
2020
04

Dubbo 和 Spring Cloud 有什么区别?

两个没关联,如果硬要说区别,有以下几点。1)通信方式不同Dubbo 使用的是 RPC 通信,而 Spring Cloud 使用的是 HTTP RESTFul 方式。2)组成部分不同 
25
2020
04

ZooKeeper文件系统

Zookeeper提供一个多层级的节点命名空间(节点称为znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限为1M。
25
2020
04

Netty 是什么

Netty 是一款基于 NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。难能可贵的是,在保证快速和易用性的同时,并没有丧失可维护性和性能等优势。
25
2020
04

为什么要用Dubbo?

因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。下面这张图可以很清楚的诠释,最重要的一点是,分布式架构可以承受更大规模的并发流量。 下面是 Dubbo 的服务治理图。 
25
2020
04

Dubbo是什么?

Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。面试官问你如果这个都不清楚,那下面的就没必要问了。官网:http://dubbo.apache.org
25
2020
04

ThreadLocal 是什么?

ThreadLocal 是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,适用于各个线程不共享变量值的操作。
25
2020
04

ThreadLocal 工作原理是什么?

ThreadLocal 原理:每个线程的内部都维护了一个 ThreadLocalMap,它是一个 Map(key,value)数据格式,key 是一个弱引用,也就是 ThreadLocal 本身,而 value 存的是线程变量的值。也就是说 ThreadLocal 本身并不存储线程的变量值,它只是一个工具,用来维护线程内部的 Map,帮助存和取变量。数据结构,如下图所示:
25
2020
04

ThreadLocal 如何解决 Hash 冲突?

与 HashMap 不同,ThreadLocalMap 结构非常简单,没有 next 引用,也就是说 ThreadLocalMap 中解决 Hash 冲突的方式并非链表的方式,而是采用线性探测的方式。所谓线性探测,就是根据初始 key 的 hashcode 值确定元素在 table 数组中的位置,如果发现这个位置上已经被其他的 key 值占用,则利用固定的算法寻找一定步长的下个位置,依次判断,直至找到能够存放的位置。源代码实现如下:/ * Increment i modulo len.
25
2020
04

ThreadLocal 的内存泄露是怎么回事?

ThreadLocal 在 ThreadLocalMap 中是以一个弱引用身份被 Entry 中的 Key 引用的,因此如果 ThreadLocal 没有外部强引用来引用它,那么 ThreadLocal 会在下次 JVM 垃圾收集时被回收。这个时候 Entry 中的 key 已经被回收,但是 value 又是一强引用不会被垃圾收集器回收,这样 ThreadLocal 的线程如果一直持续运行,value 就一直得不到回收,这样就会发生内存泄露。
25
2020
04

ThreadLocal 的应用场景有哪些?

ThreadLocal 适用于独立变量副本的情况,比如 Hibernate 的 session 获取场景。示例代码:private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();public static Session getCurrentSession(){    Session session =  threadLocal.get()
25
2020
04

给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables 和dimension tables. fact table包含大量的主要的信息而dimension tables 存放对fact table 某些属性描述的信息
25
2020
04

使用索引的理由

解答:快速访问表中的data block
25
2020
04

比较truncate和delete 命令

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动  HWK,不需要rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长  时间.
25
2020
04

怎样查看数据库引擎的报错

 解答:alert log.
25
2020
04

给出两个检查表结构的方法

解答:1.DESCRIBE命令  2.DBMS_METADATA.GET_DDL 包
25
2020
04

解释data block , extent 和 segment的区别(这里建议用英文术语)

解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment.
24
2020
04

Bootstrap制作渐变顶部固定自适应导航栏


<!DOCTYPE html>  

<html>  

<head>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  

    <title></title>  

    <meta charset="utf-8" />

    <link href="<%=path%>/css/style.css" rel="stylesheet" type="text/css" /> 

    <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  

    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>  

    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>  


</head>  

<body>  

    <nav class="navbar navbar-fixed-top my-navbar" role="navigation">  

        <div class="container-fluid">  

            <div class="navbar-header">  

                <button type="button" class="navbar-toggle" data-toggle="collapse"  

                        data-target="#example-navbar-collapse">  

                    <span class="sr-only">切换导航</span>  

                    <span class="icon-bar"></span>  

                    <span class="icon-bar"></span>  

                    <span class="icon-bar"></span>  

                </button>  

                <a class="navbar-brand" href="#">菜鸟教程</a>  

            </div>  

            <div class="collapse navbar-collapse" id="example-navbar-collapse">  

                <ul class="nav navbar-nav">  

                    <li class="active"><a href="#">iOS</a></li>  

                    <li><a href="#">SVN</a></li>  

                    <li><a href="#">Asp.Net</a></li>  

                </ul>  

            </div>  

        </div>  

    </nav>  

     <div class="bg"></div>   

    <script>  

        $(window).scroll(function () {  

            if ($(".navbar").offset().top > 50) {$(".navbar-fixed-top").addClass("top-nav");  

            }else {$(".navbar-fixed-top").removeClass("top-nav");}  

        })</script>  

</body></html> 

24
2020
04

Bootstrap 导航栏折叠

折叠导航栏组成结构div.navbar.navbar-expand-*.navbar-dark.bg-dark>a.navbar-brand             不折叠的菜单首项+button.navbar-toggler        *以上屏幕不显示,*以下屏幕显示按钮 >span.navbar-toggler-icon       &n
24
2020
04

Bootstrap:做一个简单的底部导航条

Bootstrap:做一个简单的底部导航条代码:<!DOCTYPE html><html>    <head>        <meta http-equiv="content-type" content="text/html; charset=UTF-8">        <title>Main_
24
2020
04

为什么Kafka不支持读写分离?

在 Kafka 中,生产者写入消息、消费者读取消息的操作都是与 leader 副本进行交互的,从 而实现的是一种主写主读的生产消费模型。Kafka 并不支持主写从读,因为主写从读有 2 个很明 显的缺点:(1)数据一致性问题。数据从主节点转到从节点必然会有一个延时的时间窗口,这个时间 窗口会导致主从节点之间的数据不一致。某一时刻,在主节点和从节点中 A 数据的值都为 X, 之后将主节点中 A 的值修改为 Y,那么在这个变更通知到从节点之前,应用读取从节点中的 A 数据的值并不为最新的 Y,由此便
24
2020
04

Kafka中是怎么体现消息顺序性的?

kafka每个partition中的消息在写入时都是有序的,消费时,每个partition只能被每一个group中的一个消费者消费,保证了消费时也是有序的。整个topic不保证有序。如果为了保证topic整个有序,那么将partition调整为1.
24
2020
04

消费者提交消费位移时提交的是当前消费到的最新消息的offset还是offset+1?

offset+1
24
2020
04

kafka如何实现延迟队列?

Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定时器(SystemTimer)。JDK的Timer和DelayQueue插入和删除操作的平均时间复杂度为O(nlog(n)),并不能满足Kafka的高性能要求,而基于时间轮可以将插入和删除操作的时间复杂度都降为O(1)。时间轮的应用并非Kafka独有,其应用场景还有很多,在Netty、Akka、Quartz、Zookeeper等组件中都存在时间轮的踪影。底层使用数组实
24
2020
04

你认为ui设计师最注重的是什么啊?

答案:创新
24
2020
04

你喜欢什么样的图标?为什么喜欢?

答案:扁平、写实
24
2020
04

说说如何理解交互设计的

答案:交互设计,又称互动设计,(英文InteractionDesign,缩写IxD或者IaD),是定义、设计人造系统的行为的设计领域。人造物,即人工制成物品,例如,软件、移动设备、人造环境、服务、可佩带装置以及系统的组织结构。交互设计在于定义人造物的行为方式(the "interaction",即人工制品在特定场景下的反应方式)相关的界面。交互设计作为一门关注交互体验的新学科在二十世纪八十年代产生了,它由IDEO的一位创始人比尔·摩格理吉(BillMoggridge)在198
24
2020
04

列出至少5个国内外对应网站

答案:GoogleVS百度人人VSfacebook花瓣VSpintersetGmailVSfoxmailhitfmVS虾米
24
2020
04

对无线互联网未来的发展有什么看法?

答案:全无线互联网的时代
24
2020
04

你认为做手机UI最难的地方在哪?

答案:尺寸众多。
24
2020
04

你平时用的网站和app你最喜欢哪个,列举两个并对其进行分析?为什么喜欢?

答案:花瓣、站酷、追波、ui中国。花瓣、设计师、慕课网、优设网、qq音乐、高德地图。
24
2020
04

推动一个项目的时间要多久?举个例子?

答案:项目就是设计师的饭碗,对于公司来说也是,项目无法启动让人很烦躁的回答这类问题的时候,还是要明确工作和提高效率才是设计的根本。
24
2020
04

说说AOP和IOC的概念以及在spring中是如何应用的

AOP:面向方面编程,ioc:依赖注入;声明式事务和编程式事务积极一些通用部分
24
2020
04

struts中的几个关键对象的作用(说说几个关键对象的作用)

Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态form,ActonMapping:配置文件中action节点的信息......
24
2020
04

MVC,分析一下struts是如何实现MVC的

m:JavaBean 或结合 EJB 组件或者pojo构成c:Action 来实现v:一组 JSP 文件及其标签构成。 
24
2020
04

Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因

不是声明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在spring中用scope="prototype"来管理 
24
2020
04

用自己的话简要阐述struts2的执行流程。

Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,
24
2020
04

spring是什么

这个问题,往往可以通过我们为什么要使用spring这个问题来切入:AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(s
24
2020
04

数据库里面的索引和约束是什么?

索引是为了提高数据的检索速度,索引是建立在数据表上,根据一个或多个字段建立的约束是为了保持数据的完整性,约束有非空约束,主键约束,外键约束等等。 
24
2020
04

JSF是什么?

JavaServer Face是基于组件的web开发框架,跟sturts差不多的框架
24
2020
04

hibernate是什么?

hibernate是基于ORM对象关系映射(完成对象数据到关系数据映射的机制)实现的,做数据持久化的工具
24
2020
04

spring是什么?

spring是一个集成了许多第三方框架的大杂烩,其核心技术是IOC(控制反转,也称依赖注入)和AOP(面向切面编程)
24
2020
04

struts是什么?

struts1是基于JSP和servlet的一个开源的Web应用框架,使用的是MVC的设计模式struts2是基于webwork技术的框架,是sun和webwork公司联手开发的一个功能非常齐全的框架,struts2和struts1没有任何关系,是一个全新的框架
24
2020
04

Struts1流程:

1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被ActionServlet接收。3、根据struts-config.xml配置, ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。4、是否验证,需要验证则调用ActionForm的validate方法,验证失败则跳转到input,成功则继续。5、Action从ActionForm获得数据,调用javabean 中的业务方法处理数据。6、
24
2020
04

bean在spring的容器中两种基本行为是什么?

Singleton:单态   Non-singleton或prototype:原型
24
2020
04

BeanFactory的作用是什么?

BeanFactory是配置、创建、管理bean的容器,有时候也称为bean上下文。Bean与bean的依赖关系,也是由BeanFactory负责维护的。
24
2020
04

在shell脚本如何定义函数呢 ?

答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:$ diskusage () { df -h ; } 1译注:下面是我给的shell函数语法,原文没有[ function ] 函数名 [()]{命令;[return int;]}
24
2020
04

do-while语句的基本格式 ?

答:do-while语句类似于while语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用do-while语句的语法do{命令} while (条件)
24
2020
04

如何执行算术运算 ?

答:有两种方法来执行算术运算:1、使用expr命令# expr 5 + 2 2、用一个美元符号和方括号([表达式])例如:test=[表达式])例如:test=[16 + 4] ; test=$[16 + 4]
24
2020
04

如何取消变量或取消变量赋值 ?

答:“unset”命令用于取消变量或取消变量赋值。语法如下所示:# unset <变量名>
24
2020
04

如何让 shell 就脚本得到来自终端的输入?

答:read命令可以读取来自终端(使用键盘)的数据。read命令得到用户的输入并置于你给出的变量中。例子如下:# vim /tmp/test.sh     #!/bin/bash     echo ‘Please enter your name’     read name     echo “My Name is $name” # ./test.sh Pl
24
2020
04

在shell脚本中,如何写入注释 ?

答:注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以#开头。例子如下:#!/bin/bash # This is a command echo “I am logged in as $USER” 
24
2020
04

在shell脚本中,如何测试文件 ?

答:test命令可以用来测试文件。基础用法如下表格:Test 用法    -d 文件名 如果文件存在并且是目录,返回true    -e 文件名 如果文件存在,返回true    -f 文件名 如果文件存在并且是普通文件,返回true    -r 文件名 如果文件存在并可读,返回true    -s 文件名 如果文件存在并且不为空,返回true    -w 文件名 如果文件存在
24
2020
04

Bourne shell(bash) 中有哪些特殊的变量 ?

答:下面的表列出了Bourne shell为命令行设置的特殊变量。 内建变量 解释$0 命令行中的脚本名字$1 第一个命令行参数$2 第二个命令行参数…… ……$9 第九个命令行参数$# 命令行参数的数量$* 所有命令行参数,以空格隔开
24
2020
04

shell脚本如何比较字符串?

答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。
24
2020
04

如何调试shell脚本 ?

答:使用’-x’参数(sh -x myscript.sh)可以调试shell脚本。另一个种方法是使用‘-nv’参数( sh -nv myscript.sh)。
24
2020
04

shell脚本中for循环语法 ?

答:for循环的基础语法:for 变量 in 循环列表do命令1命令2….最后命令done
24
2020
04

“#!/bin/bash”的作用 ?

答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,而! 叫做 bang。它的意思是命令通过 /bin/bash 来执行。
24
2020
04

如何使脚本可执行 ?

答:使用chmod命令来使脚本可执行。例子如下:# chmod a+x myscript.sh 
24
2020
04

shell脚本中while循环语法 ?

答:如同for循环,while循环只要条件成立就重复它的命令块。不同于for循环,while循环会不断迭代,直到它的条件不为真。基础语法:while [ 条件 ]do命令…done
24
2020
04

告诉我shell脚本中Case语句的语法 ?

答:基础语法如下:case 变量 in值1)命令1命令2……最后命令!!值2)命令1命令2……最后命令;;esac
24
2020
04

shell脚本中continue命令的作用 ?

答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。continue命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。
24
2020
04

shell脚本中break命令的作用 ?

答:break命令一个简单的用途是退出执行中的循环。我们可以在while和until循环中使用break命令跳出循环。
24
2020
04

在shell脚本中如何比较两个数字 ?

答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下:#!/bin/bash x=10 y=20 if [ $x -gt $y ] then echo “x is greater than y” else echo “y is greater than x” fi 
24
2020
04

shell脚本中“$?”标记的用途是什么?

答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。简单的例子如下:root@localhost:~# ls /usr/bin/shar /usr/bin/shar root@localhost:~# echo $? 0如果结束状态是0,说明前一个命令执行成功。root@localhost:~# ls /usr/bin/share  ls: cannot access /usr/bin/s
24
2020
04

shell脚本中“if”语法如何嵌套?

答:基础语法如下:if [ 条件 ]then命令1命令2…..elseif [ 条件 ]then命令1命令2….else命令1命令2…..fifi
24
2020
04

如何将标准输出和错误输出同时重定向到同一位置?

答:这里有两个方法来实现:方法一:2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )方法二:&> (如# ls /usr/share/doc &> out.txt )
24
2020
04

可以在shell脚本中使用哪些类型的变量?

答:在shell脚本,我们可以使用两种类型的变量:    系统定义变量    用户定义变量系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。 用户变量由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。
24
2020
04

什么是默认登录shell,如何改变指定用户的登录shell?

答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示:# chsh <用户名> -s <新shell> #chsh linuxtechi -s /bin/sh 
24
2020
04

Shell脚本是什么、它是必需的吗?

答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。
23
2020
04

什么是面向对象?

世间万物都可以看成一个对象。每个物体包括动态的行为和静态的属性,这些就构成了一个对象。
23
2020
04

什么是OOP?

面向对象编程
23
2020
04

Java的数据结构有那些?

线性表(ArrayList)链表(LinkedList)栈(Stack)队列(Queue)图(Map)树(Tree)
23
2020
04

什么是数据结构?

计算机保存,组织数据的方式
23
2020
04

什么是JDK?什么是JRE?

JDK:java development kit:java开发工具包,是开发人员所需要安装的环境JRE:java runtime environment:java运行环境,java程序运行所需要安装的环境
23
2020
04

Java是否需要开发人员回收内存垃圾吗?

大多情况下是不需要的。Java提供了一个系统级的线程来跟踪内存分配,不再使用的内存区将会自动回收
23
2020
04

什么是JVM?java虚拟机包括什么?

JVM:java虚拟机,运用硬件或软件手段实现的虚拟的计算机,Java虚拟机包括:寄存器,堆栈,处理器
23
2020
04

Java都有那些开发平台?

JAVA SE:主要用在客户端开发JAVA EE:主要用在web应用程序开发JAVA ME:主要用在嵌入式应用程序开发
23
2020
04

你所知道网络协议有那些?

HTTP:超文本传输协议FTP:文件传输协议SMPT:简单邮件协议TELNET:远程终端协议POP3:邮件读取协议
23
2020
04

什么是B/S架构?什么是C/S架构

B/S(Browser/Server),浏览器/服务器程序C/S(Client/Server),客户端/服务端,桌面应用程序
23
2020
04

下面这段代码是干什么用的?

bar{System.out.println("haha")}bar作为一个函数,正在接收一个表达式为参数,这个表达式用来打印一行字符串。
23
2020
04

在kotlin中如何比较两个字符串?

第1种方法你可以用双等号来比较两个字符串。第2种方法用String.compareTo,这个扩展函数来比较两个字符串。
23
2020
04

kotlin中的抽象有什么作用?

抽象是面向对象编程中最重要的概念。抽象类的特点是,你知道这个类会有什么功能,但是你不知道它具体如何实现这些功能和实现哪些功能。
23
2020
04

在kotlin中定义一个volatile变量。

Volatile var x:Long?=null
23
2020
04

kotlin对标准的Java库和类提供额外的功能吗?

kotlin程序是跑在标准的Java虚拟机上的。所以kotlin跟Java在这一层级几乎没有区别。Java代码还可以直接在kotlin程序中使用。
23
2020
04

什么是range操作符?

Range操作符用来遍历一个范围。用两个点来表示的。for(i in 1..15)print(i)
23
2020
04

kotlin是否支持原始数据类型?

不支持,kotlin不支持原始数据类型。
23
2020
04

说一下kotlin类的缺省行为。

kotlin类缺省是final的。因为kotlin支持多重类继承。开放类代价要比final类高很多。
23
2020
04

kotlin允许macros吗?

不允许。kotlin不支持宏。
23
2020
04

我们能把Java代码转成kotlin代码吗?

是的,我们可以用jetbrains ide把Java代码转成kotlin,也可以用Android studio转。
23
2020
04

解释一下kotlin中数据类的作用。

数据类包含基本的数据类型, 它不包含任何功能函数。
23
2020
04

有哪些特点, kotlin有,但是Java没有?

null safety.Operator overloading.Coroutines.Range expressions.Smart casts.Companion objects.
23
2020
04

在kotlin中如何处理null异常?

使用elvis操作符来处理null异常。
23
2020
04

说一下kotlin中对Java.io.file的的扩展方法。

bufferedReader.readBytes.readTextforEachLinereadLines
23
2020
04

查看test.txt文件中已aaa结尾的所有行。

答案:grep 'aaa$' test.txt
23
2020
04

kotlin支持哪种编程类型?

一种是procedural编程, 另一种是面向对象的编程。
23
2020
04

在kotlin中有多少构造函数?

有两种,一种是primary构造函数,一种是secondary构造函数。
23
2020
04

在kotlin中如何声明一个变量?

val xyz:  String
23
2020
04

在kotlin中是否存在三元条件操作符?

不存在, 在kotlin中没有三元条件操作符。
23
2020
04

为什么kotlin跟Java具有互相的操作性?

因为这两门语言,对于jvm来说没有区别。它们都是编译成byte code, 然后在jvm上运行的。
23
2020
04

kotlin中的null safety是什么意思?

null safety的特性是为了去除null pointer exception在实时运行中的出现风险。它也用来区分空引用和非空引用。
23
2020
04

解释一下extension函数。

extension函数用来对class的扩展,而不需要从class进行派生。
23
2020
04

说一下使用kotlin的三大好处。

kotlin比较容易学,因为它跟Java很接近。kotlin是功能性编程语言,是基于jvm上的。kotlin的代码更易读,更容易理解。
23
2020
04

为什么我们应该从Java转到kotlin?

首先,kotlin比Java要简单。它去除了很多Java里面的冗余代码。kotlin提供了很多Java不具有的特性。
23
2020
04

是谁开发了kotlin?

kotlin是由jetbrains开发的。
23
2020
04

什么是kotlin?

kotlin是静态类型的编程语言,运行于jvm之上。
23
2020
04

描述css reset的作用和用途?

Reset重置浏览器的css默认属性浏览器的品种不同,样式不同,然后重置,让他们统一
23
2020
04

标签上title与alt属性的区别是什么?

Alt 当图片不显示是用文字代表。Title 为该属性提供信息
23
2020
04

写出几种IE6 BUG的解决方法?

1.双边距BUG float引起的使用display2.3像素问题使用float引起的使用dislpay:inline-3px3.超链接hover 点击后失效使用正确的书写顺序link visited hover active4.Ie z-index问题给父级添加position:relative5.Png 透明使用js代码改6.Min-height 最小高度!Important解决’7.select 在ie6下遮盖使用iframe嵌套8.为什么没有办法定义1px左右的宽度容器(IE6默认的行高
23
2020
04

你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?

Ie(Ie内核)火狐(Gecko)谷歌(webkit) opear(Presto)
23
2020
04

css的基本语句构成是?

选择器{属性1:值1;属性2:值2;……}
23
2020
04

前端页面有哪三层构成,分别是什么?作用是什么?

结构层 Html 表示层 CSS 行为层 js
23
2020
04

CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?

标签选择符 类选择符 id选择符继承不如指定 Id>class>标签选择后者优先级高
23
2020
04

CSS引入的方式有哪些?link和@import的区别是?

内联 内嵌 外链 导入区别 :同时加载前者无兼容性,后者CSS2.1以下浏览器不支持Link 支持使用javascript改变样式,后者不可
23
2020
04

行内元素有哪些?块级元素有哪些?CSS的盒模型?

块级元素:div p h1 h2 h3 h4 form ul行内元素: a b br i span input selectCss盒模型:内容,border ,margin,padding
23
2020
04

Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

用于声明文档使用那种规范(html/Xhtml)一般为严格 过度 基于框架的html文档加入XMl声明可触发,解析方式更改为IE5.5 拥有IE5.5的bug
22
2020
04

xhtml和html有什么区别?

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同:XHTML 元素必须被正确地嵌套。XHTML 元素必须被关闭。标签名必须用小写字母。XHTML 文档必须拥有根元素。
22
2020
04

对WEB标准以及W3C的理解与认识?

标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外 链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维 护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性; 
22
2020
04

解释jsonp的原理,以及为什么不是真正的ajax(主观题)?

JSONP是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
22
2020
04

闭包是什么?有什么特性?请简单书写一个简单事例?

必包:闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量) 特性:闭包是能够读取其他函数内部变量的函数,即在外面可以调用函数中的函数的变量,其实他就是将函数内外部连接起来的桥梁 事例:<scripttype=’text/javascript’>function a(){var i = 99;iAdd = function(){i++;}function b(){aler
22
2020
04

完成下面布局(兼容IE6-10以及FF、谷歌、苹果浏览器)?

<!DOCTYPEhtml><htmllang="en"><head>    <metahttp-equiv="Content-Type" content="text/html;charset=utf-8"/>    <title></title>    <style>   
22
2020
04

HTTP请求有哪几种?

post、get
22
2020
04

JS的typeof返回哪些数据类型?

string、number、object、boolean、function、undefined
22
2020
04

JS怎么创建一个类?

方式1 : var obj = new Object();方式2 : var obj = {};
22
2020
04

平时有没有使用xml和json,在ajax交互中,哪一种更易于开发和维护,js中怎么序列化JSON字符串?

有,json相比xml可读性和可扩张性好、编码及解码难度较低、在数据交互中带宽占用少,并且在当下是最流行的数据交互格式。 序列化JSON字符串:eval() 或者 JSON.parse() 
22
2020
04

简述 Ajax 原理,什么是同步异步(主观题答案不唯一)?

答:Ajax 是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。同步传输-Sync是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的;具体来说,同步传输的比特分组要大得多,虽然其通常要比异步传输快速得多,开销也比较少;但是,同步传输数据比特位越长,缓存数据所需要的缓冲区也越大;简单来说,同步就是必须一件一件事做,等前一件做完了才能做下一件事
22
2020
04

如果制作一个访问量很大的网站,对css,js和图片应该怎么处理?

方法1:资源文件按模块进行放置,有利于团队开发方法2:图片尽量采取聚合技术方法3:精简压缩css和js文件,减少文件大小方法4:类库、媒体使用CDN加速,减轻服务器压力
22
2020
04

IE6的双倍边距BUG指的是什么?怎么解决?

双边距:当块级元素有浮动样式的时候,给元素添加margin-left和margin-right样式,在ie6下就会出现双倍边距。 解决方案:给当前元素添加样式,使当前元素不为块,如:display:inline;display:list-item 
22
2020
04

用JS截取字符串,asdfgh,要fgh;?

方式1: ‘asdfgh’.substr(3,3)方式2: ’asdfgh’.substring(3,5) 或者 ‘asdfgh’.substring(3)
22
2020
04

描述CSS hack技巧?

条件注释:仅适用于IE特定符号:适用于能识别特定符号的浏览器内核符号:针对不同浏览器内核
22
2020
04

JavaScript中哪些方法获取元素?

getElementByIdgetElementsByClassNamegetElementsByTagNamegetElementsByName
22
2020
04

怎么样从web前端方面优化性能?至少列举5点?

1)        HTML部分 u 语义化HTML:好处在于可以使代码简洁清晰,支持不同设备,利于搜索引擎,便于团队开发;u 减少DOM节点:加速页面渲染;u 给图片加上正确的宽高值:这可以减少页面重绘,同时防止图片缩放;u 防止src属性和link的href属性为空:当值为空时,浏览器很可能会把当前页面当成其属性值加载;u 正确的闭合标签:如避免使用<div/>,浏览器会多一个将它解析成<div\></div\&
22
2020
04

页面布局中常听说的“结构与表现”分离,“结构”是指?“表现”是指?

“结构”:HTML“表现”:CSS
22
2020
04

请简述HTML和XHTML最重要的4点不同?

不同:                   XHTML要求正确嵌套                   XHTML 所有元素必须关闭                   XHTML 区分大小写&nbs
22
2020
04

如何居中一个浮动元素?

 方式1:设置容器的浮动方式为相对定位,然后确定容器的宽高比如宽500 高 300 的层,然后设置层的外边距。<!DOCTYPEHTML><html><head><styletype="text/css">        div{             width: 500px;   &n
22
2020
04

前端页面由哪三层构成,分别是什么?作用是什么?

前端页面构成:结构层、表示层、行为层 结构层(structural layer)由 HTML 或 XHTML之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P标签表达了这样一种语义:“这是一个文本段。” 表示层(presentation layer)由 CSS 负责创建。 CSS对“如何显示有关内容”的问题做出了回答。 行为层(behaviorlayer)负责回答“内
22
2020
04

在html中,position取值有哪几种,默认值是什么?

取值:static、relative、fixed、absolute默认值:static
22
2020
04

div和span的区别?

div是块级标签,span是行级标签
22
2020
04

HTML5 为什么只需要写 ?

HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行); 而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
22
2020
04

如何解决跨域问题?

jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面
22
2020
04

同步和异步的区别?

同步的概念应该是来自于OS中关于同步的概念:不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式).同步强调的是顺序性.谁先谁后.异步则不存在这种顺序性.同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。
22
2020
04

Ajax 是什么? 如何创建一个Ajax?

ajax的全称:Asynchronous Javascript And XML。异步传输+js+xml。所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验。(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息(3)设置响应HTTP请求状态变化的函数(4)发送HTT
22
2020
04

js延迟加载的方式有哪些?

defer和async、动态创建DOM方式(用得最多)、按需异步载入js
22
2020
04

JSON 的了解?

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript的一个子集。数据格式简单, 易于读写, 占用带宽小如:{"age":"12", "name":"back"}JSON字符串转换为JSON对象:var obj =eval('('+ str +')');var obj = str.parseJSON();var obj
22
2020
04

Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?

hasOwnPropertyjavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。使用方法:object.hasOwnProperty(proName)其中参数object是必选项。一个对象的实例。proName是必选项。一个属性名称的字符串值。如果 object 具有指定名称的属性,那么JavaScript中hasOwnProperty函数方法返回 true,
22
2020
04

new操作符具体干了什么呢?

1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。2、属性和方法被加入到 this 引用的对象中。3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。var obj = {};obj.proto = Base.prototype;Base.call(obj);
22
2020
04

如何判断一个对象是否属于某个类?

使用instanceof (待完善)if(a instanceof Person){alert('yes');}
22
2020
04

javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么?

use strict是一种ECMAscript 5 添加的(严格)运行模式,这种模式使得 Javascript 在更严格的条件下运行,使JS编码更加规范化的模式,消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。默认支持的糟糕特性都会被禁用,比如不能用with,也不能在意外的情况下给全局变量赋值;全局变量的显示声明,函数必须声明在顶层,不允许在非函数代码块内声明函数,arguments.callee也不允许使用;消除代码运行的一些不安全之处,保证代码运行的安全,限制函数中的
22
2020
04

什么是闭包(closure),为什么要用它?

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。闭包的特性:1.函数内再嵌套函数2.内部函数可以引用外层的参数和变量3.参数和变量不会被垃圾回收机制回收//li节点的onclick事件都能正确的弹出当前被点击的li索引<ul id="testUL"><li> index = 0</li><
22
2020
04

事件是?IE与火狐的事件机制有什么区别? 如何阻止冒泡?

我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。事件处理机制:IE是事件冒泡、Firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件;ev.stopPropagation();(旧ie的方法 ev.cancelBubble = true;)
22
2020
04

["1", "2", "3"].map(parseInt) 答案是多少?

parseInt() 函数能解析一个字符串,并返回一个整数,需要两个参数 (val, radix),其中 radix 表示要解析的数字的基数。【该值介于 2 ~ 36 之间,并且字符串中的数字不能大于radix才能正确返回数字结果值】;但此处 map 传了 3 个 (element, index, array),我们重写parseInt函数测试一下是否符合上面的规则。function parseInt(str, radix) {return str+'-'+radix;};var
22
2020
04

null,undefined 的区别?

null 表示一个对象是“没有值”的值,也就是值为“空”;undefined 表示一个变量没有被声明,不存在这个值,或者被声明了但没有被赋值;undefined不是一个有效的JSON,而null是;undefined的类型(typeof)是undefined;null的类型(typeof)是object;Javascript将未赋值的变量默认值设为undefined;Javascript从来不会将变量设为null。它是用来让程序员表明某个用var声明的变量时没有值的。typeof undefin
22
2020
04

eval是做什么的?

它的功能是把对应的字符串解析成JS代码并运行;应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。由JSON字符串转换为JSON对象的时候可以用eval,var obj =eval('('+ str +')');
22
2020
04

谈谈This对象的理解。

this总是指向函数的直接调用者(而非间接调用者);如果有new关键字,this指向new出来的那个对象;在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window;
22
2020
04

Javascript作用链域?

全局函数无法查看局部函数的内部细节,但局部函数可以查看其上层的函数细节,直至全局细节。当需要从局部函数查找某一属性或方法时,如果当前作用域没有找到,就会上溯到上层作用域查找,直至全局函数,这种组织形式就是作用域链。
22
2020
04

javascript创建对象的几种方式?

javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON;但写法有很多种,也能混合使用。1、对象字面量的方式person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};2、用function来模拟无参的构造函数function Person(){}var person=new Person();//定义一个function,如果
22
2020
04

JavaScript继承的几种实现方式?

参考:构造函数的继承,非构造函数的继承;
22
2020
04

Javascript如何实现继承?

1、构造继承2、原型继承3、实例继承4、拷贝继承原型prototype机制或apply和call方法去实现较简单,建议使用构造函数与原型混合方式。function Parent(){this.name = 'wang';}function Child(){this.age = 28;}Child.prototype = new Parent();//继承了Parent,通过原型var demo = new Child();alert(demo.age);alert(demo.na
21
2020
04

Docker镜像和层有什么区别?

答:Docker镜像是由一系列只读层构建的,而每个层代表Dockerfile中的一条指令。
21
2020
04

说说Docker的一些常用命令?

答:docker pull :拉取或者更新指定镜像docker push :将镜像推送至远程仓库docker rm :删除容器docker rmi :删除镜像docker images: 列出所有镜像docker ps 列出正在运行的所有容器docker ps -a 列出所有容器
21
2020
04

说说Dockerfile中的命令COPY和ADD命令有什么区别?

答:COPY是ADD的一种简化版本,目的在于满足大多数人“复制文件到容器”的需求,而相比起来ADD命令支持URL作为参数,同时它有能力自动解压文件,不过非特殊情况下,官方推荐使用COPY,使用起来更简单透明。
21
2020
04

了解Dockerfile么?

答:Dockerfile是Docker镜像的源代码,Docker镜像的创建是基于Dockerfile。
21
2020
04

说说Docker容器有几种状态?

答:运行,已暂停,重新启动,已退出。使用哪条命令来查看容器状态?答:docker ps –a,这条命令可以列出所有可用的docker容器及其在主机上的相应状态。
21
2020
04

什么是Docker Hub?

答:DockerHub是一个由Docker公司运行和管理的基于云的存储库。它是一个在线存储库,Docker镜像可以由其他用户发布和使用。
21
2020
04

什么是Docker容器?

答:Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,在主机操作系统的用户空间中作为独立进程运行。Docker容器是Docker镜像的实例,类比java中的对象。
21
2020
04

什么是Docker镜像?

答:Docker镜像是Docker容器的源代码,Docker镜像用来创建容器,它就像java中的类。
21
2020
04

说说什么是Docker?

答:Docker是一个容器化平台,它以容器的形式将应用程序及其所有的依赖项打包在一起,确保应用程序在任何环境中无缝运行。
20
2020
04

修改配置不重启Redis会实时生效吗?

针对运行实例,有许多配置选项可以通过 CONFIG SET 命令进行修改,而无需执行任何形式的重启。 从 Redis 2.2 开始,可以从 AOF 切换到 RDB 的快照持久性或其他方式而不需要重启 Redis。检索 ‘CONFIG GET *’ 命令获取更多信息。但偶尔重新启动是必须的,如为升级 Redis 程序到新的版本,或者当你需要修改某些目前 CONFIG 命令还不支持的配置参数的时候。
20
2020
04

如何选择合适的持久化方式?

一般来说, 如果想达到足以媲美PostgreSQL的数据安全性, 你应该同时使用两种持久化功能。如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失,那么你可以只使用RDB持久化。有很多用户都只使用AOF持久化,但并不推荐这种方式:因为定时生成RDB快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比AOF恢复的速度要快,除此之外, 使用RDB还可以避免之前提到的AOF程序的bug。
20
2020
04

Redis提供了哪几种持久化方式?

RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保
20
2020
04

Redis常见性能问题和解决方案?

(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次(3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内(4) 尽量避免在压力很大的主库上增加从库(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...这样的结构方便解决单点故障问题,实现Slave对Mast
20
2020
04

一个Redis实例最多能存放多少的keys?List、Set、Sorted Set他们最多能存放多少元素?

理论上Redis可以处理多达232的keys,并且在实际中进行了测试,每个实例至少存放了2亿5千万的keys。我们正在测试一些较大的值。 任何list、set、和sorted set都可以放232个元素。换句话说,Redis的存储极限是系统中的可用内存值。
20
2020
04

Redis是单线程的,如何提高多核CPU的利用率?

可以在同一个服务器部署多个Redis的实例,并把他们当作不同的服务器来使用,在某些时候,无论如何一个服务器是不够的, 所以,如果你想使用多个CPU,你可以考虑一下分片(shard)。
20
2020
04

Redis的内存用完了会发生什么?

如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回。)或者你可以将Redis当缓存来使用配置淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。
20
2020
04

查看Redis使用情况及状态信息用什么命令?

info
20
2020
04

都有哪些办法可以降低Redis的内存使用情况呢?

如果你使用的是32位的Redis实例,可以好好利用Hash,list,sorted set,set等集合类型数据,因为通常情况下很多小的Key-Value可以用更紧凑的方式存放到一起。
20
2020
04

Redis的内存占用情况怎么样?

给你举个例子: 100万个键值对(键是0到999999值是字符串“hello world”)在我的32位的Mac笔记本上 用了100MB。同样的数据放到一个key里只需要16MB, 这是因为键值有一个很大的开销。 在Memcached上执行也是类似的结果,但是相对Redis的开销要小一点点,因为Redis会记录类型信息引用计数等等。当然,大键值对时两者的比例要好很多。64位的系统比32位的需要更多的内存开销,尤其是键值对都较小时,这是因为64位的系统里指针占用了8个字节。 但是,当然,64位系统
20
2020
04

Redis与其他key-value存储有什么不同?

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不
20
2020
04

支持一致性哈希的客户端有哪些?

Redis-rb、Predis等。
20
2020
04

Twemproxy是什么?

Twemproxy是Twitter维护的(缓存)代理系统,代理Memcached的ASCII协议和Redis协议。它是单线程程序,使用c语言编写,运行起来非常快。它是采用Apache 2.0 license的开源软件。 Twemproxy支持自动分区,如果其代理的其中一个Redis节点不可用时,会自动将该节点排除(这将改变原来的keys-instances的映射关系,所以你应该仅在把Redis当缓存时使用Twemproxy)。 Twemproxy本身不存在单点问题,因为你可以启动多个Twempr
20
2020
04

分布式Redis是前期做还是后期规模上来了再做好?为什么?

既然Redis是如此的轻量(单实例只使用1M内存),为防止以后的扩容,最好的办法就是一开始就启动较多实例。即便你只有一台服务器,你也可以一开始就让Redis以分布式的方式运行,使用分区,在同一台服务器上启动多个实例。一开始就多设置几个Redis实例,例如32或者64个实例,对大多数用户来说这操作起来可能比较麻烦,但是从长久来看做这点牺牲是值得的。这样的话,当你的数据不断增长,需要更多的Redis服务器时,你需要做的就是仅仅将Redis实例从一台服务迁移到另外一台服务器而已(而不用考虑重新分区的问
20
2020
04

Redis持久化数据和缓存怎么做扩容?

如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。否则的话(即Redis节点需要动态变化的情况),必须使用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。
20
2020
04

Redis分区有什么缺点?

涉及多个key的操作通常不会被支持。例如你不能对两个集合求交集,因为他们可能被存储到不同的Redis实例(实际上这种情况也有办法,但是不能直接使用交集指令)。同时操作多个key,则不能使用Redis事务.分区使用的粒度是key,不能使用一个非常长的排序key存储一个数据集(The partitioning granularity is the key, so it is not possible to shard a dataset with a single huge key like a v
20
2020
04

你知道有哪些Redis分区实现方案?

客户端分区就是在客户端就已经决定数据会被存储到哪个redis节点或者从哪个redis节点读取。大多数客户端已经实现了客户端分区。代理分区 意味着客户端将请求发送给代理,然后代理决定去哪个节点写数据或者读数据。代理根据分区规则决定请求哪些Redis实例,然后根据Redis的响应结果返回给客户端。redis和memcached的一种代理实现就是Twemproxy查询路由(Query routing) 的意思是客户端随机地请求任意一个redis实例,然后由Redis将请求转发给正确的Redis节点。R
20
2020
04

为什么要做Redis分区?

分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一台机器的内存。分区使Redis的计算能力通过简单地增加计算机得到成倍提升,Redis的网络带宽也会随着计算机和网卡的增加而成倍增长。 
20
2020
04

Redis如何做大量数据插入?

Redis2.6开始redis-cli支持一种新的被称之为pipe mode的新模式用于执行大量数据插入工作。
20
2020
04

Redis回收使用的是什么算法?

LRU算法
20
2020
04

Redis回收进程如何工作的?

一个客户端运行了新的命令,添加了新的数据。Redi检查内存使用情况,如果大于maxmemory的限制, 则根据设定好的策略进行回收。一个新的命令被执行,等等。所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断地回收回到边界以下。如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。
20
2020
04

Redis如何做内存优化?

尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.
20
2020
04

Redis key的过期时间和永久有效分别怎么设置?

EXPIRE和PERSIST命令。
20
2020
04

Redis事务相关的命令有哪几个?

MULTI、EXEC、DISCARD、WATCH
20
2020
04

怎么理解Redis事务?

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
20
2020
04

Redis中的管道有什么用?

一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。这就是管道(pipelining),是一种几十年来广泛使用的技术。例如许多POP3协议已经实现支持这个功能,大大加快了从服务器下载新邮件的过程。
20
2020
04

怎么测试Redis的连通性?

ping
20
2020
04

Redis集群如何选择数据库?

Redis集群目前无法做数据库选择,默认在0数据库。
20
2020
04

Redis集群最大节点个数是多少?

16384个。
20
2020
04

Redis集群之间是如何复制的?

异步复制
20
2020
04

Redis集群会有写操作丢失吗?为什么?

Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。 
20
2020
04

Redis集群的主从复制模型是怎样的?

为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有N-1个复制品.
20
2020
04

说说Redis哈希槽的概念?

Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。
20
2020
04

Redis如何设置密码及验证密码?

 设置密码:config set requirepass 123456 授权密码:auth 123456
20
2020
04

Jedis与Redisson对比有什么优缺点?

Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
20
2020
04

Redis和Redisson有什么关系?

Redisson是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象 (Bloom filter, BitSet, Set, SetMultimap, ScoredSortedSet, SortedSet, Map, ConcurrentMap, List, ListMultimap, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, ReadWriteLock, AtomicLong,
20
2020
04

Redis支持的Java客户端都有哪些?官方推荐用哪个?

Redisson、Jedis、lettuce等等,官方推荐使用Redisson。
20
2020
04

Redis有哪些适合的场景?

(1)、会话缓存(Session Cache)最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。(2)、全页缓存(FPC)
20
2020
04

MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?

redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
20
2020
04

Redis集群方案什么情况下会导致整个集群不可用?

有A,B,C三个节点的集群,在没有复制模型的情况下,如果节点B失败了,那么整个集群就会以为缺少5501-11000这个范围的槽而不可用。
20
2020
04

Redis集群方案应该怎么做?都有哪些方案?

1.twemproxy,大概概念是,它类似于一个代理方式,使用方法和普通redis无任何区别,设置好它下属的多个redis实例后,使用时在本需要连接redis的地方改为连接twemproxy,它会以一个代理的身份接收请求并使用一致性hash算法,将请求转接到具体redis,将结果再返回twemproxy。使用方式简便(相对redis只需修改连接端口),对旧项目扩展的首选。 问题:twemproxy自身单端口实例的压力,使用一致性hash后,对redis节点数量改变时候的计算值的改变,数据无法自动
20
2020
04

为什么Redis需要把所有数据放到内存中?

Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。 如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
20
2020
04

一个字符串类型的值能存储最大容量是多少?

512M
20
2020
04

Redis官方为什么不提供Windows版本?

因为目前Linux版本已经相当稳定,而且用户量很大,无需开发windows版本,反而会带来兼容性等问题。
20
2020
04

Redis有哪几种数据淘汰策略?

noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外) allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。allkeys-random: 回收随机的键使得新添加的数据有空间存放。volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合
20
2020
04

Redis的全称是什么?

Remote Dictionary Server。
20
2020
04

Redis主要消耗什么物理资源?

   redis是一种基于内存高性能的数据库--- 主要依赖于内存内存。
20
2020
04

Redis支持哪几种数据类型?

String、List、Set、Sorted Set、hashes 
20
2020
04

Redis相比memcached有哪些优势?

(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型(2) redis的速度比memcached快很多(3) redis可以持久化其数据
20
2020
04

什么是Redis?

Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功
17
2020
04

如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?

处理兼容问题有两种方式:1.IE8/IE7/IE6支持通过document.方法产生的标签,利用这一特性让这些浏览器支持HTML5新标签。 2.使用是html5shim框架另外,DOCTYPE声明的方式是区分HTML和HTML5标志的一个重要因素,此外,还可以根据新增的结构、功能元素来加以区分。
17
2020
04

HTML5有哪些新特性?移除了哪些元素?如何处理新标签的浏览器兼容性问题?如何区分HTML和HTML5?

HTML5已形成了最终的标准,概括来讲,它主要是关于图像,位置,存储,多任务等功能的增加。新增的元素有绘画 canvas ,用于媒介回放的 video 和 audio 元素,本地离线存储 localStorage长期存储数据,浏览器关闭后数据不丢失,而sessionStorage的数据在浏览器关闭后自动删除,此外,还新增了以下的几大类元素。内容元素,article(定义外部的内容。)、footer、header、nav、section(内容)。 表单控件,calendar(日历)、da
17
2020
04

HTML5为什么只需要写就可以了?

doctype是documenttype(文档类型)的简写,在页面中,用来指定页面所使用的xhtml(或者html)的版本。要想制作符合标准的页面,一个必不可少的关键组成部分就 是doctype声明。只有确定了一个正确的doctype,xhtml里的标识和css才能正常生效。 html 告诉浏览器这个文件是html格式网页文件 两个合起来就是 html5标准网页声明,原先的是一串很长的字符串,现在是这个简洁形式,支持html5标准的主流浏览器都认识这个声明。
17
2020
04

什么是语义化的HTML?

语义化的HTML就是写出的HTML代码,符合内容的结构化(内容语义化),选择合适的标签(代码语义化),能够便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。优点:    1.语义化有利于SEO(网站推广),有利于搜索引擎爬虫更好的理解我们的网页,从而获取更多的有效信息,提升网页的权重。    2.在没有CSS的时候能够清晰的看出网页的结构,增强可读性。    3.便于团队开发和维护,语义化的HTML可以让开发者更容易
17
2020
04

什么是CSS Hack,作用是什么?

CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),以达到应用不同的CSS样式的目的。作用:CSS hack用来解决有些css属性在不同浏览器中显示的效果不一样的问题。
17
2020
04

对W3C标准有哪些认识和理解?

标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外 链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维 护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性
17
2020
04

常用浏览器的内核有哪些?

Trident内核。又称其为IE内核。Trident(又称为MSHTML),是微软开发的一种排版引擎。Gecko内核。以C++编写的网页排版引擎。WebKit内核。它的特点在于源码结构清晰、渲染速度极快。缺点是对网页代码的兼容性不高,导致一些编写不标准的网页无法正常显示。Presto内核。加入动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。
16
2020
04

什么是线程

线程是微软公司提出的轻量级线程的概念,一个线程拥有自己的栈和寄存器状态。一个线程可以包含多个线程,和线程由操作系统调度所不同的是,线程内线程的调度完全由程序员自己控制,操作系统的内核完全不会知道线程的存在。在.NET 架构中,线程的概念不一定和操作系统的线程对应,有些情况下.NET 中的线程对应一个线程。  
16
2020
04

如何以较小的内存代价保存 Type、Field 和 Method 信息

System.RuntimeTypeHandle、System.RuntimeMethodHandle 和 System.RuntimeFieldHandle 三个类型,分别包含了一个指向类型、方法和字段描述的指针,用保存指针的方式来代替保存整个类型、方法和字段的信息描述对象,可以有效地减少内存的消耗。而在实际需要用到这些信息时,又可以通过这三个句柄类型对象,分别得到System.Type、System.Reflection.MethodInfo 和System.Reflection.Field
16
2020
04

如何利用反射来实现工厂模式

使用反射可以实现灵活性较高的工厂模式,其关键在于动态地查找产品所包含的所有零件,而不需要通过代码来逐一分析使用者的需求。反射工厂模式具有灵活性高,运行效率相对较低的特点。
16
2020
04

请解释反射的基本原理和其实现的基石

反射是一种动态分析程序集、模块、类型、字段等目标对象的机制,它的实现依托于元数据。元数据是存储在PE 文件中的数据块,它详细记录了程序集或模块内部的结构、引用的类型和程序集和清单。  
16
2020
04

请解释事件的基本使用方法

事件是一种使对象或类能够提供通知的成员。客户端可以通过提供事件处理程序为相应的事件添加可执行代码。事件是一种特殊的委托。
16
2020
04

什么是链式委托

链式委托是指一个由委托串成的链表,当链表上的一个委托被回调时,所有链表上该委托的后续委托将会被顺序执行。
16
2020
04

委托回调静态方法和实例方法有何区别

当委托绑定静态方法时,内部的对象成员变量:_target 将会被设置成null,而当委托绑定实例方法时,_target将会设置成指向该实例方法所属类型的一个实例对象,当委托被执行时,该对象实例将被用来调用实例方法。
16
2020
04

请解释委托的基本原理

委托是一类继承自System.Delegate 的类型,每个委托对象至少包含了一个指向某个方法的指针,该方法可以是实例方法,也可以是静态方法。委托实现了回调方法的机制,能够帮助程序员设计更加简洁优美的面向对象程序。
16
2020
04

在 System.Object 中定义的三个比较方法有何异同

静态方法 ReferenceEquals 实现了引用比较。静态 Equals 方法实现了比较高效地调用实例 Equals 方法的功能。实例Equals 方法是一个虚方法,默认的实现是引用比较,类型可以根据需要重写实例 Equals方法。值类型的基类ValueType 重写了Equals方法,实现了内容的比较。
16
2020
04

.NET提供了哪几个定时器类型

.NET 的内建类型中有三个定时器类型,分别是:  System.Windows.Forms.Timer类型  System.Threading.Timer类型  System.Timers.Timer类型
16
2020
04

如何使用 IFormattable 接口实现格式化输出

IFormattable接口帮助类型实现了多样式的格式化输出。IFormattable 的ToString方法接受一个代表格式的字符串参数,通过对这个参数的分析来进行格式化输出。另外,IFormattable.ToString方法接受一个IFormatProvider类型的参数,以允许类型的使用者提供格式化的方法。
16
2020
04

如何自定义序列化和反序列化的过程

通过实现 ISerializable 接口中的 GetObjectData 方法可以实现自定义的序列化,而通过添加带有SerializationInfo 和StreamingContext的参数的构造方法可以自定义反序列化的过程。
16
2020
04

Serializable 特性有何作用

通过为类型添加Serialization特性,可以使对象申明为可被序列化,也即是可被诸如BinaryFormmater等类型的对象序列化和反序列化。
16
2020
04

解释泛型的基本原理

泛型类似C++中的模板,允许程序员定义更通用的类型和算法,并且在具体使用时再生成具体的封闭类型。所有带泛型参数的类型都是一个开放式类型,它不能被实例化,但具备所有封闭类型的其他特性,本质上,它和封闭类型没有区别。
16
2020
04

Int[]是引用类型还是值类型

数组类型是一族类型,它们都继承自 System.Array,而System.Array又继承自System.Object。所有的数组类型都是引用类型。  
16
2020
04

在 C#中如何声明一个类不能被继承

C#中通过关键字:sealed可以申明一个类型不可被继承,设计中应该为所有不被作为基类的类型添加sealed关键字,以避免各种来自继承的易产生的错误。
16
2020
04

简述 C#中重写、重载和隐藏的概念

重写是指用 override 关键字重新实现基类中的虚方法,在运行的过程中,无论通过哪个类型的引用,真正对象类型的方法将被调用。隐藏是指用 new关键字重新实现基类中的方法,在运行的过程中通过引用的类型判断应该调用哪个类型的方法。重载是指多个方法共享同一个名字并且拥有相同的返回值,但是却可以拥有不同的参数列表。
16
2020
04

.NET中GC 的运行机制

垃圾回收是指收集释放托管堆上不再被使用的对象内存。其过程基本包括:通过算法找到不再被使用的对象、移动对象使所有仍被使用的对象紧靠托管堆的一边和调整各个状态变量。 垃圾回收的运行成本较高,对性能的影响较大。程序员在编写.NET 代码时,应该避免不必要的内存分配,尽量减少或避免使用 GC.Collect来执行垃圾回收。
16
2020
04

简述.NET中堆栈和堆的特点和差异

.NET 的程序在进程内存中分配出堆栈、托管堆和非托管堆。所有的值类型对象和引用类型对象的引用都分配在堆栈上,堆栈根据对象的生存周期来依次分配和释放,堆栈根据一个指向栈尾的指针来分配内存,效率较高。 .NET 所有引用类型对象分配在托管堆上,托管堆连续分配内存,并且受.NET 的垃圾收集机制管理,受托管堆的内存分配和释放涉及复杂的内存管理,效率相对于堆栈来说低地多。 需要分配堆内存的非托管类型将被分配在非托管堆上,非托管堆不受.NET 垃圾收集机制管理,内存块完全由程序员手动申请和释放
16
2020
04

C#中string 和String 有什么区别

String 和 string 是同一个类型的两个名字,相同情况还有 Object 和 object。除了名称之外,两者没有任何区别。 
16
2020
04

值类型和引用类型的区别

所有继承自System.ValueType 的类型是值类型,而其他类型都是引用类型。值类型的赋值会产生一个新的数据副本,所以每个值类型都拥有一个数据副本,而引用类型的赋值则是赋值引用。值类型的对象分配在堆栈上,而引用类型的对象分配在堆上。当比较两个值类型时,进行的是内容比较,而比较两个引用类型时,进行的是引用比较。 
16
2020
04

怎么把程序集放入 GAC 中

GAC是一个具有特定目录结构的文件夹,所有强签名的程序集都可以被放入GAC中。可以通过.NET Framework自带的assembly viewer来简单地拖动添加一个程序集到 GAC 中,也可以利用诸如 gacutil.exe等工具使用命令行来添加。总之,任何方法归根结底,都是根据 GAC 的规范和程序集本身的特性,在GAC目录下建立相应的子目录结构。
16
2020
04

JIT是如何工作的

JIT 引擎在编译中间代码之前,会寻找方法的本机机器代码缓存并且判断其是否可用,如果可用则直接加载,如果不可用,JIT 引擎会查找类型中的方法存根,找到该中间代码并且进行编译。
16
2020
04

什么是 CTS、CLS 和CLR

公共语言运行库(CLR)是一个CLI 的一个实现,包含了.NET 运行引擎和符合 CLI 的类库。 通用类型系统(CTS)包含在微软公司提交的 CLI 规范,定义了一个可以在 CLR 上运行的类型规范。 公共语言规范是 CTS的一个子集,定义了所有面向.NET 的程序所需要符合的最小规范集。 
16
2020
04

ip

111.198.169.114|113.45.38.45
16
2020
04

行内元素有哪些?块级元素有哪些? 空(void)元素有那些?

首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。(1)行内元素有:a b span img input select strong(强调的语气) (2)块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p(3)常见的空元素:    <br&
16
2020
04

HTML5 为什么只需要写 !DOCTYPE HTML?

HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行); 而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
16
2020
04

Doctype作用?标准模式与兼容模式各有什么区别?

1.声明位于HTML文档中的第一行,处于 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。2.标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
16
2020
04

为什么将Jenkins与Selenium一起使用?

在Jenkins中运行Selenium测试允许您在每次软件更改时运行测试,并在测试通过时将软件部署到新环境中。 Jenkins可以安排您的测试在特定时间运行。
16
2020
04

在Jenkins中持续集成是什么?

持续集成是一个将所有开发工作尽早集成的过程。 生成的工件会自动创建和测试。 此过程允许尽早发现错误。 Jenkins是一种流行的开源工具,可以执行持续集成和构建自动化。
16
2020
04

Hudson 和 Jenkins 有什么区别?

Jenkins是新的Hudson。 因为整个开发社区都移至Jenkins,所以它实际上更像是重命名,而不是分叉。 (甲骨文正坐在角落里抱着他们的“Hudson”,但现在这只是个无灵魂的项目。) 简而言之,Jenkins CI是领先的开源持续集成服务器。
16
2020
04

Maven是什么?Jenkins是什么?

Maven是一个构建工具,简而言之是ant的继承者。它有助于构建和版本控制。 但是,Jenkins是持续集成系统,其中maven用于构建。 Jenkins可用于自动化部署过程。
16
2020
04

为什么使用Jenkins?

Jenkins是一种使用Java编程语言编写的开源持续集成软件工具,用于实时测试和报告较大代码库中的孤立更改。 Jenkins软件使开发人员能够快速找到并解决代码库中的缺陷,并自动进行构建测试。
16
2020
04

Jenkins是什么?

Jenkins是一个开源自动化服务器。 Jenkins是用Java开发的持续集成工具。 Jenkins通过持续集成并促进持续交付的技术方面,帮助实现软件开发过程中非人为部分的自动化。 Jenkins是一个开源软件;Jenkins是一个自动化服务器;Jenkins可以帮助自动化软件开发过程;Jenkins可以通过持续集成实现流程自动化,并促进持续交付的技术方面;Jenkins开发的Jenkins是名为Hudson的项目的分支;Jenkins许可证:MIT;;Jenkins用Java编写;详细答案&
15
2020
04

容器与主机之间的数据拷贝命令是?

docker cp 命令用于容器与主机之间的数据拷贝主机到容器:docker cp /www 96f7f14e99ab:/www/容器到主机:docker cp 96f7f14e99ab:/www /tmp/
15
2020
04

进入容器的方法有哪些?

1、使用 docker attach 命令2、使用 exec 命令,例如docker exec -i -t 784fd3b294d7 /bin/bash
15
2020
04

启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令是?

docker run -d -P --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx
15
2020
04

如何列出可运行的容器?

docker ps
15
2020
04

jenkins怎么备份恢复

只需要拷贝主home下面的 .jenkins打个包,下次要恢复就用这个覆盖,所有的东西就都一模一样了。其实就是配置的东西都在这里面,插件的话有个Plugin的文件夹下面就是所有的插件的东西。
15
2020
04

jenkins你都用了哪些插件?

比如:ssh remote hosts  这个可以在远程服务器上面执行脚本。Role Strategy Plugin 用来精细化管理权限。SCM: 除CVS和Subversion外需要实现与源代码控制系统支持的插件。 3 L1 O# q2 R& _+ U3 BTriggers: 事件监听并触发构建的插件。例如,URL改变触发器将监控一个URL;当地址内容发生改变,这个触发器就将执行一次作业。Build tools: 实现额外构建工具的插件,如MSBuild和Rake。如果您想在
15
2020
04

什么是Ingress网络,它是如何工作的?

Ingress网络是一组规则,充当Kubernetes集群的入口点。这允许入站连接,可以将其配置为通过可访问的URL,负载平衡流量或通过提供基于名称的虚拟主机从外部提供服务。因此,Ingress是一个API对象,通常通过HTTP管理集群中服务的外部访问,是暴露服务的最有效方式。现在,让我以一个例子向您解释Ingress网络的工作。有2个节点具有带有Linux桥接器的pod和根网络命名空间。除此之外,还有一个名为flannel0(网络插件)的新虚拟以太网设备被添加到根网络中。现在,假设我们希望数据
15
2020
04

你对Kubernetes的负载均衡器有什么了解?

负载均衡器是暴露服务的最常见和标准方式之一。根据工作环境使用两种类型的负载均衡器,即内部负载均衡器或外部负载均衡器。内部负载均衡器自动平衡负载并使用所需配置分配容器,而外部负载均衡器将流量从外部负载引导至后端容器。
15
2020
04

Kubernetes有哪些不同类型的服务?

以下是使用的不同类型的服务:
15
2020
04

什么是ETCD?

Etcd是用Go编程语言编写的,是一个分布式键值存储,用于协调分布式工作。因此,Etcd存储Kubernetes集群的配置数据,表示在任何给定时间点的集群状态。
15
2020
04

你能简要介绍一下Kubernetes控制管理器吗?

多个控制器进程在主节点上运行,但是一起编译为单个进程运行,即Kubernetes控制器管理器。因此,Controller Manager是一个嵌入控制器并执行命名空间创建和垃圾收集的守护程序。它拥有责任并与API服务器通信以管理端点。因此,主节点上运行的不同类型的控制器管理器是:
15
2020
04

kube-apiserver和kube-scheduler的作用是什么?

kube -apiserver遵循横向扩展架构,是主节点控制面板的前端。这将公开Kubernetes主节点组件的所有API,并负责在Kubernetes节点和Kubernetes主组件之间建立通信。kube-scheduler负责工作节点上工作负载的分配和管理。因此,它根据资源需求选择最合适的节点来运行未调度的pod,并跟踪资源利用率。它确保不在已满的节点上调度工作负载。
15
2020
04

您能否介绍一下Kubernetes中主节点的工作情况?

Kubernetes master控制容器存在的节点和节点内部。现在,这些单独的容器包含在容器内部和每个容器内部,您可以根据配置和要求拥有不同数量的容器。因此,如果必须部署pod,则可以使用用户界面或命令行界面部署它们。然后,在节点上调度这些pod,并根据资源需求,将pod分配给这些节点。kube-apiserver确保在Kubernetes节点和主组件之间建立通信。
15
2020
04

你对Kube-proxy有什么了解?

Kube-proxy可以在每个节点上运行,并且可以跨后端网络服务进行简单的TCP / UDP数据包转发。基本上,它是一个网络代理,它反映了每个节点上Kubernetes API中配置的服务。因此,Docker可链接的兼容环境变量提供由代理打开的群集IP和端口。
15
2020
04

Kubernetes Architecture的不同组件有哪些?

Kubernetes Architecture主要有两个组件 - 主节点和工作节点。如下图所示,master和worker节点中包含许多内置组件。主节点具有kube-controller-manager,kube-apiserver,kube-scheduler等。而工作节点具有在每个节点上运行的kubelet和kube-proxy。
15
2020
04

你对Kubernetes的一个节点有什么了解?

15
2020
04

什么是Kubelet?

这是一个代理服务,它在每个节点上运行,并使从服务器与主服务器通信。因此,Kubelet处理PodSpec中提供给它的容器的描述,并确保PodSpec中描述的容器运行正常。
15
2020
04

什么是Kubectl?

Kubectl是一个平台,您可以使用该平台将命令传递给集群。因此,它基本上为CLI提供了针对Kubernetes集群运行命令的方法,以及创建和管理Kubernetes组件的各种方法。
15
2020
04

什么是Minikube?

Minikube是一种工具,可以在本地轻松运行Kubernetes。这将在虚拟机中运行单节点Kubernetes群集。
15
2020
04

什么是Heapster?

Heapster是由每个节点上运行的Kubelet提供的集群范围的数据聚合器。此容器管理工具在Kubernetes集群上本机支持,并作为pod运行,就像集群中的任何其他pod一样。因此,它基本上发现集群中的所有节点,并通过机上Kubernetes代理查询集群中Kubernetes节点的使用信息。
15
2020
04

什么是Google容器引擎?

Google Container Engine(GKE)是Docker容器和集群的开源管理平台。这个基于Kubernetes的引擎仅支持在Google的公共云服务中运行的群集。
15
2020
04

您对Kubernetes的集群了解多少?

Kubernetes背后的基础是我们可以实施所需的状态管理,我的意思是我们可以提供特定配置的集群服务,并且集群服务将在基础架构中运行并运行该配置。因此,正如您在上图中所看到的,部署文件将具有提供给集群服务所需的所有配置。现在,部署文件将被提供给API,然后由集群服务决定如何在环境中安排这些pod,并确保正确运行的pod数量。因此,位于服务前面的API,工作节点和节点运行的Kubelet进程,共同构成了Kubernetes集群。
15
2020
04

Kubernetes如何简化容器化部署?

由于典型应用程序将具有跨多个主机运行的容器集群,因此所有这些容器都需要相互通信。因此,要做到这一点,你需要一些能够负载平衡,扩展和监控容器的东西。由于Kubernetes与云无关并且可以在任何公共/私有提供商上运行,因此必须是您简化容器化部署的选择。
15
2020
04

Kubernetes有什么特点?

Kubernetes的功能如下:
15
2020
04

Container Orchestration需要什么?

考虑到你有5-6个微服务用于执行各种任务的单个应用程序,所有这些微服务都放在容器中。现在,为了确保这些容器彼此通信,我们需要容器编排。正如您在上图中所看到的,在没有使用容器编排的情况下,还存在许多挑战。因此,为了克服这些挑战,容器编排就到位了。
15
2020
04

什么是Container Orchestration?

考虑一个应用程序有5-6个微服务的场景。现在,这些微服务被放在单独的容器中,但如果没有容器编排就无法进行通信。因此,由于编排意味着所有乐器在音乐中和谐共处,所以类似的容器编排意味着各个容器中的所有服务协同工作以满足单个服务器的需求。
15
2020
04

在主机和容器上部署应用程序有什么区别?

请参考上图。左侧架构表示在主机上部署应用程序。因此,这种架构将具有操作系统,然后操作系统将具有内核,该内核将在应用程序所需的操作系统上安装各种库。因此,在这种框架中,您可以拥有n个应用程序,并且所有应用程序将共享该操作系统中存在的库,而在容器中部署应用程序时,体系结构则略有不同。这种架构将有一个内核,这是唯一一个在所有应用程序之间唯一共同的东西。因此,如果有一个需要Java的特定应用程序,那么我们将获得访问Java的特定应用程序,如果有另一个需要Python的应用程序,则只有该特定应用程序才能访
15
2020
04

什么是Kubernetes?

Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡。作为Google的创意之作,它提供了出色的社区,并与所有云提供商合作。因此,我们可以说Kubernetes不是一个容器化平台,而是一个多容器管理解决方案。
15
2020
04

Kubernetes与Docker Swarm的区别如何?

15
2020
04

当你项目中同时使用Kotlin和Java,你是如何保证空指针问题的?

首先,Kotlin本身就不存在空指针问题,而如果你在Kotlin中去调用Java某个类的方法的时候,这个方法最好使用注解的方式来避免返回空指针。
15
2020
04

Kotlin跟Java比,kotlin具有哪些优势?

Kotlin语言简练,而且Kotlin里面可以没有空指针问题,在Android中使用Java就会存在很多令人头大的空指针问题。
15
2020
04

Kotlin的环境搭建

1.Android Studio安装Kotlin插件。2.编写ActivityKotlin进行测试。3.Kotlin会自动配置。
15
2020
04

Kotlin是什么?

1.Kotlin是一种基于JVM的编程语言。2.实际上它是对Java的一种扩展。3.Kotlin支持函数式编程。4.Kotlin类和Java类的互相调用。
14
2020
04

内置 filter

ng 内置的 filter 有九种:date(日期)currency(货币)limitTo(限制数组或字符串长度)orderBy(排序)lowercase(小写)uppercase(大写)number(格式化数字,加上千位分隔符,并接收参数限定小数点位数)filter(处理一个数组,过滤出含有某个子串的元素)json(格式化 json 对象)filter 有两种使用方法,一种是直接在页面里:<p>{{now | date : 'yyyy-MM-dd'}}</p&
14
2020
04

{{now | 'yyyy-MM-dd'}} 这种表达式里面,竖线和后面的参数通过什么方式可以自定义?

filter,格式化数据,接收一个输入,按某规则处理,返回处理结果。
14
2020
04

ng-click 中写的表达式,能使用 JS 原生对象上的方法吗?

不止是 ng-click 中的表达式,只要是在页面中,都不能直接调用原生的 JS 方法,因为这些并不存在于与页面对应的 Controller 的 $scope 中。举个栗子:<p>{{parseInt(55.66)}}<p>会发现,什么也没有显示。但如果在 $scope 中添加了这个函数:$scope.parseInt = function(x){  return parseInt(x);}这样自然是没什么问题了。对于这种需求,使用一个 filter 或许是不错
14
2020
04

ng-if 跟 ng-show/hide 的区别有哪些?

第一点区别是, ng-if 在后面表达式为 true 的时候才创建这个 dom 节点, ng-show 是初始时就创建了,用 display:block 和 display:none 来控制显示和不显示。第二点区别是, ng-if 会(隐式地)产生新作用域, ng-switch 、 ng-include 等会动态创建一块界面的也是如此。这样会导致,在 ng-if 中用基本变量绑定 ng-model ,并在外层 div 中把此 model 绑定给另一个显示区域,内层改变时,外层不会同步改变,因为此
14
2020
04

在写controlloer逻辑的时候 你需要注意什么?

简化代码(这个是所有开发人员都要具备的)坚决不能操作dom节点 这个时候可能会问 为什么不能啊你的回答是:DOM操作只能出现在指令(directive)中。最不应该出现的位置就是服务(service)中。Angular倡导以测试驱动开发,在service或者controller中出现了DOM操作,那么也就意味着的测试是无法通过的。当然,这只是一点,重要的是使用Angular的其中一个好处是啥,那就是双向数据绑定,这样就能专注于处理业务逻辑,无需关系一堆堆的DOM操作。如果在Angular的代码中
14
2020
04

ng-repeat迭代数组的时候,如果数组中有相同值,会有什么问题,如何解决?

会提示 Duplicates in a repeater are not allowed. 加 track by $index 可解决。当然,也可以 trace by 任何一个普通的值,只要能唯一性标识数组中的每一项即可(建立 dom 和数据之间的关联)。
14
2020
04

ng-if 跟 ng-show/hide的区别有哪些?

ng-if 在后面表达式为 true 的时候才创建这个 dom 节点,ng-show 是初始时就创建了,用 display:block 和 display:none 来控制显示和不显示。ng-if 会(隐式地)产生新作用域,ng-switch 、 ng-include 等会动态创建一块界面的也是如此。
14
2020
04

factory 和 service,provider是什么关系?

factory 把 service 的方法和数据放在一个对象里,并返回这个对象;service 通过构造函数方式创建 service,返回一个实例化对象;provider 创建一个可通过 config 配置的 service。从底层实现上来看,service 调用了 factory,返回其实例;factory 调用了 provider,将其定义的内容放在 $get 中返回。factory 和 service 功能类似,只不过 factory 是普通 function,可以返回任何东西(retur
14
2020
04

angular 核心?

AngularJS是为了克服HTML在构建应用上的不足而设计的。 AngularJS有着诸多特性,最为核心的是:MVC模块化自动化双向数据绑定语义化标签、依赖注入等等
14
2020
04

angularjs 是 mvc 还是 mvvm 框架?

首先阐述下你对mvc和mvvm的理解首先为什么我们会需要MVC?因为随着代码规模越来越大,切分职责是大势所趋,还有为了后期维护方便,修改一块功能不影响其他功能。还有为了复用,因为很多逻辑是一样的。而MVC只是手段,终极目标是模块化和复用。mvvm的优点:低耦合:View可以独立于Model变化和修改,同一个ViewModel可以被多个View复用;并且可以做到View和Model的变化互不影响可重用性:可以把一些视图的逻辑放在ViewModel,让多个View复用独立开发:开发人员可以专注与业务
14
2020
04

Web Storage提供了两种在客户端存储数据的方法,即localStorage和sessionStorage。

localStorage是一种没有时间限制的数据存储方式,可以将数据保存在客户端硬盘或其他存储器,存储时间可以是一天、两天、几周或几年,关闭浏览器里面的数据不会消失,当再次打开浏览器依然可以访问这些数据。localStorage用于持久化的本地存储,除非自动删除数据,否则数据永远不会过期。sessionStorage指的是针对一个session的数据存储,即将数据保存在session中。web中session指的是用户在浏览某个网站时,从进入网站到关闭浏览器所经过的这段时间,可以称为用户与浏览器
14
2020
04

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗   考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能   考虑到减轻服务器性能方面,应当使用COOKIE。4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。5、所以个人建议:&nbs
14
2020
04

http协议get和post的区别

1. get是从服务器上获取数据,post是向服务器传送数据。2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。4. g
14
2020
04

一次HTTP操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。如果在以上
14
2020
04

http全称

超文本协议传输
14
2020
04

常用的HTTP方法有哪些?

 GET:用于请求访问已经被URL(统一资源标识符)识别的资源,可以通过URL传参给服务器。  POST:用于传输信息给服务器,主要功能与Get方法类似,但一般推荐POST方式。  PUT:传输文件,报文主体包含文件内容,保存到对应URL位置。  HEAD:获取报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URL是否有效。  DELET:删除文件,与PUT方法相反,删除对应URL位置的文件。  OPTIONS:查询相应UR
14
2020
04

创建ajax的过程:

(1)创建异步对象(2)创建一个心得http请求,并指定该http请求的方法URL及验证信息(3)设置响应http请求状态变化的函数(4)发送http请求(5)获取异步调用并返回的数据(6)使用Javascript和Dom实现局部刷新 
14
2020
04

ajax的缺点

1)ajax不支持浏览器back按钮2)安全问题ajax暴露了与服务器交互的细节3)对搜索引擎的支持比较弱4)破坏了程序的异常机制七:同步和异步的区别同步:就是按照顺序执行异步:可以任意执行
14
2020
04

get和post的区别?何时使用post?

get一般用来进行查询操作,URL地址有长度限制,请求的参数都暴露在URL地址当中,如果传递中文参数,需要自己进行编码操作,安全性较低。post:请求方式主要用来提交数据,没有数据长度的限制,提交的数据内容存在于http请求体中,数据不会暴露在URL中在以下情况下,使用post请求:1)无法使用缓存文件(更新服务器上的文件或数据库)2)向服务器发送大量数据(post没有数据量限制)3)发送包含未知字符的用户输入时,post比get更稳定也更可靠
14
2020
04

解释jsonp的原理,以及为什么不是真正的ajax

jsonp不是一种数据格式,而json是一种数据格式,jsonp是用来解决跨域获取数据的一种解决方案,具体是通过动态创建script变迁,然后通过标签的src属性获取js文件的js脚本,该脚本的内容是一个函数调用,参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是ajax技术。
14
2020
04

如何解决跨域问题

ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。
14
2020
04

如何创建一个ajax?

1)定义请求对象            var xhr = new XMLHttpRequest()2)准备发送网络请求            第一个参数dataType: post get            第二个参数是后台请求地址           
14
2020
04

ajax是什么?

ajax全称是asynchronous JavaScript and xml,主要用来实现客户端的异步通信效果,实现页面的局部刷新ajax就是进行http请求
14
2020
04

对象的原型链组成?

原型链:   function A() {};   const a = new A();   a.__proto__===A.prototype?console.log('true'):console.log('false');//true   console.log(A.prototype); // {constructor:f}   A.prototype.ge
14
2020
04

什么是__proto__?

_proto_是浏览器内部的属性,并非js标准属性。(一般我们不会直接操作它)每个对象都有_proto_,且指向构造函数的prototype。(非常重要,但是null和undefined没有_proto_)第二点注意,下面两个例子都返回true。1. function F() {}; const f = new F(); f.__proto__ === F.prototype?console.log('true'):console.log('
14
2020
04

将方法设置在prototype上和设置在构造函数的this上有什么区别?

 function A() {};    A.prototype.get = () => {        console.log('我是A');    } function B() {        this.get = () => {            conso
14
2020
04

什么是prototype?

prototype就是原型对象,它是函数所独有的,它包含了一个函数(类)所有的实例共享的属性和方法。function A() {};A.prototype.get=()=>{    console.log('我是get方法');}var a1 = new A();a1.get(); // 我是get方法var a2= new A();a2.get(); // 我是get方法a1和a2都是A的实例,所以他们都有A的原型对象上的get方法属性。
14
2020
04

如何判断this的指向

默认情况(谁的方法就指向谁)显示绑定箭头函数严格模式第一种情况(谁的方法就指向谁)1、    var a = 2;    var obj = {      a:1,      getVal(){          console.log(this.a);       }    } 
14
2020
04

this是什么?

this指代表当前环境的上下文。
14
2020
04

内置类型之间如何进行类型转换?

首先,我们先看几个例子。第一个例子:const a = 1;const b = '1';if(a==b){ console.log('true') //true}第二个例子:const x = 1+'1';console.log(x); // 11const y = 1*'1'; console.log(y); // 1第三个例子:const array = [];if (array) { consol
14
2020
04

如何判断是哪个类型?

Object.prototype.toString.call(),返回为[object Type]。现在我们来验证一下。Object.prototype.toString.call(NaN);// "[object Number]"Object.prototype.toString.call('1');// "[object String]"Object.prototype.toString.call([1,2]);// "[ob
14
2020
04

NaN是独立的一种类型吗?

不是。NaN是number类型。
14
2020
04

JS中有哪些内置类型?

7种。分别是boolean、number、string、object、undefined、null、symbol。
14
2020
04

什么是JavaScript?

JavaScript是客户端和服务器端脚本语言,可以插入到HTML页面中,并且是目前较热门的Web开发语言。同时,JavaScript也是面向对象编程语言。
13
2020
04

用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)

答案:wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。
13
2020
04

删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?

答案:rm rm -r rmdir
13
2020
04

复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?

答案:cp cp -r ????