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

62道Java核心面试题,这次全了

在 Java 中,抽象类用于创建具有某些被子类实现的默认方法的类,一个抽象类可以有没有方法体的抽象方法,也可以有和普通类一样有方法体的方法。...Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有字段和方法;对于任意一个对象,都能够调用它的任意字段和方法;这种动态获取信息以及动态调用对象方法的功能称为 Java 反射机制。...举个例子,假如子类有一个方法 test(),而父类之前是没有的,但突然有人在不知情的情况下在父类插入了一个同名但签名不同的 test() 方法,那么就会出现编译错误。...没有名称的内部类称为匿名内部类,它通过单个语句进行定义和实例化,总是需要扩展一个类或者实现一个接口。 由于匿名内部类没有名称,所以无法为匿名内部类定义构造方法。...当在子类中重写了父类方法时,可以通过 super 关键字访问父类方法。 也可以使用 super 关键字在子类构造方法中调用父类构造方法,它必须是构造方法中的第一条语句。

64120

【黄啊码】一篇文章带你了解php中的闭包和匿名函数

闭包和匿名函数在PHP 5.3.0中引入,这两个特性非常有用,每个PHP开发者都应该掌握。 匿名函数其实就是没有名称的函数,匿名函数可以赋值给变量,还能像其他任何PHP函数对象那样传递。...从父作用域继承变量 在PHP中必须手动调用闭包对象的bindTo方法或使用use关键字把父作用域的变量及状态附加到PHP闭包中。而实际应用中,又以使用use关键字实现居多。...而从父作用域继承变量的使用场景在Laravel底层源码中也是俯拾即 bindTo方法 我们在前面已经提到,闭包是一个对象,所以我们可以在闭包中使用$this关键字获取闭包的内部状态,闭包对象的默认状态没什么用...你会发现,PHP框架经常使用bindTo方法把路由URL映射到匿名回调函数上,框架会把匿名回调函数绑定到应用对象上,这样在匿名函数中就可以使用$this关键字引用重要的应用对象: class App {...这么做能够在回调函数中处理App实例的状态: 这里我们需要重点关注addRoute方法,这个方法的参数分别是一个路由路径和一个路由回调,dispatch方法的参数是当前HTTP请求的路径,它会调用匹配的路由回调

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

    【Java】基础20:比较难懂的内部类

    其他类是无法访问局部内部类的。 成员内部类,在其他类中是可以访问的,上面也说了两种创建对象的格式,但是在局部内部类中是不可以的。 ?...按照字面意思的理解,就是没有名称的内部类。 现在有一个需求,控制台输出每个人在唱什么歌。 最常规简单的方法如何做?看如下代码: ?...那么问题来了,如果这个对象只需要使用一次,创建了一个子类People,结果只使用了一次,这个过程又这么的繁琐。 有没有更简便的方法呢? 这就需要匿名内部类了。代码如下: ?...①匿名内部类就相当于,在常规方法中的People对象,但是因为使用匿名内部类的话不需要建立子类,故没有子类名,便直接用父接口命名代替,这也是格式:new Sing(){}的由来。...②调用自己重写后的方法。 匿名内部类在父类是抽象类的时候也可以使用,和接口时的格式是一样的。 总结: ?

    28810

    性能分析(4)- iowait 使用率过高案例

    当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态 不可中断也是为了保护进程数据和硬件状态一致,并且正常情况下,不可中断状态在很短时间内就会结束 所以,短时的不可中断进程...D 状态的 app 进程,可能在等待 I/O 查看系统的僵尸进程 ps -e -o stat,ppid,pid,cmd | egrep '^[Zz]' 或 ps -ef | grep "defunct...所有僵尸进程的父进程都是 51688,从而确认 51688 就是僵尸进程的父进程 查看 app 应用程序的代码 查看 app 应用程序的代码,看看子进程结束的处理是否正确 有没有调用 或 waitpid...() wait() 或有没有注册 信号的处理函数 SIGCHLD ?...CPU 使用率并不算高 查看是否有 CPU 使用率偏高的进程,发现有 D 状态的进程,可能是在等待 I/O 中 过一阵子会变成 Z 状态进程,且 CPU 使用率上升,然后会看到 zombie 进程数逐渐增加

    4.2K31

    react高频面试题总结(附答案)

    如果是异步,则可以把一个同步代码中的多个setState合并成一次组件更新。所以默认是异步的,但是在一些情况下是同步的。setState 并不是单纯同步/异步的,它的表现会因调用场景的不同而不同。...componentWillReceiveProps在初始化render的时候不会执行,它会在Component接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染。...React的状态提升就是用户对子组件操作,子组件不改变自己的状态,通过自己的props把这个操作改变的数据传递给父组件,改变父组件的状态,从而改变受父组件控制的所有子组件的状态,这也是React单项数据流的特性决定的...概括来说就是将多个组件需要共享的状态提升到它们最近的父组件上,在父组件上改变这个状态然后通过props分发给子组件。...展示专门通过 props 接受数据和回调,并且几乎不会有自身的状态,但当展示组件拥有自身的状态时,通常也只关心 UI 状态而不是数据的状态。容器组件则更关心组件是如何运作的。

    2.2K40

    C# 温故而知新: 线程篇(四)

    ,其他线程则必须等待,大伙注意,这里有2个重要的线 程状态需要在说明下 1:等待队列: 等待进入共享区的线程会首先进入到等待队列中,等待持有排他锁的线程通知某个等待线程进入到就绪队列中,注意(只有拥有排他锁的线程才能进行互换通知功能...,甚至该线程能够唤醒一堆的等待线程进入到就绪队列中)2:就绪队列 等待队列中的某个线程被持有排他锁的线程唤醒放入到就绪队列中,等待获取排他锁的机会,这样一个周期便可以连接起来,线程从等待到被唤醒到就绪状态...6 终止状态不会导致阻塞线程,非终止装态会导致阻塞当前线程 7 可以调用Reset()方法将状态设置成非终止装态来阻塞线程 AutoResetEvent 1 具有父类EventWaitHandle...同样具有终止状态和非终止状态 4. ReleaMutex 后互斥体的状态设定为终止,直到其他线程占有互斥体,但是如果没有线程拥有互斥体的话,该互斥体的状态便终止了 5....,我们可以再这 个捕获异常中实现mutex对象的创建 Mutex类的构造方法: 1.Mutex() 用无参数的构造函数得到的Mutex没有任何名称,而进程间无法通过变量的形式共享数据,所以没有名称的

    94460

    如何使用 JavaScript 检测用户是否启用三方 Cookie ?

    ,三方 Cookie 禁用的情况下还是会返回 true。...我能想到的并且一直有效的方法就是添加一个外部(三方)的 iFrame,让它来检测 iFrame 内部是否可以访问到 Cookie,并且会将 Cookie 的可用状态通知给父应用。...但是我们可以使用 Message Event 来进行父子应用之间的通信,通过这个我们可以基于 URL 向其他浏览器发送消息,在我们现在这种情况下,我们可以从 iFrame 向可能在不同域上的父应用发送消息...然后,我们通过 parent.postMessage() 方法向父应用发送一条消息;在 iFrame 中,parent 是一个隐含的对象。 的函数检查iFrame 的 Cookie 状态并发送一个消息,该消息被我们的 messagehandler 拦截。

    49810

    Java多线程(一篇从0讲透)

    ;调用父类的带参构造方法,把名字传递给父类,让父亲给儿子起名字 Thread(String name) 分配新的 Thread 对象。...String name; //保存的文件名 MyCallableImpl(String url,String name){ this.url=url;...,重写父类的方法,创建子类对象,合成一步完成 把实现类实现接口,重写接口库的方法,创建实现类对象,合成一步完成 最终得要子类对象或实现类对象 格式 new 父类/接口(){ 重写父类/接口中的方法...ReetrantLock(可重入锁)类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常见的是ReetrantLock,可以显示加锁、释放锁 Lock...并且具有更好的扩展性(提供更多的子类) 优先使用顺序:Lock > 同步代码块(已经进入了方法体,分配了响应资源)> 同步方法(在方法体之外) 4.2.5 判断锁的对象是谁 8锁现象: 1)标准情况下,

    35630

    单点登录的三种实现方式,你会几种?

    如果用户的登录状态是记录在 Session 中的,要实现共享登录状态,就要先共享 Session,比如可以将 Session 序列化到 Redis 中,让多个应用系统共享同一个 Redis,直接读取 Redis...应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统中尚未登录,那么就将页面跳转至认证中心。...如果认证中心发现用户尚未登录,则返回登录页面,等待用户登录,如果发现用户已经登录过了,就不会让用户再次登录了,而是会跳转回目标 URL ,并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统...父域 Cookie 确实是一种不错的解决方案,但是不支持跨域。那么有没有什么奇淫技巧能够让 Cookie 跨域传递呢? 很遗憾,浏览器对 Cookie 的跨域限制越来越严格。...不过,在前后端分离的情况下,完全可以不使用 Cookie,我们可以选择将 Session ID (或 Token )保存到浏览器的 LocalStorage 中,让前端在每次向后端发送请求时,主动将 LocalStorage

    7.8K21

    单点登录的 3 种实现方式

    如果用户的登录状态是记录在 Session 中的,要实现共享登录状态,就要先共享 Session,比如可以将 Session 序列化到 Redis 中,让多个应用系统共享同一个 Redis,直接读取 Redis...应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统中尚未登录,那么就将页面跳转至认证中心。...如果认证中心发现用户尚未登录,则返回登录页面,等待用户登录,如果发现用户已经登录过了,就不会让用户再次登录了,而是会跳转回目标 URL ,并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统...父域 Cookie 确实是一种不错的解决方案,但是不支持跨域。那么有没有什么奇淫技巧能够让 Cookie 跨域传递呢? 很遗憾,浏览器对 Cookie 的跨域限制越来越严格。...不过,在前后端分离的情况下,完全可以不使用 Cookie,我们可以选择将 Session ID (或 Token )保存到浏览器的 LocalStorage 中,让前端在每次向后端发送请求时,主动将 LocalStorage

    82610

    深入剖析:update pk会发生什么?

    张大朋(Lunar)Oracle 资深技术专家 Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant...前文回顾:insert 的enq: TM – contention 结论: 对存在pk的表来说,无论有没有子表,update pk的操作会同时阻塞对该表做insert操作中那些pk跟update语句更改前...测试六 测试一下子表无事务的情况下,对父表的update是如何影响父表的delete和insert的 首先,我们在Session 4(SID 116)对做commit,此时session 2(SID...不受session 2在父表的update的影响,而session 5对父表的insert 会被session 2在父表的update阻塞,被阻塞的对父表的insert操作等待事件为:enq: TX –...现在我们改为带有pk的表: SESSION 1: SESSION 2: 也就是说,对存在pk的表来说,无论有没有子表,update pk的操作会同时阻塞对该表做insert操作中那些pk跟update

    67580

    Vue总汇

    解析es6转成es5的插件配置 【重点】package.json //包管理器文件,存放着依赖的名字 README.md //项目说明书 初始化面目依赖 当我们拿到别人的项目的时候,一般情况下是没有node_modules...切割vuex,让每个独立使用store的页面拥有自己的store 什么时候用? 比如电商项目,每个页面除了使用全局的用户信息外,还有额外的自己独立页面使用的状态。...尤其是当小组开发的时候,避免冲突,使用模块化 plugins 插件 让vuex拥有没有的功能,比如,vuex的数据是存在内存中的,刷新页面会丢。...params传参只能通过命名路由name跳转 meta 元数据,用于传参,更多情况下用于配置路由的权限 query 以?...开头的get请求传参方式 路由类型 动态路由 一组拥有相同基础路径的路由,加载的是同一个页面 嵌套路由 一组拥有相同基础路径的路由,加载不同的页面 路由拦截器 每个路由守卫都有一个回调函数

    11110

    【Linux】进程状态

    /mytest执行可执行程序 查看进程 赋值SSH渠道生成终端2 在保证终端1中的mytest运行的情况下,在终端2中输入指令 ps axj | head -1 && ps axj |.../mytest 发现进程状态由S+变为R+ printf循环打印,就代表要频繁访问显示器设备,循环中的printf本质就是向外设打印消息,当CPU执行printf代码时,频繁打印外设不一定就绪,进程可能在外设中排队.../mytest运行,并输入10 10 在保证终端1中的mytest运行的情况下,在终端2中再次输入指令 ps axj | head -1 && ps axj | grep mytest...0 说明mytest进程的退出码是0,进程结果正确 对于Z状态的理解 如果一个进程退出了,立马X状态,立马退出,你作为父进程,有没有机会拿到退出结果呢?...S+ 当使用 kill - 9 +PID值将子进程干掉后,再次使用指令查询进程,发现子进程为僵尸状态,父进程为S+ 僵尸状态危害 在父子进程中,若父进程一直不读取,子进程就会处于Z状态 在父子进程中,若子进程一直处于僵尸状态

    6.1K30

    Java数据结构与算法解析(十)——2-3树

    二叉查找树对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。...平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,这就是平衡查找树(Balanced Search Tree)。...在一棵具有N 个节点的树中,我们希望该树的高度能够维持在lgN左右,这样我们就能保证只需要lgN次比较操作就可以查找到想要的值。不幸的是,每次插入元素之后维持树的平衡状态太昂贵。...2-3树之所以能够保证在最差的情况下的效率的原因在于其插入之后仍然能够保持平衡状态。...这4-node可能在跟节点,也可能是2-node的左子节点或者右子节点。或者是一个3-node的左,中,右子节点。所有的这些改变都是本地的,不需要检查或者修改其他部分的节点。

    38410

    实现单点登录的三种方式

    当用户登录成功后,一般会将登录状态记录到 Session 中,或者是给用户签发一个 Token,然后浏览器将Session 的 ID 或 Token 保存到 Cookie 中,浏览器在之后的每次请求中携带它们...如果用户的登录状态是记录在 Session 中的,要实现共享登录状态,就要先共享 Session,比如可以将 Session 存到 同一个Redis 中,用户访问时,都可以读取 同一个Redis 的 Session...)保存到父域中。...检查token:用户访问某个应用系统,应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统未登录,跳转至认证中心。...返回url:如果发现用户尚未登录,则返回登录页面,等待用户登录,如果发现用户已登录,会跳转回目标 URL ,让token拼接在目标 URL 的后面,回传给目标应用系统。

    1.1K20

    Java数据结构与算法解析——2-3树

    二叉查找树对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。...平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,这就是平衡查找树(Balanced Search Tree)。...在一棵具有N 个节点的树中,我们希望该树的高度能够维持在lgN左右,这样我们就能保证只需要lgN次比较操作就可以查找到想要的值。不幸的是,每次插入元素之后维持树的平衡状态太昂贵。...2-3树之所以能够保证在最差的情况下的效率的原因在于其插入之后仍然能够保持平衡状态。...本地转换将一个4-node拆分为2-3node涉及到6种可能的操作。这4-node可能在跟节点,也可能是2-node的左子节点或者右子节点。或者是一个3-node的左,中,右子节点。

    1.2K70

    DCS_FunTester分布式压测框架更新(三)

    经过了两次更新,DCS_FunTester框架的基础功能已经接近尾声了,目前的状态基本能够使用,所以近期不会再进行功能更新了。...而且在根目录下的build.gradle文件中取消了设置项目子模块的设置,我也没懂到底Gradle设置多模块的模板是什么样子的,算是积累成功经验吧。...子模块依赖 我搜到的资料将可以在父类模块的build.gradle中配置子模块依赖,试过几次,其中都是使用以下方式: subprojects{ dependencies{ ……万千依赖……...} mark } 探活接口 为了更好地管理slave节点的状态,本次更新增加了slave节点的探活接口。...host) return false } } 优化注册机制 这个和上面探活有所关联,防止在slave节点可以访问master节点,但是反过来无法访问的情况下

    41320
    领券