面试题: java面试经历 已看1 抢红包如何分配每个人抢到的钱 有用 难点的面试题
2018.03.09 深圳乐唯科技
我看了下感觉这公司貌似挺不错的,面试官人也挺好的,氛围应该很不错,可惜我实力不足,唉,接续努力,下面把面试中印象较深的三个问题写一下。
面试问题1:数据库删除重复数据,多条重复的数据中只保留一条
表名 t
| a | b | c |
|---|---|---|
| 1 | 222 | 333 |
| 2 | 222 | 333 |
| 3 | 222 | 333 |
如果a字段的数据每行都不同的话SQL如下:( 保留a字段数据最小的那条,如果要保留大的就讲min(a)换成max(a) )
DELETE FROM tt WHERE NOT EXISTS(
SELECT * FROM (
SELECT *, MIN(a) AS id FROM tt GROUP BY b HAVING COUNT(*) >= 1
) e WHERE e.id = tt.a
)
- 1
- 2
- 3
- 4
- 5
ps: 上面是MySQL的用法
下面还有一种其他数据库的用法,下面这条SQL放到MySQL中运行会报错,貌似只有MySQL会报错,报错信息为:[Err] 1093 - You can’t specify target table ‘tt’ for update in FROM clause 错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中),我本来想讲select出来的外面再套一层select,但是这条语句的逻辑好像不能套一层select,套了之后会有语法错误;
DELETE FROM tt WHERE b IN(
SELECT b FROM tt GROUP BY b HAVING COUNT(*) >1
) AND a NOT IN (
SELECT MIN(a) FROM tt GROUP BY b HAVING COUNT(*)>1
)
- 1
- 2
- 3
- 4
- 5
- 6
上面是a的值不同的情况,如果每行a的值都相同呢?貌似可以用行号来标记,具体还需要在研究研究,未完待续~
面试问题2:抢红包如何分配每个人抢到的钱(抢红包算法)
@param total 红包余额
@param rest 红包剩余个数 - 1(先减去本次的个数)
private long nextMoney(long total, long rest){
if(rest < 0 || total < 0){
//如果rest或者total小于0,抛出一个异常,可以自己写一个异常处理类继承RuntimeException
throw ......
}
//如果rest为0,说明这是最后一个红包,直接返回余额
if(rest == 0){
return total;
}
//取余额平均数(要加上本次的个数)
long per = total/(rest + 1);
//取1至余额平均数的*2的随机数(数学期望值?)
long result = RandomUtils.nextLong(1, per * 2);
//如果result取大了,不能满足剩下的个数每个最小值1的要求,就留下最低余额,剩下的返回
if(total - result < rest){
result = total - rest;
}
return result;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
面试问题3:为什么要用bean,有什么好处或优势?
我回答的是什么解耦啊、使用更灵活啊、、, Σ( ° △ °|||)︴,看到面试官在无奈的摇头,,,, ╥﹏╥…
后来我在网上找了找,表示没有找到这个问题的答案,汗,我会继续找的。
面试题: java面试经历 已看1 抢红包如何分配每个人抢到的钱 有用 难点的面试题的更多相关文章
- 【5】进大厂必须掌握的面试题-Java面试-spring
spring面试问题 Q1.什么是spring? Spring本质上是一个轻量级的集成框架,可用于用Java开发企业应用程序. Q2.命名Spring框架的不同模块. 一些重要的Spring Fram ...
- 【8】进大厂必须掌握的面试题-Java面试-异常和线程
Q1.错误和异常有什么区别? 错误是在运行时发生的不可恢复的情况.如OutOfMemory错误.这些JVM错误无法在运行时修复.尽管可以在catch块中捕获错误,但是应用程序的执行将停止并且无法恢复. ...
- 【4】进大厂必须掌握的面试题-Java面试-jdbc
1.什么是JDBC驱动程序? JDBC驱动程序是使Java应用程序与数据库进行交互的软件组件.JDBC驱动程序有4种类型: JDBC-ODBC桥驱动程序 本机API驱动程序(部分为Java驱动程序) ...
- 【7】进大厂必须掌握的面试题-Java面试-Jsp
1. jsp的生命周期方法是什么? 方法 描述 公共无效的jspInit() 与servlet的init方法相同,仅被调用一次. 公共无效_jspService(ServletRequest requ ...
- =面试题:java面试基本方向 背1 有用 项目二技术学完再看
一.Java基础 1. 集合框架A)集合中泛型优点? 将运行期的ClaasCastException 转到编译期异常. 泛型还提供通配符 1)HashMap---允许一个键为null,允许多个值为n ...
- 某公司java面试经历
为什么说某公司.由于确实面完了最后挂了回来也没记住公司叫啥名字.是老乡兼好友内推去的小公司,名字有点长,所以也没记住. 公司确实太小,所说是外包公司.然后面回来后跟ACM的前学长说了,他们仅仅说所以不 ...
- 2013年9月份阿里JAVA面试经历
面试时间:2013-9 面试地点:合工大 面试内容: 1. struts2怎么实现的,原理是什么 2. session是怎么实现的?存储在哪里? 3. Java怎么创建链表的? 定义一个结点类,再定义 ...
- 中级java面试经历
2018年已经远去,2019年悄然而至.跳槽不仅是为了涨薪,更是为了锻炼自己,提高自己的能力.树挪死,人挪活.在一个公司呆的时间越长,就越老油条,从而失去不断前进的动力.现在下面就主要讲述我这一个月面 ...
- javascript 腾讯ABS云平台面试题及面试经历
既然说到面试前端肯定是Javascript各种问,只好各种答. 面试题肯定离不了,最近热门的Vue.js,React.js,Angular.js,Gulp,Webpack还有各种Js问题,还有令人头痛 ...
随机推荐
- 二叉排序树的应用(java)
package com.tree.find; public class TestSearchBST { private static class BiNode{ int data; BiNode lc ...
- @angular/cli项目构建--modal
环境准备: cnpm install ngx-bootstrap-modal --save-dev impoerts: [BootstrapModalModule.forRoot({container ...
- 201621123014《Java程序设计》第十二周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...
- c语言%.*s是什么
int i; ;i<;i++) printf("%.*s%s\n", i, " ", "########"); ; *用来指定宽度,对 ...
- java-07接口与继承
1.动手实验:继承条件下的构造方法调用 代码: package demo; class Grandparent{ public Grandparent(){ System.out.println(&q ...
- 【数论】卡塔兰数 Catalan
一.简介 设$h(0)=1$,$h(1)=1$,Catalan数满足递推式 $h(n) = h(0) \ast h(n-1) + h(1)\ast h(n-2) + \cdots + h(n-1)\a ...
- 修改git commit 最后一次提交的注释信息 以及如何退出git bash vim编辑器
https://www.cnblogs.com/sandy-happyhour/p/5950084.html 今天用git commit -m “注释”提交的时候,注释写错了,于是各种查资料开始了和g ...
- DirectX 读书笔记(14) Cube mapping之SkyBox[转]
http://blog.csdn.net/i_dovelemon/article/details/40481681 作者:i_dovelemon 来源:CSDN 日期:2014 / 10 / 26 主 ...
- Python函数-eval()
eval(source[, globals[, locals]]) 作用: 将字符串str当成有效的表达式来求值并返回计算结果.参数:source:一个Python表达式或函数compile()返回的 ...
- Java编程思想第七章复用类
7.1组合语法 在一个类中引入多个对象,以提高代码的复用性与功能. 7.2继承语法 使用继承子类可以获得,导出类可以获得基类的成员(变量与方法). 注:这里注意权限控制,若基类中的成员为默认权限,只有 ...