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 抢红包如何分配每个人抢到的钱 有用 难点的面试题的更多相关文章

  1. 【5】进大厂必须掌握的面试题-Java面试-spring

    spring面试问题 Q1.什么是spring? Spring本质上是一个轻量级的集成框架,可用于用Java开发企业应用程序. Q2.命名Spring框架的不同模块. 一些重要的Spring Fram ...

  2. 【8】进大厂必须掌握的面试题-Java面试-异常和线程

    Q1.错误和异常有什么区别? 错误是在运行时发生的不可恢复的情况.如OutOfMemory错误.这些JVM错误无法在运行时修复.尽管可以在catch块中捕获错误,但是应用程序的执行将停止并且无法恢复. ...

  3. 【4】进大厂必须掌握的面试题-Java面试-jdbc

    1.什么是JDBC驱动程序? JDBC驱动程序是使Java应用程序与数据库进行交互的软件组件.JDBC驱动程序有4种类型: JDBC-ODBC桥驱动程序 本机API驱动程序(部分为Java驱动程序) ...

  4. 【7】进大厂必须掌握的面试题-Java面试-Jsp

    1. jsp的生命周期方法是什么? 方法 描述 公共无效的jspInit() 与servlet的init方法相同,仅被调用一次. 公共无效_jspService(ServletRequest requ ...

  5. =面试题:java面试基本方向 背1 有用 项目二技术学完再看

    一.Java基础 1. 集合框架A)集合中泛型优点? 将运行期的ClaasCastException 转到编译期异常.  泛型还提供通配符 1)HashMap---允许一个键为null,允许多个值为n ...

  6. 某公司java面试经历

    为什么说某公司.由于确实面完了最后挂了回来也没记住公司叫啥名字.是老乡兼好友内推去的小公司,名字有点长,所以也没记住. 公司确实太小,所说是外包公司.然后面回来后跟ACM的前学长说了,他们仅仅说所以不 ...

  7. 2013年9月份阿里JAVA面试经历

    面试时间:2013-9 面试地点:合工大 面试内容: 1. struts2怎么实现的,原理是什么 2. session是怎么实现的?存储在哪里? 3. Java怎么创建链表的? 定义一个结点类,再定义 ...

  8. 中级java面试经历

    2018年已经远去,2019年悄然而至.跳槽不仅是为了涨薪,更是为了锻炼自己,提高自己的能力.树挪死,人挪活.在一个公司呆的时间越长,就越老油条,从而失去不断前进的动力.现在下面就主要讲述我这一个月面 ...

  9. javascript 腾讯ABS云平台面试题及面试经历

    既然说到面试前端肯定是Javascript各种问,只好各种答. 面试题肯定离不了,最近热门的Vue.js,React.js,Angular.js,Gulp,Webpack还有各种Js问题,还有令人头痛 ...

随机推荐

  1. vue router按需加载

    import Vue from 'vue' import Router from 'vue-router' Vue.use(Router); //按需加载,当渲染其他页面时才加载其组件,并缓存,减少首 ...

  2. DB21019E An error occurred while accessing the directory "/root".

    如果是在Linux上刚装完DB2即刻建立database,可能会遇到错误DB21019E An error occurred while accessing the directory "/ ...

  3. @angular/cli项目构建--httpClient

    app.module.ts update imports: [ HttpClientModule] product.component.ts import {Component, OnInit} fr ...

  4. 将变参格式化到一个string对象中

    该小程序演示了变参的用法.它的功能是,仿照sprintf,将变参内容保存到string中. /* 功能说明: 仿照sprintf,将字符串格式化到一个string对象中. 实现方式: 该例子主要是用来 ...

  5. Unity Shader 创建程序纹理贴图

    创建一个脚本 附加到一个游戏体上 using UnityEngine;using System.Collections; public class ProceduralTexture : MonoBe ...

  6. 前端跨域问题,以及ajax,jsonp,json的区别

    看了很多网上的资料,小七感觉都没有完全解决我的疑惑以及问题,所以特意拿出通俗易懂的话讲解跨域问题,以及ajax,jsonp,json的区别.首先先说跨域问题什么时候需要跨域?[1]域名不同(即网址不同 ...

  7. flask之flask_socketio

    js客户端发送 {'op':'descrip', 100} python服务端收到的为 dict, 回复客户端可以用emit(str(json.dumps(dict)), room=roomname) ...

  8. 在阿里云服务器上安装git

    https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git 有yum的系统执行下列命令(已测试) $ yum in ...

  9. 在<img src="..." title="..."> 中使title的内容换行的方法

    在<img src="..." title="...">中要使TITILE的内容换行,不能使用html标签,只能用ASCII码,方法如下: < ...

  10. 蓝桥杯 算法训练 ALGO-121 猴子分苹果

      算法训练 猴子分苹果   时间限制:1.0s   内存限制:256.0MB 问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果 ...