1.唯一索引与主键索引的比较

唯一索引
唯一索引不允许两行具有相同的索引值。
如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。例如,如果在 employee 表中的职员姓氏(lname) 列上创建了唯一索引,则所有职员不能同姓。

主键索引
主键索引是唯一索引的特殊类型。
数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。
在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。

它们的一些比较:
(1)对于主健/unique constraint , oracle/sql server/mysql等都会自动建立唯一索引;
(2)主键不一定只包含一个字段,所以如果你在主键的其中一个字段建唯一索引还是必要的;
(3)主健可作外健,唯一索引不可;
(4)主健不可为空,唯一索引可;
(5)主健也可是多个字段的组合;
(6)主键与唯一索引不同的是:
a.有not null属性;
b.每个表只能有一个。

2.java

1)HashMap  HashTable的区别

2)map的遍历

3)HashMap如何实现

4)垃圾回收机制

5)Throwable上还有基类么 Object

6)List容器中有100个元素,一个个删除

循环删除List数组容器里面元素

嗯,大部分都会遇到这个问题,定义一个List<T>数组,然后需要循环一下,删除其中一个元素,但会遇到类似问题:
java.util.ConcurrentModificationException
怎么办,实用主义者会把List数组转换成Iterator进行迭代删除,一点问题都没有:

 public static void main(String[] args) {List<Student> students = pareStudents();System.out.println("size : " + students.size());System.out.println(students);System.out.println("delete Student with name xiaoi");Iterator<Student>stuIter = students.iterator();while(stuIter.hasNext()){Student stu = stuIter.next();if(stu.getName().equals("xiaoi")){stuIter.remove();}}System.out.println("size : " + students.size());System.out.println(students);}

Iterator进行循环操作,然后删除,是很安全的。可以解决一些问题。但不要再使用Iterator的时候使用students.remove(stu),一样会给出 java.util.ConcurrentModificationException 错误。

另一个方法就是重新构建一个List,把原先的students 数组作为参数传递进去即可,虽然生成了一个全新的数组,但都是Student对象的引用,多个引用的地址数组而已。

 public static void main(String[] args) {List<Student> students = pareStudents();System.out.println("size : " + students.size());System.out.println(students);System.out.println("delete Student with name xiaoi");for(Student s : new ArrayList<Student>(students)){if(s.getName().equals("xiaoi")){students.remove(s);}}System.out.println("size : " + students.size());System.out.println(students);}

7)说说jvm

8)j vm性能调优

3.多线程

1)线程间共享数据的方式有哪几种,各自的优缺点

2)ThreadLocal

3)线程池具体是通过哪个类和哪些方法实现的,怎么实现的

4)多线程之间是如何通信的

4.设计模式

1)单例模式

2)动态代理

5.Spring

1)Ioc和AOP的理解

2)源码

3)Spring MVC页面渲染的几种方式

4)AOP基于什么设计模式实现的?具体说下cglib代理和jdk代理的区别,他们是怎么实现动态代理的,核心类和核心方法是什么

5)spring bean的几种状态

在Spring的Bean配置中,存在这样两种情况:

  1. <bean id="testManager" class="com.sw.TestManagerImpl" scope="singleton" />
  2. <bean id="testManager" class="com.sw.TestManagerImpl" scope="prototype" />

当然,scope的值不止这两种,还包括了request,session 等。但用的最多的还是singleton单态,prototype多态。

6)spring的缓存优化是怎么做的?如何清缓存,缓存哪里用到了,用他做什么?

7)hibernate的二级缓存
8)spring如何接手Hibernate的事务
9)spring的缓存优化,tomcat在哪设置缓存
10)使用spring初始化需要加载的东西,bean.dispatcherServlet,加载Html,spring的配置文件

6.NIO

7.redis

1)持久化

2)如果redis缓存宕掉了怎么办

8.项目

1)用哪些技术解决哪些难题?

9.

1)数据库优化方面的经验

2)搜索引擎的区别

3)oracle,mysql的区别

10.linux

1)过滤日志中的ip,并统计其个数

2)shell前100ip

3)linux性能优化

4)两个服务器之间拷贝文件的命令 scp

5)查出张三所有日志文件,并将其归档,求总数和

11、如果数据存的过程中突然出错怎么办?

12.数据量多大,你们做的系统如何保证数据安全

13.sql:求学生的总分数

14.如果系统已经部署上了,此时若出现数据出错怎么办?

15.如果死锁怎么查看?有这么多对象,先过滤哪些对象

16.

多台不同的机器(每台机器上部署相同的Java执行程序),同时读写同一个数据库中的同一张表,如何避免冲突?

1个MySQL数据库,其中有一张资源表(假设有1000条记录,每条记录代表1个资源,在这张表中,有一个Status字段,Status=0表示“待处理”,Status=1表示“正在处理”,Status=2表示“处理完成”),现在有5台机器,每台机器上部署相同的执行程序,每台机器做的事情就是 :
① 到这个数据库中,获取1条Status=0的记录,然后将Status置为1,
② 然后根据这条记录中提供的资源信息进行处理,
③ 处理完了之后,修改数据库中的这条记录的Status为2,表示“处理完毕”;
④ 重复①到③步,直到在这张表中找不到Status=0的记录为止。
请问如何实现?给设计方案也行。
(另外,弱弱地问一句:我的这个情况可以用Java多线程么,在多个不同机器之间进行互斥访问数据库?)
解决:
可以把java应用拆分出两种角色,一种是处理者(N个),一种是资源管理者(1个)。

