首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java开发面试常见问题总结

存储过程只在创建进行编译,以后每次执行它都不会再重新编译.一般SQL语句每次执行都会编译.所以存储过程会大大提高数据库执行速度 2....平时经常用的: 模态框 表单,表单项 布局 栅格系统 37、JQuery页面加载完毕事件 为什么需要页面加载事件?...很多时候我们需要获取元素,但是必须等到该元素被加载后才能获取,我们可以把js代码放到该元素的后面,但是这样就会造成js在我们的body存在不好管理.所有页面加载完毕后,所有的元素当然已经加载完毕,一般获取元素做操作都要在页面加载完毕后...接下来,solr会将索引库中所有包含这些关键字的记录数做成n维向量.这个时候,solr会根据n维向量夹角的余弦的大小来判断相似度的大小.余弦越低,相似度越大,排名越靠前.反之,余弦越大,相似度越小...负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。 68、简单讲一下类加载机制? 类加载机制?

53320

webpack5高级

/src"), //只处理src下的文件,其他不处理 loader: "babel-loader", }, Cache 为什么 每次打包需要经过eslint检查和babel编译,速度比较慢...注意:依赖es module 怎么用 webpack生产环境默认开启,无需配置 babel 为什么 babel为编译的每个文件插入了辅助代码,使体积过大。...需要哪个文件加载哪个文件 怎么做 参考链接blog.csdn.net/goudexingwu… 实际开发多为单页面应用,在生产环境的optimization配置 //代码分割操作 splitChunks...:{ chunks:"all", //其他使用默认 } 测试 将main.js引入的文件注释,在点击按钮加载此文件。...扩展babel功能,编译es6语法 }; PWA 为什么 用户可以离线访问 是什么 渐进式网络应用程序,在离线应用程序能够正常运行。内部通过service workers实现。

25540
您找到你想要的搜索结果了吗?
是的
没有找到

IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

只要这三张有变化,都会重新遍历“消息”列表,进行数据更新,然后通知页面刷新。 这部分逻辑在主线程执行,耗时大概在 80ms 左右,如果“消息”列表多,数据库数据变更大,这部分的耗时还会增加。...我们还发现每次进入“消息”列表需要从数据库获取“消息”列表数据,加载更多时也会从数据库读取会话数据。...只要这三张有变化,都会重新遍历“消息”列表,进行数据更新,然后通知页面刷新。...Systrace 报告中出现大量的 CreateView,说明在复用 item 出现了问题,导致每次显示新的 item 需要重新创建。...这时候就需要在性能和模式上有所取舍,但是仔细一想,“消息”列表上面不同类型的聊天,布局基本是一致的,不同聊天类型仅仅在 UI 展示上有所不同,这些不同我们可以在 bindView 重新设置。

1.5K20

想不到大厂面试的“幂等”性,竟然如此简单!

通常数据库实现主要是利用数据库主键唯一约束+唯一索引的特性,如果主键唯一或者设置了复合唯一索引,在”插入“数据的时候就是幂等性操作。...ps:基本上面试,大厂都会被问到的问题,不要问我为什么?因为面试官喜欢问。...推荐使用 乐观锁实现幂等性 通俗地讲:它的心态就是很乐观,每次去拿数据的时候认为别人不会修改,所以不会上锁,但是在提交更新的时候会判断一下在此期间别人有没有去更新这个数据。...客户端每次进入表单页面可以优先申请一个唯一令牌存储本地,服务端存储令牌token(redis,文件,memcache都可) 每次发送请求可以在Headers头部带上当前这个token令牌 服务端验证...所以并不奇怪,大家也不要在面试遇到新的名词就内心慌乱,手心出汗、腿发抖、发冷汗,我们完全可以跟面试官聊,是否可以换一种方式来问这个问题;我相信大部分的面试官都能接受,顶多就认为你知识量不够广,不知道这些专业术语等等

61200

面试:第十二章:所有总结

②失效转移:若数据服务器集群任何一台服务器宕机,那么应用程序针对这台服务器的所有读写操作重新路由到其他服务器,保证数据访问不会失败。...悲观锁:总是假设最坏的情况,每次去拿数据的时候认为别人会修改,所以每次在拿数据的时候都会上锁,这样 别人想拿这个数据就会阻塞直到它拿到锁。...很多时候我们不可能每次更新数据便刷新页面(get请求),而是通过向后端请求相关数据,并通过无刷新加载的方式进行更新页面(post请求)。...Hashmap为什么线程不安全,如何让它线程安全 HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个重新将原数组的内容重新hash到新的扩容数组...消息和业务数据要在一个事务里提交,也就是说他们要在一个数据库里面。然后消息会经过MQ发送到消息的消费方。如果消息发送失败,会进行重试发送。 消息消费方,需要处理这个消息,并完成自己的业务逻辑。

