当前位置: 首页 > news >正文

做h5哪个网站好用怎么查网站找谁做的

做h5哪个网站好用,怎么查网站找谁做的,培训课,wordpress搜索引擎优化你好#xff0c;我是田哥 一位朋友节前去恒生面试#xff0c;其实面试问题大部分都是八股文#xff0c;但由于自己平时工作比较忙#xff0c;完全没有时间没有精力去看八股文#xff0c;导致面试结果不太理想#xff0c;HR说节后通知面试结果#xff08;估计是凉了… 你好我是田哥 一位朋友节前去恒生面试其实面试问题大部分都是八股文但由于自己平时工作比较忙完全没有时间没有精力去看八股文导致面试结果不太理想HR说节后通知面试结果估计是凉了。 以下是面试遇到的问题 自我介绍为什么要离职最近在做什么项目项目中用到了什么并发技术分布式锁实现方式有哪些你觉得哪种更好你们项目中用到了线程池那你说说线程池每个参数的含义线程池中的核心线程能被回收吗你们有做线程池监控吗如果让你做监控你会怎么做你们的拒绝策略用的是哪个你们线程池中线程数量是如何设置的你还知道哪些并发技术那你说说AQS是什么synchronized实现原理是什么String为什么是不可变的说一下你对final关键字的理解ThreadLocal使用场景知道哪些项目中有涉及到分库分表、分布式事务吗说说你对分库分表的理解你知道哪些分布式事务解决方案既然你对项目中SQL有做优化你知道SQL优化有哪些手段 以上是问题大家不妨自己先看看自己能回答多少如果觉得简单那请你出门右转。 正文 自我介绍 关于自我我之前有专门分享过一篇文章这里就不再赘述了请参考文章 Java后端面试复习规划表5万字 为什么要离职 以下是一些建议 诚实回答首先要诚实回答面试官的问题不要编造不实信息。面试官可能会通过其他渠道核实你的回答所以保持诚实是很重要的。不过如果真的没法说那还是得自己随机应变哈。积极原因可以用积极的原因回答为什么离职比如寻求新的挑战、个人职业发展、寻找更好的工作机会等。强调自己对新机会的追求和进步。专业发展强调个人的专业发展目标说明之前的工作对自己的成长有所帮助但已经达到一个瓶颈所以希望找到更好的发展机会。公司环境可以提及公司环境、文化或者管理层变化等因素对个人职业发展的影响。但尽量避免批评前公司保持中立和客观。综合因素可以综合以上因素或者其他个人原因如家庭变化、搬家等来解释为什么离职。避免消极原因避免提及工资、同事冲突、工作压力等消极原因保持正面和专业。千万别说领导是傻X无法融入团队等。 总的来说回答为什么离职的问题时要坚持诚实和积极的态度突出个人的专业发展目标和对新机会的追求同时要避免提及消极原因保持中立和专业。这样能够展现出你对工作的认真态度和对未来发展的规划。 最近在做什么项目 换一种问法你觉得最有挑战的项目是哪个 在面试中之前建议你先梳理一下你的项目不要等到面试现场再去边说边梳理在面试中就会出现 我最近做的项目是xxx我在这个项目中主要负责xxxxx然后这个项目中xxxx业务是核心业务然后,。。。然后。。。 这是我面试这么多年遇到的介绍做多的模板各种语气词加起来都已经超过了项目介绍内容。 项目介绍一定要自己用心准备我们尽可能的给面试官制造一下好奇的话题。 在这个项目中我负责整体架构设计我是这个项目负责人我负责这个项目的核心业务项目中用到了分布式事务对项目组朋友的SQL进行优化其中有一项任务就是负责项目code review在项目开发过程中遇到了xxx、www、yyyy等问题 项目中用到了什么并发技术 先搞清楚并发技术有哪些 在项目中常常需要处理并发请求以提高系统的性能和响应速度。以下是一些常见的并发技术可以用于处理并发请求 多线程利用多线程技术可以让程序同时执行多个任务提高CPU利用率和系统性能。Java中的Thread类和Runnable接口可以用来创建和管理线程。线程池通过线程池可以提前创建一定数量的线程并维护这些线程避免频繁创建和销毁线程带来的开销提高系统的性能。并发集合类似ConcurrentHashMap、ConcurrentLinkedQueue等并发集合可以在多线程环境下安全地进行读写操作提供高效的并发访问。锁机制使用锁机制可以保护共享资源不被多个线程同时访问常见的锁包括synchronized关键字、ReentrantLock等。原子操作原子操作可以保证一系列操作的原子性不会被中断如Java中的AtomicInteger、AtomicReference等类。CAS算法Compare and Swap比较并交换算法是一种实现并发的一种技术可以通过原子方式进行更新操作。分布式锁在分布式系统中为了保护共享资源或避免重复操作可以使用分布式锁控制并发访问。消息队列消息队列可以作为并发处理的一种方式将任务异步放入消息队列中再由多个消费者来处理降低系统间的耦合度。缓存通过缓存技术可以减少对数据库等资源的频繁访问提高系统的并发能力和性能。 这里举了9个其实还可以有更多。 在实际面试中我们要依据自己的项目进行回答不要随便编造不然很容易露馅就算编制也得说出为什么要用这个技术以及使用后的效果。 对于普通项目而言最好说的就是线程池、消息队列、缓存就是这些技术在非分布式微服务项目中也可以被用上。 分布式锁实现方式有哪些 常见分布式锁实现方式有数据库、缓存、Zookeeper。 数据库实现可以在数据库中创建一个表利用数据库的事务特性和唯一性约束实现分布式锁。通过对这个表的操作来获取和释放锁。 缓存实现利用分布式缓存存储锁的信息比如Redis也可以利用其特性实现分布式锁比如使用SET命令和NXNot eXists参数实现互斥锁也可以使用Redisson实现的锁机制。 ZooKeeper实现ZooKeeper是一个可靠的分布式协调服务可以利用其临时节点和顺序节点特性实现分布式锁。可以通过创建临时顺序节点来实现锁竞争。 你觉得哪种更好 其实没有谁是最好的只有相对最适合我们的具体项目业务场景。 数据库因为受到其性能的影响所以在实际项目中基本上很少使用。项目中大多数都偏向于Redis和Zookeeper从性能方面来讲Redis更好从一致性方面来说Zookeeper更好。 我们在实际项目中不管是考虑技术本身的问题还要考虑项目技术架构比如我们基本上不会因为一个分布式锁而去把Zookeeper加入进来更多是考虑性价比如果项目中有redis了那我们就没有必要再去刻意引入Zookeeper。并且在实际项目大部分都是采用Redis来实现分布式锁。 你们项目中用到了线程池那你说说线程池每个参数的含义 在Java中线程池通常由ThreadPoolExecutor类实现。ThreadPoolExecutor类的构造方法中包含了一些参数以下是线程池中常见参数的含义 corePoolSize核心线程数。表示线程池中保持存活的线程数量即使线程处于空闲状态也不会被销毁。当接收到新的任务时优先使用核心线程来处理任务。maximumPoolSize最大线程数。表示线程池中允许存在的最大线程数量。当任务队列已满且核心线程数已经达到上限时会创建新的线程来处理任务但不会超过最大线程数。keepAliveTime线程空闲时间。表示当线程池中的线程数量大于核心线程数时多余的空闲线程的存活时间。超过这个时间多余的空闲线程会被销毁直到线程数不超过核心线程数。unit时间单位。表示keepAliveTime的时间单位可以是TimeUnit.SECONDS、TimeUnit.MILLISECONDS等。workQueue工作队列。表示存放等待执行任务的阻塞队列当线程池的线程数量达到corePoolSize时新的任务会被加入到工作队列中等待执行。threadFactory线程工厂。用来创建新的线程可以自定义线程的创建方式比如指定线程名称、优先级等。handler拒绝策略。当线程池中的线程已经达到最大线程数且工作队列已满无法继续接收新任务时会触发拒绝策略来处理这些任务。常见的拒绝策略包括AbortPolicy、DiscardPolicy、DiscardOldestPolicy和CallerRunsPolicy等。 通过合理调整这些参数可以根据实际情况来优化线程池的性能和资源利用率提高应用的并发处理能力。 线程池中的线程能被回收吗 线程池中有两种线程核心线程和临时线程最大线程减去核心线程的部分 临时线程如果处于空闲状态并到一定时间后会被清理回收。 核心线程数默认是不会被回收的如果需要回收核心线程数需要调用下面的方法allowCoreThreadTimeOut 该值默认为 false。设置为true就会回收核心线程 你们有做线程池监控吗 没有 很多项目中真的是没有对线程池做监控不知道你们项目中是否有做监控。 如果让你做监控你会怎么做 我们可以用一个 printStats 方法实现了最简陋的监控每秒输出一次线程池的基本内部信息 getPoolSize()获取线程池的线程数量。如果线程池不销毁的话线程池里的线程不会自动销毁。getActiveCount()获取活跃的线程数。getCompletedTaskCount()获取线程池在运行过程中已完成的任务数量。getQueue().size()获取队列中还有多少积压任务。 也可以参考美团线程池实践 对线程池参数动态化管理增加监控、报警功能。 50000多字线程池源码详解建议收藏 你们的拒绝策略用的是哪个默认是什么 没注意好像是用的默认。 线程池中主要有4种拒绝策略 AbortPolicy直接丢弃任务抛出异常这是默认策略CallerRunsPolicy只用调用者所在的线程来处理任务DiscardOldestPolicy丢弃等待队列中最旧的任务并执行当前任务DiscardPolicy直接丢弃任务也不抛出异常 我们也可以根据自己项目实际情况来自定义拒绝策略。 你们线程池中线程数量是如何设置的 这个没注意具体是怎么设置的因为是我们领导做的不过我知道一些理论知识。 在使用线程池时会考虑线程数如何设置设置多少不可能随便胡乱设置。通常会按照任务类型最线程池中的线程做一个初步的评估业务类通常分为两总CPU密集型和IO密集型。 密集型时任务可以少配置线程数大概和机器的cpu核数相当这样可以使得每个线 程都在执行任务。IO密集型时大部分线程都阻塞故需要多配置线程数2*cpu核数。 可以先按照理论值进行测试再通过多次的压测找到一个相对最优的点。 synchronized实现原理是什么 synchronized实现原理主要是通过对象头中的标记位Mark Word以及Monitor对象来实现的。下面是synchronized实现原理的简要说明 对象头标记位每个Java对象在内存中都有一个对象头Header对象头中包含了对象的元数据信息其中就包括一个用于表示锁状态的标记位Mark Word。偏向锁初始时对象头中的锁状态为无锁状态01当一个线程第一次访问同步代码块时会尝试获取偏向锁将对象头中的锁状态改为偏向锁状态00。偏向锁会标记获取偏向锁的线程ID并记录获取锁的线程。轻量级锁如果有多个线程竞争同一个对象的锁即发生锁的竞争偏向锁会升级为轻量级锁。此时JVM会尝试使用CASCompare and Swap操作来尝试获取锁将对象头中的锁标记为轻量级锁状态。如果CAS操作失败表示有多个线程同时尝试获取锁JVM会将锁升级为重量级锁。重量级锁如果轻量级锁也无法满足多个线程对同一个对象的锁竞争JVM会将锁升级为重量级锁。此时会使用基于操作系统的互斥量Mutex来实现多个线程之间的互斥访问。Monitor对象每个Java对象都会有一个关联的Monitor对象用于实现重量级锁和进行线程的等待和唤醒操作。 面试中可能会问一些synchronized的使用修饰普通方法、修饰静态方法以及同步带模块的区别优缺点还有就是所得范围要清楚。 说说什么AQS? AQS是AbstractQueuedSynchronizer  的简称AQS 是一个用于构建锁和同步器的框架它提供了一种基于队列的同步器实现方式。通过AQS可以相对容易地实现各种锁机制如ReentrantLock和Semaphore等以及自定义的同步器。 核心原理 使用一个volatile类型的int成员变量state来表示同步状态使用CASCompareAndSwap操作来修改state的值。使用一个双向链表FIFO队列来保存等待线程保证线程获取锁的公平性。提供了acquire和release等抽象方法可以通过继承AQS并实现这些方法来构建自定义的同步器。 String为什么是不可变的 这个可以参考我之前的文章和面试官吵起来了 说一下你对final关键字的理解 final关键字有多种用途主要包括以下方面 修饰常量定义常量时通常会使用final关键字表示该变量的值在初始化后不能被修改。例如 final int MAX_VALUE  100; 修饰类使用final修饰的类不能被继承即为最终类。例如 final class FinalClass {} 修饰方法使用final修饰的方法不能被子类重写即为最终方法。例如 public final void finalMethod() {} 修饰变量使用final修饰的变量表示初始化后不可再赋值但对象内容可以改变。例如 final ListInteger list  new ArrayList(); list.add(1); // 合法 list  new ArrayList(); // 非法 修饰参数使用final修饰方法参数表示该参数是只读的不能在方法内部被修改。例如 public void print(final String str) {System.out.println(str);// str  new; // 非法 } 使用final关键字的案例 线程安全常量在多线程环境下使用final关键字定义的常量在初始化后不可修改可以保证线程安全。例如 public class Constants {public static final int THREAD_COUNT  5; } 单例模式使用final关键字确保单例模式中的实例只被初始化一次。例如 public class Singleton {private static final Singleton instance  new Singleton();private Singleton() {} public static Singleton getInstance() {return instance;} } 性能优化在编译时final关键字可用于对代码进行更好的优化例如对方法进行内联替换减少方法调用开销。 安全性和可读性使用final关键字可以提升代码的安全性和可读性避免不必要的变量修改和类继承。 是不是让你长见识了大部分人回答都只会说修饰类修饰方法修饰字段的作用就结束了。 ThreadLocal使用场景知道哪些 下面举几个常见的使用场景 在spring事务中保证一个线程下一个事务的多个操作拿到的是一个Connection。在hiberate中管理session。在JDK8之前为了解决SimpleDateFormat的线程安全问题。获取当前登录用户上下文。临时保存权限数据。使用MDC保存日志信息。 理解其本质然后再结合业务场景。 项目中有涉及到分库分表、分布式事务吗 有就有没有的话编造需要慎重否则容易被坑。 说说你对分库分表的理解 分库分表是一种常见的数据库水平拆分方案通过将数据库数据按照某种规则分散存储在多个数据库实例或表中以提高数据库性能、扩展性和容量。以下是对分库分表的一些理解 水平拆分分库分表是一种水平拆分的数据库设计方式在水平拆分中数据根据某种规则如范围、哈希、取模等拆分到不同的库或表中达到分散存储、降低单节点存储压力的效果。解决瓶颈分库分表可以有效解决单库单表的数据量过大、QPS过高导致的性能瓶颈问题将数据分布到多个库、表中减轻了单一数据库的处理压力。提高并发分库分表可以提高系统的并发处理能力不同用户的数据被分散存储在不同的节点中避免了热点数据集中在同一节点导致的并发瓶颈。提高可用性通过水平拆分即使某个库或表出现故障其他库或表仍然可以正常运行提高了系统的可用性和容错能力。扩展性分库分表的设计可以方便系统进行扩展当系统负载增加时可以动态增加数据库实例或表从而实现系统的横向扩展。注意事项分库分表虽然提供了一种有效的数据库性能扩展方案但也带来了一些挑战比如跨库查询、分布式事务等问题需要额外的处理。 我们也可以使用分布式数据库比如TiDB。在实际项目中其实很少回去做真正的分库分表大部分项目可能会做一些分表但是分库确实不多。分库分表基本的都是在基于现有sql优化、表结构优化、硬件提升都无法满足的情况下才会考虑的。 你知道哪些分布式事务解决方案 以下是一些常见的分布式事务解决方案 两阶段提交Two-Phase Commit2PC是一种最基本的分布式事务协议通过协调者和参与者之间的两阶段协商来保证事务的一致性。然而2PC存在阻塞、单点故障、性能开销高等问题。 三阶段提交Three-Phase Commit3PC在2PC的基础上引入了准备阶段解决了2PC的某些问题但仍然无法完全解决所有问题。 补偿事务Compensating Transaction采用补偿事务的方式在业务处理失败后执行一系列的逆操作补偿操作来进行事务回滚保证数据的一致性。 本地消息表Local Message TableLMT在分布式事务中引入本地消息表将本地事务和消息发送操作绑定到一起保证本地事务和消息发送的原子性。 分布式消息队列借助分布式消息队列中间件来实现分布式事务将业务逻辑和消息发送放入同一个事务中实现最终一致性。 TCCTry-Confirm-CancelTCC是一种面向业务逻辑的分布式事务补偿机制通过Try阶段尝试执行事务操作、Confirm阶段确认执行、Cancel阶段取消操作以实现事务一致性。 Saga模式将一个大事务拆分成多个小事务每个小事务有自己的补偿操作通过一系列连续的小事务来实现分布式事务的一致性。 Seata阿里巴巴开源的全局事务解决方案支持分布式事务处理模式包括AT模式TCC、XA模式、SAGA模式等。 以上是一些常见的分布式事务解决方案每种解决方案都有自己的特点和适用场景我们需要根据具体业务需求和系统架构选择适合的分布式事务解决方案。 既然你对项目中SQL有做优化你知道SQL优化有哪些手段 常见的SQL优化手段在MySQL数据库中的实际应用方法 创建索引索引是提高查询性能的重要手段。通过在查询字段上创建索引可以加快查询速度。在MySQL中可以使用CREATE INDEX语句创建普通索引、唯一索引或者组合索引来优化查询性能。但不是创建的越多越好建议不要超过五个并且尽量全面考察是否需要建联合索引、覆盖索引等。避免全表扫描尽量避免对整个表进行扫描可以通过合适的索引或限制返回结果的数量来提高查询效率。选择合适的数据类型在创建表时选择合适的数据类型有助于提高查询性能。选择适当长度的字符类型、整数类型等会减少数据存储空间和提高查询效率。合理使用查询语句避免使用SELECT * 这样的查询语句只查询需要的字段可以减少数据传输量和加快查询速度。优化复杂查询对于复杂查询可以使用JOIN优化、子查询优化、联合查询优化等方法尽量简化查询逻辑和减少不必要的计算。优化表结构合理设计表结构避免过度规范化和反规范化尽量减少 JOIN 操作减少数据冗余。使用EXPLAIN分析SQL使用EXPLAIN命令来分析查询语句的执行计划通过查看索引使用情况、扫描行数等信息找到潜在的性能问题并进行优化。定期优化数据库定期检查并优化数据库表包括碎片整理、统计信息更新、索引重建等操作保持数据库性能稳定。 你觉得难吗如果你也有面试经历或者面试中遇到不好回答的问题请私信我或者在文章下面留言。 相关文件推荐 杭州某科技银行面经和答案 面试如何设计一个注册中心 我的知识库搞定100w 全程面试辅导快速找到工作 欢迎加入我的知识星球可以三天之内无理由退款三天后找我开通相应账号权限、简历修改、模拟面试。
http://www.dnsts.com.cn/news/99910.html

