目录

  • 1.哪些情况不要创建索引
  • 2.最左匹配原则
  • 3.包含 order by 和 group by 的sql语句,应该怎么使用索引
  • 4.场景题:where name="张三" order by age;应该怎样建立索引
  • 5.where name="张三" or class=1 order by age;:结合索引应该怎么优
  • 6.数据库事务特性,分别是什么意思
  • 7.隔离级别,RR和RC的区别
  • 8.对于时间复杂度是怎么理解和怎么计算
  • 9.快排说一下,复杂度怎么计算的,快排的底层思想是啥?
  • 10.TCP”三握四挥“的过程
  • 11.ThreadLocal讲一下,实现原理,使用的时候有什么需要注意的

1.哪些情况不要创建索引

哪些情况不要创建索引
1)表记录太少
300万数据时MySQL性能就开始下降了,这时就可以开始开始优化了
2)经常增删改的表
提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件
3)where条件里用不到的字段不创建索引

2.最左匹配原则

过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。同时遇到范围查询(>、<、between、like)就会停止匹配。

3.包含 order by 和 group by 的sql语句,应该怎么使用索引

order by

无过滤 不索引
顺序错,必排序
方向反 必排序

ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序
group by
group by 先排序再分组,遵照索引建的最佳左前缀法则
当无法使用索引列,增大max_length_for_sort_data和sort_buffer_size参数的设置
where高于having,能写在where限定的条件就不要写在having中了
group by没有过滤条件,也可以用上索引。Order By 必须有过滤条件才能使用上索引。

4.场景题:where name=“张三” order by age;应该怎样建立索引

index(name,age)

5.where name=“张三” or class=1 order by age;:结合索引应该怎么优

index(name,class,age)

6.数据库事务特性,分别是什么意思

ACID
原子性(atomicity)
原子性是指事务是一个不可分割的工作单位,要么全部提交,要么全部失败回滚。
一致性(consistency)
根据定义,一致性是指事务执行前后,数据从一个 合法性状态 变换到另外一个 合法性状态 。这种状态是 语义上 的而不是语法上的,跟具体的业务有关。

隔离型(isolation)
事务的隔离性是指一个事务的执行 不能被其他事务干扰 ,即一个事务内部的操作及使用的数据对 并发 的其他事务是隔离的,并发执行的各个事务之间不能互相干扰