1.4K40

面试:第二章:各种框架和中间件以及缓存数据库

理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么” ●谁依赖于谁:当然是应用程序依赖于IoC容器; ●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源; ●谁注入谁:很明显是...自定义类加载器 在运行期,目标加载前,将切面逻辑加到目标字节码里 可以对绝大部分类进行织入 代码如果使用了其他类加载器,则这些类将不会被织入 字节码转换 在运行期,所有类加载加载字节码前进行拦截...②失效转移:若数据服务器集群任何一台服务器宕机,那么应用程序针对这台服务器的所有读写操作重新路由到其他服务器,保证数据访问不会失败。...(2) 死锁避免:避免是指进程在每次申请资源判断这些操作是否安全,例如,使用银行家算法。死锁避免算 法的执行会增加系统的开销。...悲观锁:总是假设最坏的情况,每次去拿数据的时候认为别人会修改,所以每次在拿数据的时候都会上锁,这样 别人想拿这个数据就会阻塞直到它拿到锁。

42330

2023【腾讯】面试真题

悲观锁: 总是假设最坏的情况,每次去拿数据的时候认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。...乐观锁: 顾名思义,就是很乐观,每次去拿数据的时候认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。...分析:为什么会多次透传呢?不存在 一直为空,需要注意让缓存能够区分 KEY 不存在和查询到一个空。 解决办法:缓存空的 KEY,这样第一次不存在也会被加载会记录,下次拿到有这个KEY。...插入排序,O(n2),每次从未排好序的数据堆拿出一个数,插入到已排好序的数据队列的正确位置。 选择排序,O(n2),每次从未排好序的数据堆中找到最小的数,插入到已排好序的数据队列的头部。...索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新的速度,因为在执行这些写操作,还要操作索引文件。 27、I/O 模型有哪几种?

24720

面试:第三章:中级综合