相关文章:

  • 网站开发过程说明怎么写wordpress插件手动安装
  • 海南网站建设哪家好做的网站在百度找不到了
  • wordpress 网站图标设置方法财政网站 建设方案
  • 苏州网站关键词优化济南建设网点电话
  • 建站软件公司网页设计师有什么职位
  • 软件开发网站开发公司长沙开发网站的公司哪家好
  • 分类网站上怎么做锚文本做er图的网站
  • 在ps中做网站首页的尺寸寻找客户资源的网站
  • 珠宝网站策划书福建省建设继续教育网站
  • 网站设计流程大致分为几个阶段网站开发维护者
  • 单位网站建设意义网站关键词在哪里做
  • 区块链做网站都有哪些内容呢网站建设师薪资
  • 手机网站建设的目的Wordpress只做后端
  • 凡科网做的网站在百度上能找到吗平面设计公司培训
  • 呢图网站场建设封面东莞网店网页设计公司
  • 网站制作过程合理的步骤保健品做哪个网站好
  • 深圳建立网站公司网站烟台做网站的企业
  • python 网站开发流程图网站开发一般黄了
  • 福州自适应网站建设营销网站策划方案
  • 宿迁建设局网站拆除备案当当网电子商务网站建设特点
  • wap网站欣赏云南建设工程网站
  • 大连网站开发工资网络推广服务商排名
  • python做网站的 框架免费建立网站
  • 合肥网站优化哪家好网络营销学什么
  • 网站建设和维护费怎么摊销网络营销的五个特点
  • 开发视频网站多少钱无锡城乡建设局网站
  • 做网站哪个公司好 快选宁陵建站宝如何做一个自己的电商平台
  • 婚嫁网站设计网站模板 古典
  • 做店铺图片什么网站罗湖网站设计开发
  • 北京学网站开发网站 建设原则