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

推广网站公司网络广告推广策划

推广网站公司,网络广告推广策划,珠海做网站公司有哪些,seo北京公司文章目录 引言一面准备面试预演一1、讲一下hashcode()和equals()关系2、equals()和有什么区别3、讲一下重载和重写的区别4、讲一下深拷贝、浅拷贝的区别5、讲一下Java异常的基类#xff0c;运行时异常举几个例子#xff0c;什么情况下会出现#xff1f;6、讲一下Java中线程的… 文章目录 引言一面准备面试预演一1、讲一下hashcode()和equals()关系2、equals()和有什么区别3、讲一下重载和重写的区别4、讲一下深拷贝、浅拷贝的区别5、讲一下Java异常的基类运行时异常举几个例子什么情况下会出现6、讲一下Java中线程的几种状态以及如何进行切换的7、讲一下sleep和wait的区别8、介绍一下Java中的乐观锁和悲观锁9、介绍一下CAS原理哪些操作使用到了CASCAS操作是否有原子性如何规避ABA问题10、介绍一下公平锁和非公平锁举一个具体的实现例子。11、了解死锁吗如何避免死锁怎么解除死锁12、线程池适合什么场景举几个例子。13、讲一下什么数据适合做索引14、最左匹配原则针对联合索引a,b,c,d, where a2 and b3 and c 4 and d 5用了什么索引15、讲一下项目中遇到的慢SQL 是怎么排查的后面是怎么解决的16、SQL事务了解吗并发情况下会有什么问题 简单介绍一下17、 当前有一个表 想要查询 第二高薪资的员工怎么用一个sql写出来18、最大连续子序列 面试预演二——这里写了但是没有自动保存给我清空了Spring中面向切面编程在项目中是否使用过AOP查数据库响应慢怎么排查 正式面试-有点懵测评没做就约了1、Java中类加载的全过程2、有哪些类加载器3、说一下双亲委派模型双亲委派模型具体是怎么实现的4、可以自己定义一个String类去覆盖JDK里面的类吗5、String类可以继承并且重写吗6、异常分哪几种7、运行时异常时怎么触发的8、try-catch中的finally是干什么的9、HashMap和HashTable的区别10、在性能方面有什么折中的方案吗11、锁的升级过程是怎么样的12、Synchronized本身是怎么实现的——监视器锁monitorenter和monitorexit指令13、死锁一般怎么形成的14、程序里面出现了死锁怎么定位怎么排查15、设计模式有几种分类16、JDK或者其他的开源代码中哪些地方用到了设计模式用了什么设计模式17、进程之间的通信有哪几种方式18、你在开发中使用过的多进程之间的通信19、说一下流量控制和拥塞控制流量控制拥塞控制 20、epoll和select的区别21、手撕算法 二面二面预演一二面正式——7/30 总结 引言 已经收到了测评准备这周填写测评然后下周再去约面试。现在就自己过一下网上的面经内容。多准备一下害怕被拷打 一面 准备 面试预演一 下述面试题来源 作者John_YAN链接https://www.nowcoder.com/feed/main/detail/85e798bacd5c455a950f268cbcae0fad来源牛客网 1、讲一下hashcode()和equals()关系 equals 用来判断两个对象是否相等默认情况下是比较两个对象的内存地址是否相等。 hashcode 返回对象的散列码默认是返回对象内存地址转换后的整数值。 两者的关系 equals和hashcode共同作用才能保证对象在基于hash的集合数据结构中的正确行为。两个对象是相等的equals相等的返回的哈希值必须相等哈希值相等但是并不一定相等因为不相等的对象会放在哈希值相同的两个桶中。 2、equals()和有什么区别 equals 用来判断两个对象是否相等默认情况下的比较两个对象内存地址是否相等。 比较两个对象引用是否指向同一个内存地址适用于基本数据类型和引用数据类型。 3、讲一下重载和重写的区别 重载 同一个类中存在多个方法名相同但是参数列表或者返回类型不同的方法。 重写 子类重新定义从父类继承的方法方法名、参数列表和返回类型都是相同的用于实现类的多态。 4、讲一下深拷贝、浅拷贝的区别 深拷贝 创建一个新的对象递归复制原对象中的所有引用字段指向的对象新对象和原对象完全独立。 浅拷贝 创建一个新的对象直接复制原对象的基本数据类型字段对于原对象中的引用类型数据仅仅复制引用。两者的引用字段都是指向的同一块内存区域。 5、讲一下Java异常的基类运行时异常举几个例子什么情况下会出现 所有异常都是从Throwable类派生的其有两个子类分别是Eror和ExceptionException类是程序本身可以捕获和处理的异常分为可检出异常和不可检测出异常。可检测异常是由编译器强制检测的异常必须要显示处理常见的包括 IOExceptionSQLExceptionClassNotFoundException 不可检测异常是 编译器不会强制检测可以不处理 RuntimeException NullPointerException空指针ArrayIndexOutOfBoundsException数据越界ArithmeticException算术异常等 6、讲一下Java中线程的几种状态以及如何进行切换的 new状态 线程刚创建还没有start runnable状态 创建了之后调用start方法 blocked状态 获取锁发现被别人占用了陷入阻塞 waiting状态 主动调用的wait函数或者join函数陷入沉睡 time-waiting状态 线程适应waittime或者sleep等方法时 terminated状态 线程完成执行正常退出或者发生了未捕获的异常死亡 7、讲一下sleep和wait的区别 sleep 让正在执行的线程暂停执行一段时间Thread类的静态方法不会释放锁陷入沉睡time_waiting状态不需要在所里面使用 wait Object类的实例方法让线程等待直到被唤醒或者到时间需要配合锁使用会释放锁陷入waiting状态需要notify或者notifyall唤醒 Java中的锁 8、介绍一下Java中的乐观锁和悲观锁 悲观锁 每次拿数据时都假设别人会修改数据所以都会对需要访问的资源进行上锁。做操作之前先上锁。synchronized关键字 乐观锁 每次拿数据时假设别人不会修改数据所以不会上锁但是修改数据时会判断一下别人是否更新过数据使用版本号等机制实现。读多写少的情况。Java中的atomic类是使用乐观锁实现的。 9、介绍一下CAS原理哪些操作使用到了CASCAS操作是否有原子性如何规避ABA问题 CompareAndSwap通过CAS来保证原子性底层是通过系统硬件级别实现的。通过比较三个参数VexpectupdateV是需要修改的变量expect是期望的值update是需要更新的值。通过版本号来规避ABA问题使用AtomicStampedReference来解决ABA问题。 10、介绍一下公平锁和非公平锁举一个具体的实现例子。 公平锁 按照线程申请的顺序获得锁。性能较差因为需要维护同步队列线程进行频繁的状态转换和上下文切换执行速度慢。 非公平锁 是按照随机或者优先级分配给申请的线程锁。性能更好会导致部分线程处于饥饿状态 11、了解死锁吗如何避免死锁怎么解除死锁 死锁定义 两个或者以上的线程由于相互竞争资源或者通信造成的阻塞线程没有外力无法推进 避免死锁的方式 避免一个线程同时获得多个锁避免一个线程在一个锁内同时占有多个资源每一个锁尽量只有一个资源尝试使用定时锁 解除死锁 杀死某一个阻塞的线程释放占有的锁或者资源 12、线程池适合什么场景举几个例子。 这里刚刚看过了回来解答一下适用的场景 管理和复用一组线程的机制适合处理并发任务特别是需要频繁创建和销毁线程的场景 例子 web服务器每一个http请求对应一个线程处理不随着链接建立和删除销毁和创建线程。数据库连接池使用线程池管理多个并发的数据库查询请求异步任务执行定时任务调度消息队列处理后台任务处理日志处理文件上传和下载GUI应用程序时间处理后台数据加载 13、讲一下什么数据适合做索引 针对select经常要查看的数据实现索引覆盖针对where经常出现在查询条件中提高查询速度减少回表查询针对order by创建索引加快排序操作针对join如果某咧经常用于表之间的链接操作创建索引提高链接效率唯一性约束主键或者满足唯一性约束的列创建索引必要经常用于范围查询某列经常用于范围查询注意不能用来创建索引的列 更新频繁的列低选择性的列性别等 14、最左匹配原则针对联合索引a,b,c,d, where a2 and b3 and c 4 and d 5用了什么索引 索引复习材料链接a2b3c4 将会利用联合索引进行加速查询。d5 由于 c4 是范围查询因此 d 列不会被索引利用。 15、讲一下项目中遇到的慢SQL 是怎么排查的后面是怎么解决的 识别慢查询的方式 慢查询日志启用数据库的慢查询日志记录执行时间超过阈值的SQL语句手动分析查看日志找出执行时间长的SQL语句 分析慢SQL语句 EXPLAIN语句是否全表扫描了是否使用了高成本索引扫描 解决慢SQL 分区表 对大表进行分区减少每次查询需要扫描的数据量 优化SQL语句 重写索引语句避免索引失效拆分复杂索引为多个简单查询或者使用子查询来代替 16、SQL事务了解吗并发情况下会有什么问题 简单介绍一下 这个好说倒背如流主要分为两个部分事务的特性然后是并发的4个问题以及对应隔离级别的解决问题。 事务的4个特性 原子性一个事务的执行要么全部成功要么全部失败一致性事务执行前和事务执行后数据库的完整性约束不受影响隔离性不同事务之间互不影响互不干扰持久性事务执行完毕后的对于数据库的修改对数据库的修改永久保存不会丢失 并发的问题 脏读读到了其他数据还未提交的修改不可重复读多次在不同时间点读取一个数据返回不同的结果幻读一个事务在前后两次查询中读取到的记录数不一样 对应隔离界别 读未提交允许事务读取未提交的事务读已提交事务只有提交其他事务才能读取避免了脏读可重复读同一个事务多次读取的结果一直解决不可重复读的问题序列化 全部解决并发性低。 17、 当前有一个表 想要查询 第二高薪资的员工怎么用一个sql写出来 有点忘记了得去好好练习一下 嵌套子查询 SELECT * FROM employees WHERE salary (SELECT MAX(salary)FROM employeesWHERE salary (SELECT MAX(salary)FROM employees) );窗口函数这个还不会嘞 SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY salary DESC) AS rankFROM employees ) ranked_employees WHERE rank 2;18、最大连续子序列 题目链接这道题还是有思路的第一遍遍历保存所有数字出现的情况第二遍遍历找后续 遍历找后续的时候是从序列的开始找的 class Solution {public int longestConsecutive(int[] nums) {// define the map eo store each numberMapInteger,Boolean map new HashMap();for(int x : nums) map.put(x,true);// traverse the nums to judge the longest seqint res 0;for(int x : nums){// the previous num existsif(map.getOrDefault(x - 1,false) true) continue;int temp x 1;while(map.containsKey(temp)) temp ;res Math.max(temp - x ,res);}return res;} }面试预演二——这里写了但是没有自动保存给我清空了 Spring中面向切面编程在项目中是否使用过AOP AOP概述 AOP是面向对象编程的一种补充通过预编译和运行期间动态代理的方式动态的将代码切入到类的指定方法、指定位置上的编程思想就是面向切面编程能够实现在不修改源码的情况下为系统中的业务组件添加某种通用功能减少代码的重复性提高代码的可维护性和可重用性。 核心概念 切面切入到指定类或者指定方法的代码片称为切面切入点切入到哪个类或者那个方法叫做切入点 有了AOP能够将几个类共有的代码抽取到一个切片中等到需要时在切入对象中从而改变其原有的行为。 应用场景 日志记录在方法执行前后记录日志有助于追踪和性能分析权限控制在方法执行前进行权限控制确保用户具有执行该方法的权限的 查数据库响应慢怎么排查 初步定位问题 查看监控系统和日志是不是资源瓶颈或者网络延迟等其他问题查看慢查询日志分析其中的SQL语句找到查询比较慢的 深入分析SQL查询 使用explain查看具体SQL的执行计划是否出现的全表索引索引未命中等问题。索引优化添加索引或者修改索引确保索引命中。或者索引覆盖等优化方式 系统资源检查 如果内存过小、CPU占用率太高、或者磁盘IO性能不佳等原因导致的可以考虑升级硬件设备 网络和配置检查 如果不在一台机器上看看是不是网络延迟导致的如果在一台机器上看看是不是数据库 正式面试-有点懵测评没做就约了 1、Java中类加载的全过程 这个章节是关于类加载的我基本上都忘光了一个都没有答对这里整理一下然后在回来回答 加载 通过类的全限定名找到对应二进制字节流文件将二进制字节流文件中的类的静态存储结构加载到方法区中转为运行时数据。在堆区创建对应的Class对象作为访问类信息的入口 验证 检查字节流防止载入错误或者恶意的字节流文件导致JVM崩溃验证流程文本格式验证、符号引用验证、元数据验证、字节码验证等 准备 为类的静态变量分配内存并赋默认值或者常量final static修饰的 解析 将符号引用替换为直接引用能够直接指向引用对象句柄或者指针等 初始化 直到该阶段JVM才开始执行类中编写的代码根据程序员的编码对类的静态变量去赋值执行类构造方法中的clinit方法 2、有哪些类加载器 有三层类加载器 启动类加载器 在JVM启动时创建加载最核心的类如Object、String等使用本地代码由操作系统实现 扩展类加载器 扩展类加载器复杂加载一些扩展的系统类比如XML、加密、网络编程等功能类。 应用类加载器 系统类加载器是加载用户类路径上的类库直接在代码中使用如果没有自定义类加载器一般情况下默认类加载器就是应用类加载器。 自定义类加载器是通过继承ClassLoader并重写findclass实现的 3、说一下双亲委派模型双亲委派模型具体是怎么实现的 类加载器具有等级制度但不是继承关系分层但非继承以组合的方式复用父加载器的功能。 除了顶层的启动类加载器之外其余类加载器都要用自己的父加载器 具体原理 * 一个类加载器收到类加载请求不会自己去加载而是把请求委派给父加载器。以此类推最后所有请求都会到启动类加载器。 * 只有当父类加载器无法完成式子类加载器才会去尝试加载 4、可以自己定义一个String类去覆盖JDK里面的类吗 不可以根绝双亲委派模型所有构建类的请求最后都会委派到启动类加载器而启动类加载器已经加载过String类所以会直接返回已经加载的String类并不能重新加载一个String类。 5、String类可以继承并且重写吗 String类是声明为final的意味着不能被继承。 方法也不能重写。 6、异常分哪几种 所有异常都是从Throwable类派生的其有两个子类分别是Eror和ExceptionException类是程序本身可以捕获和处理的异常分为可检出异常和不可检测出异常。可检测异常是由编译器强制检测的异常必须要显示处理常见的包括 IOExceptionSQLExceptionClassNotFoundException 不可检测异常是 编译器不会强制检测可以不处理 RuntimeException NullPointerException空指针ArrayIndexOutOfBoundsException数据越界ArithmeticException算术异常等 7、运行时异常时怎么触发的 运行时异常是在程序运行过程中由逻辑错误或意外情况触发的异常类型。常见的运行时异常包括NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException等。尽管运行时异常不需要显式捕获或声明但合理地处理这些异常可以提高程序的健壮性和用户体验。通过使用try-catch块捕获异常、提前检查条件和选择适当的数据结构和方法可以有效地管理运行时异常。 8、try-catch中的finally是干什么的 finally块用于在异常处理代码块中执行一些重要的清理操作。无论try块中的代码是否抛出异常无论是否有catch块处理异常finally块中的代码都会被执行。 它通常用于释放资源例如关闭文件、网络连接、数据库连接等以确保程序的稳定性和资源的正确管理。 9、HashMap和HashTable的区别 线程安全性 HashMap不是线程安全的如果要实现多线程同步访问必须要使用同步机制保证访问不出错。Hashtable是线程安全的所有方法都是同步的使用Synchronized关键字实现 null值 HashMap允许一个key为null多个value为nullHashtable不允许key和value为null 性能 Hashtable由于所有方法都是要同步所以性能较低HashMap在单线程环境下性能更好。 10、在性能方面有什么折中的方案吗 读写锁 ReentrantReadWriteLock读写锁能够保证数据在读的情况下多线程共同访问但是写时进能保证一个线程互斥访问。 ConcurrentHashMap ConcurrentHashMap引入了分段锁segment减少了锁的粒度从而提高了并发性能。 允许更高的并发度因为它只在必要时对部分Map进行加锁。读操作通常是无锁的写操作仅对相关的分段进行锁定。 11、锁的升级过程是怎么样的 Synchronized的锁升级 无锁状态 没有线程持有该锁 偏向锁 仅有一个线程持有该锁不会发生竞争 轻量级锁 多个线程竞争但是没有阻塞会才有自旋的方式来等待 重量级锁 自旋失败后仍不能获得锁就膨胀为重量级锁线程进入阻塞状态等待操作系统调度恢复 12、Synchronized本身是怎么实现的——监视器锁monitorenter和monitorexit指令 这个一下子一点都没有想起来尴尬了当时还说是Java底层实现的 synchronized关键字在JVM中是通过monitor监视器实现的。 每个对象都有一个监视器锁。当一个线程进入synchronized方法或代码块时它会尝试获取这个监视器锁。获得锁的线程可以继续执行否则它将进入阻塞状态直到锁被释放。 JVM通过两个字节码指令monitorenter和monitorexit来实现synchronized块的功能 13、死锁一般怎么形成的 定义 多个线程因为相互等待对方释放持有的资源而陷入的阻塞状况。 死锁生成条件 资源互斥访问线程持有资源不可剥夺线程持有资源等待多个线程形成循环等待的情况 14、程序里面出现了死锁怎么定位怎么排查 这个问题太小众了不应该呀 通过代码审查 确保所有线程获取锁的顺序是一致的避免不同线程按照不同的顺序获取多个锁。 日志记录 在获取锁和释放锁的地方添加详细的日志记录线程IO、锁ID和时间戳等信息。通过分析日志可以帮助我们找到那些线程在什么时间点请求了哪些锁以及是否出现了等待循环。 使用工具jVisualVM 监控和性能分析工具能够提供线程的实时状态包括死锁检测。 15、设计模式有几种分类 主要有三种分类模式分别是 创建型模式 定义 关注对象的创建方式通过封装实例化过程使得系统在不指定具体类的情况下创建对象。 常见模式 单例模式工厂模式抽象工厂模式 结构型模式 定义 关注类和对象的组合方式确保系统在复杂性增加时仍旧可以维护和扩展 常见模式 适配器模式、桥接模式、装饰器模式、代理模式 行为型模式 定义 关注对象之间的责任分配和交互用于描述对象和类之间的如何协作完成任务 常见模式 观察者模式、模板模式 16、JDK或者其他的开源代码中哪些地方用到了设计模式用了什么设计模式 单例模式的应用 java.lang.Runtime中的getRuntime()java.lang.System内部使用的时单例模式java.lang.Desktop通过getDesktop()提工单一实例 工厂模式 java.util.Calender中的getInstance方法 建造者模式 StringBuilder和StringBuffer提供动态构建字符串的能力 适配器模式 Arrays.asList将数组适配为List接口 迭代器模式 java.util.iterator迭代器模式 Spring中的依赖注入 使用工厂模式和单例模式来管理Bean的创建和生命周期 Spring中的AOP 通过代理模式来实现横切关注点 17、进程之间的通信有哪几种方式 管道 管道是一种用于进程间通信的机制主要用于父子进程之间的数据传输。 消息队列 消息队列是一种基于消息传递的进程间通信方式。特点允许一个或多个进程将消息发送到队列中并允许一个或多个进程从队列中读取消息。消息可以带有类型。 共享内存 共享内存是最快的进程间通信方式因为进程间共享一块内存区域。允许多个进程直接读写这块共享内存。需要配合其他同步机制如信号量使用确保数据一致性。 信号量 信号量是一种用于进程间同步的机制但也可以用于进程间通信。 信号 信号是一种用于通知进程某个事件发生的机制。 18、你在开发中使用过的多进程之间的通信 没有 19、说一下流量控制和拥塞控制 大概说了一下但是语言组织能力不够完善 流量控制 目的 防止发送方以过快的速度发送数据超过接收方的处理能力避免接收方缓冲区溢出。 常见方法 停止等待协议 发送方发送一个数据包之后必须等待接收方确认后才可以发送下一个数据包特点 实现简单可靠性要求高信道利用率低 滑动窗口协议 1、发送方可以连续发送多个数据包不用等待每一个数据包的确认直到达到窗口大小2、接收方通过ACK通知发送方接受情况接收方窗口大小发送方根据ACK调整窗口滑动以及发送速率特点 提高了利用率适合高速链路窗口大小由接收方决定可以动态调整 拥塞控制 目的 防止网络中的过多数据导致路由器或者网络节点的拥塞 常见方法 慢启动 拥塞窗口从最小值开始收到一个ACK就增加一个MSS拥塞窗口大小快速增长直到达到慢启动阈值或者出现丢包 拥塞避免 当拥塞窗口达到阈值的时候进入拥塞避免阶段每次完整往返增加一个MSS线性增长避免突然增加导致网络拥塞 快重传 发送方接收到三个重复的ACK时假设丢包立刻重传丢失的数据包不必等到超时。 快恢复 发送放在快速重传之后不进入慢启动减少拥塞窗口为慢启动的一半并进入拥塞避免阶段。 总结一下方便记忆 慢慢启动慢慢增加出现丢包拥塞避免再丢包说明更加拥塞了先解决当前问题快速重传。重传之后快速恢复网络执行快速恢复算法直接调低当前速度为慢重传阈值的一半直接进入拥塞避免装填。两次判断条件 第一次丢包出现阻塞现象从慢启动进入拥塞避免状态第二次丢包先快重传解决当前问题然后快恢复直接减到阈值一半再次拥塞避免算法。 20、epoll和select的区别 这里一点都没看当时说这两个关键词的时候我都懵了这里暂时先停在这明天把这个章节补齐了在开始往下做 Select方式 实现机制 使用一个固定大小的数组来存储文件描述符每次调用select的时候需要将所有的文件描述符传递给内核内核遍历所有描述符确定那些描述符准备好了 性能 在文件描述符数量增加的时候会下降因为需要线性扫描所有描述符 epoll方式 实现机制 使用一个内核事件表来管理多个文件描述符通过epoll_ctl系统调用注册感兴趣的事件应用程序只需要告诉内核一次他感兴趣的文件描述符和事件类型后内核通过高效的数据结构管理这些描述符 性能 文件描述符数量增加的时候性能较好采用事件驱动机制只有文件描述符状态变化时才通知应用程序没有文件描述符数量限制适合处理大量并发连接场景 21、手撕算法 链表相交节点 最低时间复杂度实现最低空间复杂度实现 刚好整理过还是比较简单 二面 二面预演一 二面正式——7/30 总结 期待着期待着先好好准备吧通过面试发现我说的太急了太快了太紧张了完全没有必要导致整个人会听起来比较慌张整理完了终于整理完了明天开始继续刷题吧
http://www.dnsts.com.cn/news/249187.html

