2018年12月19日去面试,上午一家下午一家;上午的可以说是很成功,下午的可以说是稀巴烂,都对不起我那工作经验了。内容我整理一下,希望能帮助到看到我博客的同学。
题名叫:《 Java工程师能力评估》,这些题都在牛客网能搜到,都有详细答案。
list中该如何去删除元素:http://www.cnblogs.com/pcheng/p/5336903.html
list中的扩容机制:
spring面试必bei:
- IOC(inverse of control):控制反转,简单的说就是项目中手动创建的对象UserService的控制权交给spring框架管理。
- DI(deptndency injection):依赖注入,在spring创建bean对象时,动态的将依赖对象注入到bean组件,将对象依赖属性通过配置进行注入
- applicationContext在加载配置文件的时候初始化bean,而BeanFactory使用的是延迟加载,第一次getBean的时候才会去初始化bean。在web项目中,用webApplicationContext,很少用beanfactory
- spring配置bean实例化的方法:
- 使用构造器实例化
- 使用静态方法实例化
- 使用实例工厂方法实例化
- spring的声明周期:在配置<bean>元素时,通过init-method指定bean的初始化方法,destory-method来指定bean的销毁方法他只对scope=“singleton”有效,销毁方法必须手动关闭ApplicationContext对象才会被关闭。
- bean的生命周期
- instantiate Bean对象实例化
- populate properties封装属性
- 如果bean实现BeanNameAware执行setBeanName
- 如果bean实现BeanFactoryAware或者ApplicationAware设置工厂setBeanFactory或者上下文对象setApplicationContext
- 如果存在类实现BeanPostProcessor(后处理bean),执行postProcessBeforInitalization
- 如果bean实现了initializingBean执行afterPropertiesSet
- 调用init-method指定初始化方法init
- 如果存在类实现BeanPostProcessor,执行postProcesserAfterlnitialization
- 执行业务处理
- 如果bean实现diposableBean则执行destory
- 调用destory-method指定的销毁方法
什么是单例?单例就是所有的请求都用一个对象来处理,我们常用的service dao就是单例
单例分为饿汉式和懒汉式
- 懒汉式:占用空间少但是相对而言用时比较多
- 饿汉式:占用空间大但是相对而言用时比较少
饿汉式和懒汉式的区别于应用场景:
- 区别:饿汉式线程安全,在类创建的同事就已经创建好了一个静态对象不会改变;而懒汉式不加synchronized会是线程不安全的
mysql中explain的各个参数说明:
- select_type
- simple:查询不包含union查询或子查询(基本都是这个simple)
- primary:查询中若包含任何复杂的子部分,最外层查询都会被标记
- subquery:select或where查询包含了子查询
- derived:结果会放在临时表
- union result:从union中获取结果的select
- union:若第二个select出现union,则被标记为union
- type(顺序有最好到最差)
- system:平时不会出现
- const:表示通过索引一次就找到了
- eq_ref:唯一索引扫描,表中只有一条记录与之匹配
- ref:非唯一性索引扫描
- range:一般在where语句中出现< > in等的查询
- index:全表从索引中读取
- all:全表从硬盘读取
- possible_keys:若存在索引将被列出,但实际不一定会使用
- key:实际使用的索引,没有则为null
- key_len:索引中使用的字节数,长度越短越好
- ref:显示索引的那一列被使用了
- rows:扫描了多少行
- extra:额外信息(常见)
- Using index:select中使用了覆盖索引
- Using where:用了where条件过滤