处理者:专门做“ 根据这条记录中提供的资源信息进行处理”的工作。从资源管理者处取status为0的记录,处理之,处理完通知资源管理者。
资源管理者:管理一个消息队列,队列里是各个处理者发来的请求。一般分两种请求,取资源和完成某资源的处理。根据请求对数据表做相应操作,管理资源的状态。

这种情况下,因为只有资源管理者唯一接触数据库,不需要再考虑神马互斥访问的问题,数据库资源表也不需要加锁。处理者和资源管理者之间以消息通信。高效也易实现。(隔离可变性设计)

17.分布式缓存
18注解写个table
19.什么是平衡二叉树,如何保持平衡的

互联网java常见面试题相关推荐

  1. Java常见面试题,2021年及答案汇总

    Java常见面试题,2021年及答案汇总 其实,博主还整理了,更多大厂面试题,直接下载吧 下载链接:高清172份,累计 7701 页大厂面试题 PDF 1.什么是ThreadPoolExecutor? ...

  2. Java常见面试题及答案汇总

    面临金三银四黄金跳槽季,不光是很多在职人员跃跃欲试,也有很多大学生积极地加入到应聘行列.作为技术出身的我们,找工作的一大前提就是技术是否能过关.而对于Java程序员来说,至少是两关的面试,这首个关卡就 ...

  3. 2018常见的java面试题_2018新版Java常见面试题

    千锋西安Java编程培训班的老师总结了2018新版Java常见面试题,一起来看! 1.1.java基础 ●面向对象的特征:继承.封装.多态 继承[构造器.protected关键字.向上转型Java实现 ...

  4. 总结Java常见面试题和答案

    转载自  总结Java常见面试题和答案 int和Integer有什么区别?   答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装 ...

  5. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  6. JAVA常见面试题及解答

    JAVA常见面试题及解答(精华)   1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class ...

  7. Java常见面试题 + 答案

    Java常见面试题 + 答案 一.Java 基础 二.容器 三.多线程 四.反射 五.对象拷贝 六.Java Web 七.异常 八.网络 九.设计模式 十.Spring / Spring MVC 十一 ...

  8. Java常见面试题(2)

    Java常见面试题(2) 面向对象的三个特征 谈谈你对多态的理解 多态的好处: 什么是Java程序的主类?应用程序和小程序的主类有何不同? 为什么Java里有基本数据类型和引用数据类型 值传递和引用传 ...

  9. Java常见面试题 Java面试必看 (一)

    本篇博客是本人收集网上Java相关的资料整理所得,仅供参考. 一.Java基础 1.JDK 和 JRE区别 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java ...

最新文章

  1. ESX上ORACLE 10.2RAC(4.在REHAT4.7中安装ORACLE RAC)
  2. 洛谷 P5019 铺设道路(差分)
  3. 四款 5G 版 iPhone 12 齐发,支持北斗系统,你准备好了吗?
  4. Windows任务计划创建计划,定时执行PowerShell命令
  5. 适合创业团队使用的团队协作工具大盘点
  6. canvas中strokeRect的渲染问题strokeRect把一像素的边框渲染成两像素
  7. PAT (Basic Level) Practice (中文)1009 说反话 (20 分)
  8. 中超联赛提交函数的c语言,国家体育总局
  9. (转载)Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
  10. ttreeview 只展开一层节点_K8S工作节点的演变:由Docker到CRI-O
  11. 4. linux调用文件计算阶乘前5项和_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
  12. dataloader 源码_[莫烦 PyTorch 系列教程] 3.5 – 数据读取 (Data Loader)
  13. 三、Dart Hello World
  14. python k线顶分型_顶分型底分型代码
  15. 计算机专业毕设外文翻译springboot_计算机毕业设计之SpringBoot物流管理系统
  16. php 微信表情字符,微信公众平台开发--表情符号
  17. 【sketchup 2021】草图大师的辅助建模工具1【量角器与文字、尺寸标注与三维字、实体工具】
  18. 致远项目管理SPM系统五大技术平台层-CMP能力概述
  19. Qemu复现雄迈摄像头固件漏洞
  20. 20210726:FLAC刻录音乐CD教程05-总结

热门文章

  1. 人脸识别系统_人脸注册
  2. 【区块链 | 数据上链】星火链网、蚂蚁联盟链等区块链业务系统开发指南
  3. 随机过程(2)__马尔可夫链的主要性质__查普曼-科莫高洛夫方程
  4. php filter_sanitize_number_int,PHP中的FILTER_SANITIZE_NUMBER_FLOAT常量
  5. IDEA怎么查看现在的项目使用的JDK版本?
  6. Java中Scanner的用法
  7. 11.构造方法:什么是构造方法???使用构造方法要注意哪七点???
  8. 每天学习一个设计模式(八):创建型之抽象工厂模式
  9. spin_lock spin_lock_irq spin_lock_irqsave、spin_lock_bh
  10. 知识点 - 割点与割边