相关文章:

  • 个人备案能公司网站网页设计培训 周末双休
  • 我要建一个网站为什么wordpress样式无效
  • 建设网站所需的费用的估算建筑行业教育培训平台
  • 做网站要准备哪些素材维护网站建设空间出租
  • 网站建设方案 流程建立网站的英文
  • 网站seo的关键词排名怎么做的网站关键词太多好不好
  • 用dedecms织梦做中英文网站邯郸注册公司
  • 花都区网站建设网页制作三剑客是指
  • 某企业网站的分析优化与推广优设网字体
  • 昆明网站开发怎样实现wordpress订单提醒功能
  • 定陶住房和城乡建设局网站网页一般用什么软件制作
  • 福田做网站报价广西城乡住房建设部网站
  • 大学网站建设专业wordpress 分类排行榜
  • 网站定位策划书公司网站建设会计处理
  • 淘宝联盟怎样建设网站服务好的高端网站建设
  • 建网站能在家里做吗汉川建设局网站
  • 徐州城乡建设局网站营销型网站定位
  • wordpress建站事例义乌网站优化
  • 做logo的网站招聘网站开发学徒
  • 网站平台开发要注意什么问题wordpress登陆图标修改
  • 淘宝网站建设手机版自己有网站想制作个程序
  • 小企业网站建设怎样可以快速广西建设工程造价信息网
  • 批量 网站标题北京市住房与城乡建设部网站
  • 北京网站搭建公司电话wordpress博客广告收益
  • 备案期间怎么关闭网站正规投资app平台
  • wordpress 音乐站搭建app需要多少钱
  • 企业网站建设的目标郑州服务设计公司网站
  • 搭建门户网站国人wordpress企业主题
  • 建设求职网站深圳宝安国际会展中心
  • 下载网站模板后本地的网站会自动做跳转锻件开发设计公司