持久性(durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是 永久性的 ,接下来的其他操作和数据库故障不应该对其有任何影响。
持久性是通过 事务日志 来保证的。日志包括了 重做日志 和 回滚日志 。

7.隔离级别,RR和RC的区别



读未提交之脏读
对于两个事务 Session A、Session B,**Session A 读取 了已经被 Session B 更新 但还 没有被提交 的字段。**之后若 Session B 回滚 ,Session A 读取 的内容就是 临时且无效的

读已提交之不可重复读
在事务2中commit,事务1没有commit读到了事务2提交的数据(不可重复读)

可重复读
不可重复读和脏读都没有问题

可重复读出现幻读的现象

8.对于时间复杂度是怎么理解和怎么计算

时间复杂度为一个算法流程中,常数操作数量的一个指标。常用0(读作big 0)来表示。具体来说,先要对一个算法流程非常熟悉,然后去写出这个算法流程中,发生了多少常数操作,进而总结出常数操作数量的表达式。
在表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果为f(N),那么时间复杂度为0(f(N))。
评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本下的实际运行时间,也就是“常数项时间”。

9.快排说一下,复杂度怎么计算的,快排的底层思想是啥?

最好时间复杂度为O(logN),最坏时间复杂度O(n^2)
用Mater公式计算

如果打的比较正的话在中间的位置,那么就是2*T(N/2)+(N) (d为额外的时间复杂度)
可以看出是第三个

如果打偏一直在最后一个位置,那么就是O(n^2)
快速排序的思想是基于分治算法。

分解:分解原问题为结构相同的子问题(即寻找子问题)
解决:当分解到容易求解的边界后,进行递归求解
合并:将子问题的解合并成原问题的解

10.TCP”三握四挥“的过程

TCP 是一个双工协议,为了让双方都保证,建立连接的时候,连接双方都需要向对方发送 SYC(同步请求)和 ACK(响应)。
握手阶段双方都没有烦琐的工作,因此一方向另一方发起同步(SYN)之后,另一方可以将自己的 ACK 和 SYN 打包作为一条消息回复,因此是 3 次握手——需要 3 次数据传输。
到了挥手阶段,双方都可能有未完成的工作。收到挥手请求的一方,必须马上响应(ACK),表示接收到了挥手请求。类比现实世界中,你收到一个 Offer,出于礼貌你先回复考虑一下,然后思考一段时间再回复 HR 最后的结果。最后等所有工作结束,再发送请求中断连接(FIN),因此是 4 次挥手。

11.ThreadLocal讲一下,实现原理,使用的时候有什么需要注意的

ThreadLocal的实现原理是每一个Thread维护一个ThreadLocalMap映射表,映射表的key是ThreadLocal实例,并且使用的是ThreadLocal的弱引用 ,value是具体需要存储的Object。下面用一张图展示这些对象之间的引用关系,实心箭头表示强引用,空心箭头表示弱引用。

注意:内存泄漏
弱引用,只要发生gc就会回收,但是会出现一个问题
1.ThreadLocalMap中就会出现key为null的Entry,就没有办法访问这些key为null的Entry的value,如果当前线程再迟迟不结束的话,这些key为null的Entry的value就会一直存在一条强引用链:Thread Ref -> Thread -> ThreaLocalMap -> Entry -> value永远无法回收,造成内存泄漏。
2.当然,如果当前thread运行结束,threadLocal,threadLocalMap,Entry没有引用链可达,在垃圾回收的时候都会被系统进行回收。
3 但在实际使用中 我们有时候会用线程池 去维护我们的线程,比如在Executors.newFixedThreadPool()时创建线程的时候,为了复用线程是不会结束的,所以threadLocal内存泄漏就值得我们小心

set、get、remove方法会去检查所有键为null的Entry对象

京东数科Java一面面经相关推荐

  1. 京东数科java咋样_校招|京东数科 Java 实习 一面

    作者:杀虫大师 来源:牛客网 京东数科Java实习一面 视频面试,35分钟 1. 自我介绍 2. 项目介绍 3. 如何设计订单系统 4. 如何设计秒杀系统,超售,重复排队,缓存雪崩 5. MyBati ...

  2. 京东数科java一面【过】

    小哥哥也太好了,给我聊了好多好多道理 总时长:57分钟 自我介绍 实习经历[聊了挺多] 集合方面 Collection[list(写时复制)/set/Queue(阻塞队列)] Map[HashTabl ...

  3. 【JDK版本常见报错及其解决,京东数科Java面试

    Unsupported major.minor version 51.0 翻译一下就是:不支持的专业版本51.0 (英语不好哈)大概意思就是你用的某一个东西版本不对,导致了系统不支持! 当时很是疑惑, ...

  4. 直击JDD | 陈生强:京东数科的底层是数字化操作系统

    点击「京东数科技术说」可快速关注 11月19日,由京东集团主办的JDD-2019京东全球科技探索者大会在京开幕,京东数字科技集团CEO陈生强作了题为"以科技为美,为价值而生"的主旨 ...

  5. 华为+京东数科(原京东金融)面经--Java后台开发

    华为: 1.笔试中遇到的问题,如何解决的?(Scanner 如何结束循环读取数据,笔者在面试中因没有理解到Scanner类的hasNext()与hasNextLine()是阻塞方法,导致没有正确退出循 ...

  6. 京东数科首次公开:强一致、高性能分布式事务中间件JDTX

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 张亮 来源 | http://1t.click/aJPE 在分布式数据库.云原生数 ...

  7. 接口测试用例模板_ITest:京东数科接口自动化测试实践

    ITest 作者:郑琳 京东数科平台开发团队原创,转载请获得授权 导读:你是否为每天"点点点"的工作而感到索然无味?你是否苦于没有合适的工具而对复杂的测试任务望而却步?频繁变动的接 ...

  8. 京东数科一面实习面经

    京东数科面经(2021年1月13日上午11点) 面试官人挺好的,整个过程挺耐心听我讲并且还会和我一起分析,一次很有收获的面试经历. 面试总时长:43分钟 自我介绍 (没有聊项目-可能看技术栈太简单了) ...

  9. 京东数科2020双十一备战实录

    2020年9月14日,京东数科正式进入11.11备战阶段.本次参与大促备战的团队共计19支,包括支付.中台.消金.运维及客服等,并继续由开放中台侧质量管理部组织各方开展备战工作. 中台侧负责人施李荣在 ...

最新文章

  1. C语言--返回局部变量的地址
  2. 利用max-height适应多尺寸屏幕的下拉动画
  3. Spring MVC-05循序渐进之数据绑定和form标签库(下) 实战从0到1
  4. cent os 下使用hashmap + string
  5. 亚马逊面试有几轮_经过几个月的Google面试准备,我被亚马逊录用
  6. 引用activity_允许其他应用启动您的 Activity
  7. jquery easyui datagrid改变某行的值
  8. [设计] - 判断LOGO好坏的12条参考标准
  9. java spring boot 项目 热加载 有利于快速开发
  10. excel函数修改服务器端数据,勤哲Excel服务器表达式函数详解
  11. 广联达报错access_广联达土建算量软件错误提示大全及解决方法(持续更新至20170418)...
  12. iSCSI网络存储之IPSAN
  13. 树莓派Raspberry Pi 3 安装CentOS7,并扩展内存卡剩余空间---成功的经验
  14. c语言字符程序示例,C语言程序设计实例大全
  15. linux下swp文件
  16. 王立平--scard0与scard1分别指的是什么?以及路径获取
  17. JavaScript纯数字密码的密码复杂度简单校验
  18. 统一组织机构信用代码(从正则到方法验证,JavaScript)
  19. cesium-加载geoserver发布的tms服务
  20. 会议通知html页面,【会议通知H5】送你最新会议邀请函H5教程,请点击查收!

热门文章

  1. Restful 是什么? 怎么使用Restful
  2. 驰骋BPM系统-表单引擎-流程引擎 页面更换
  3. 齐鲁理工学院计算机专业在哪个校区,齐鲁理工学院有几个校区,哪个校区最好及各校区介绍...
  4. 抚顺同洲计算机学校,计算机专业的实习调研报告.docx
  5. bzoj4605: 崂山白花蛇草水(权值线段树套k-dtree)
  6. android文字闪动效果
  7. 全球与中国户外楼梯升降机市场现状及未来发展趋势
  8. C语言中的连等式解析
  9. 自我评价范文计算机专业,计算机专业求职自我评价范文
  10. 如何禁用/启用笔记本内置键盘?