使用 Spring Cloud Config 配置中心,这时需要在 bootstrap 配置文件添加连接到配置中心的配置属性来加载外部配置中心的配置信息; 一些固定的不能被覆盖的属性; 一些加密/解密的场景...问题原因: angularJS底层使用ajax,异步加载高亮信息返回给页面后,页面没有刷新,就直接显示返回的数据。此时会把所有的数据作为普通的文本数据进行加载。因此就没有高亮的效果。...Session也是昂贵的对象,每次使用新建和关闭,代价也非常高。...注意:要想使用or,又想让索引生效,只能将or条件的每个列加上索引 9.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引 10.如果mysql估计使用全扫描要比使用索引快...重新传递消息的情况 ActiveMQ在接收消息的Client有以下几种操作的时候,需要重新传递消息:  1:Client用了transactions(事务),且在session调用了rollback(

92130

雅虎前端优化的35条军规

在很多应用程序,用户能够一直等待取决于如何使用Ajax。 例如,在基于web的电子邮件客户端,用户为了寻找符合他们搜索标准的邮件消息,将会保持对Ajax请求返回结果的关注。...在IE,如果一个不可缓存的外部脚本被页面引入了两次,它会在页面加载产生两个HTTP请求。即使脚本是可缓存的,在用户重新加载页面也会产生额外的HTTP请求。...举个例子,如果脚本是用document.write插入页面内容的,就没办法再往下移了。还可能存在作用域问题,在多数情况下,这些问题都是可以解决的。...而且只要在同一个服务器上,每次请求它都会发送cookie,此外这个图片还会干扰下载顺序,例如在IE,当你在onload请求额外组件,将会先下载favicon。...记住终端用户80%到90%的响应时间花在下载页面组件上了:图片,样式,脚本,Flash等等,这是业绩黄金法则。 最好先分散静态内容,而不是一开始就重新设计应用程序结构。

1.5K50

高并发下如何防重?

拿到这个需求觉得太简单了,三下五除二就搞定。 我提供了一个复制商品的基础接口,给商城系统调用。 当时的流程图如下: 如果每次复制的商品数量不多,使用同步接口调用的方案问题也不大。 2....于是,出现了并发插入重复数据的问题。 为什么会出现这个问题呢? 4. 多线程消费 RocketMQ的消费者,为了性能考虑,默认是用多线程并发消费的,最大支持64个线程。...在所有的业务查询的地方,需要过滤掉已经删除的数据。 通过这种方式删除数据之后,数据任然还在,只是从逻辑上过滤了删除状态的数据而已。 其实对于这种逻辑删除的,是没法加唯一索引的。 为什么呢?...其中lockKey是由商品的name和model组合而成的,requestId是每次请求的唯一标识,以便于它每次都能正确得释放锁。...不过要求存在唯一索引或PRIMARY KEY,这样当这两个相同时,才会触发更新操作,否则是插入

1.3K71

攒了一个月的Android面试题及详细解答,年底准备起来,冲刺大厂单车变摩托!(上)

为什么多线程同时访问(读写)同个变量,会有并发问题? Java 内存模型规定了所有的变量存储在主内存,每条线程有自己的工作内存。...原子性:在一个操作,CPU 不可以在中途暂停然后再调度,即不被中断操作,要么执行完成,要么就不执行。 可见性:多个线程访问同一个变量,一个线程修改了这个变量的,其他线程能够立即看得到修改的。...第二范式就是要求要有主键,其他其他字段依赖于主键,因此第二范式只要记住主键约束就好了。...比如说有一个是学生,学生中有一个唯一的字段学号,那么学生的其他所有字段都可以根据这个学号字段去获取,依赖主键的意思也就是相关的意思,因为学号的是唯一的,因此就不会造成存储的信息对不上的问题...比如说有一个是学生,学生中有学号,姓名等字段,那如果要把他的系编号,系主任,系主任也存到这个学生,那就会造成数据大量的冗余,一是这些信息在系信息已存在,二是系中有1000个学生的话这些信息就要存

41420

前端性能优化

应该使用 computed,因为可以利用 computed 的缓存特性,避免每次获取值,都要重新计算; 当我们需要在数据变化时执行异步或开销较大的操作,应该使用 watch,使用 watch...如果这些 CSS 和 JS 需要加载和解析很久的话,那么页面就空白了。所以 JS 文件要放在底部,等 HTML 解析完了再加载 JS 文件。 那为什么 CSS 文件还要放在头部呢?...多个请求和响应在 TCP 连接可以乱序发送,到达目的地后再通过流 ID 重新组建。 首部压缩 HTTP2 提供了首部压缩功能。多请求请求,有很多消息头都是重复的。...HTTP/2 在客户端和服务器端使用“首部”来跟踪和存储之前发送的键-对,对于相同的数据,不再通过每次请求和响应发送。如果服务器收到了请求,它会照样创建一张。...当客户端接收到这个 HTML 页面,可以马上就开始渲染页面。与此同时,页面也会加载资源,当必要的资源加载完毕后,开始执行 new Vue() 开始实例化并接管页面

1.1K20

【Java面试】:第一章:高频面试

外围方法未开启事务,插入用户和用户角色的方法在自己的事务独立运行,外围方法异常不影响内部插入,所以两条记录新增成功。...这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些设置好了自己的回答,接收到其他的话再通知我回答,怎么样,酷吧。...; (6)将这些信息发送至消息队列; (7)重新消息队列获得该数据,重试操作; 订阅binlog程序在mysql中有现成的中间件叫canal,可以完成订阅binlog日志的功能。...这样的话, 当 Redis 重新启动程序就可以通过重新执行 AOF 文件的命令来达到重建数据集的目的。  ...针对消息消息生产丢失,可以采用重投机制,当程序检测到网络异常,小消息再次投到消息系统。但是当重新投递在情形二情况下,可能造成数据重复。

82130

【Java面试】第二章:P5级面试

外围方法未开启事务,插入用户和用户角色的方法在自己的事务独立运行,外围方法异常不影响内部插入,所以两条记录新增成功。...这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些设置好了自己的回答,接收到其他的话再通知我回答,怎么样,酷吧。...; (6)将这些信息发送至消息队列; (7)重新消息队列获得该数据,重试操作; 订阅binlog程序在mysql中有现成的中间件叫canal,可以完成订阅binlog日志的功能。...这样的话, 当 Redis 重新启动程序就可以通过重新执行 AOF 文件的命令来达到重建数据集的目的。...针对消息消息生产丢失,可以采用重投机制,当程序检测到网络异常,小消息再次投到消息系统。但是当重新投递在情形二情况下,可能造成数据重复。

73230

《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型

共享用户Session:用户重新刷新一次界面,可能需要访问一下数据进行重新登录,或者访问页面缓存Cookie,但是可以利用Redis将用户的Session集中管理,在这种模式只需要保证Redis的高可用...为什么是删除缓存,而不是更新缓存? 原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是数据库中直接取出来的。...其实删除缓存,而不是更新缓存,就是一个 Lazy 计算的思想,不要每次重新做复杂的计算,不管它会不会用到,而是让它到需要被使用的时候再重新计算。...像 Mybatis,Hibernate,都有懒加载思想。查询一个部门,部门带了一个员工的 List,没有必要说每次查询部门,里面的 1000 个员工的数据也同时查出来啊。...,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 Socket,会将 Socket 产生的事件放入队列中排队,事件分派器每次从队列取出一个事件,把该事件交给对应的事件处理器进行处理。

1K10

面试必备:2019年Java 最常见 200+ 面试题解析

page:代表与一个页面相关的对象和属性。 request:代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件;需要在页面显示的临时数据可以置于此作用域。...原理是攻击者往 Web 页面插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 cookie、破坏页面结构...因此当执行插入和更新语句,即执行写操作的时候需要锁定这个,所以会导致效率会降低。...悲观锁:每次去拿数据的时候认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。...在介绍双亲委派模型之前先说下类加载器。对于任意一个类,需要由加载它的类加载器和这个类本身一同确立在 JVM 的唯一性,每一个类加载器,都有一个独立的类名称空间。

47810

Java集合面试题&知识点总结(下篇)

加载因子的默认是 0.75,这个是在时间复杂度和空间复杂度之间进行权衡的结果。...在这个加载因子下,哈希冲突的概率和空间利用率都是可以接受的。这个是经过大量实践验证得出的,可以提供较好的性能。 问题 47. HashMap 是线程安全的吗?为什么?主要体现在哪些地方?...具体来说,当两个线程同时对同一个桶进行扩容操作,它们可能会获取到相同的节点引用,并试图将这些节点插入到新的哈希桶。...当试图访问这个环形链表,会导致无限循环,最终可能导致程序挂起。...每次插入新元素,或者访问已有元素(如果构造函数的 accessOrder 参数为 true),都会将元素移动到双向链表的尾部。

17320

前端监控究竟有多重要?

用户在每一个页面的停留时间 用户通过什么入口来访问该网页 用户在相应的页面触发的行为 网站的转化率 导航路径分析 统计这些数据是有意义的,我们可以清晰展示前端性能的表现,并依据这些监控结果来进一步优化前端性能...这些优化措施不仅可以提高转化率,因为快速加载的网站通常具有更高的转化率,还可以确保我们的网站在多种设备和浏览器上表现一致,以满足不同用户的需求。...**警告报警**:用于中等级别的问题,需要在短时间内处理,可以通过即时消息或邮件通知。 **信息报警**:用于一般信息和低优先级问题,通过邮件或即时消息通知。...然而,手动埋点的缺点包括: **工作量大**:需要在代码多次插入埋点代码,工程量较大。 **沟通成本高**:需要开发、产品和运营之间的频繁沟通,容易导致误差和延迟。...**更新迭代成本高**:每次有埋点更新或漏埋点需要重新发布应用程序,成本较高。 可视化埋点: 可视化埋点通过提供可视化界面,允许用户在不编写代码的情况下进行添加埋点。

46120

Java面试题

page:代表与一个页面相关的对象和属性。 request:代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件;需要在页面显示的临时数据可以置于此作用域。...原理是攻击者往 Web 页面插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 cookie、破坏页面结构...因此当执行插入和更新语句,即执行写操作的时候需要锁定这个,所以会导致效率会降低。...悲观锁:每次去拿数据的时候认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。...在介绍双亲委派模型之前先说下类加载器。对于任意一个类,需要由加载它的类加载器和这个类本身一同确立在 JVM 的唯一性,每一个类加载器,都有一个独立的类名称空间。

51741

Java面试题及答案大全(2023持续更新)

page:代表与一个页面相关的对象和属性。request:代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件;需要在页面显示的临时数据可以置于此作用域。...原理是攻击者往 Web 页面插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 cookie、破坏页面结构...因此当执行插入和更新语句,即执行写操作的时候需要锁定这个,所以会导致效率会降低。...悲观锁:每次去拿数据的时候认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻止,直到这个锁被释放。...在介绍双亲委派模型之前先说下类加载器。对于任意一个类,需要由加载它的类加载器和这个类本身一同确立在 JVM 的唯一性,每一个类加载器,都有一个独立的类名称空间。

19.8K54
领券