2021年京东研发(开发)岗位面试题
小编:管理员 1494阅读 2021.06.11
在京东商城的商品展示页面下方,总会有一些关于本商品的客户评论信息。模仿该评论模块,有如下三个表:price(商品表),userinfo(用户表),threads(评论主题表)
1.请画出以上三张表对应实体的ER图(实体字段标明主键外键即可,用箭头表示)
2.在product表中加入一条新纪录(1004,'京东空调',3000).请写出对应的SQL语句。
3.更新product表中pid为1001的商品的价格为3666。请写出对应的SQL语句。
4.在product表中查询pname中带有"京"的商品。请写出对应的SQL语句。
5.查询product表中price在1000.0与3000.0之间的所有商品并按照价格降序排序。
答案:
2.INSERT INTO product(Pid,Pname,Price)VALUES(1004,'京东空调',3000)
3.UPDATE product SET Price=3666 WHEREpid=1001
4.SELECT * FROM product WHERE pname LIKE '%京%'
5.SELECT* FROM product WHERE price<3000.0 AND price>1000.0 ORDER BY price DESC
有7克,2克砝码各一个,天平一只,如何只用这些物品3次将140的盐分为50、90克各一份?
1、将140克盐放天平两边平分两份各70克;
2、将一份70克盐平分两份各35克;
3、将7克和2克砝码各方天平一侧,取一份35克盐向天平两端加知道左右平衡,此时与7克砝码一侧为15克盐,与2克砝码一侧为20克盐;
4、此时20克盐加70克盐为90克,剩余合并为50克。
京东商城的商品搜索功能是整个网站架构中非常重要的一个模块。当用户在搜索栏中写入他们想要搜索的关键字时,往往会有一些热门的关键词出现在提示框中。对于这一功能的实现,你认为需要注意什么。
1.用户输入一些关键字查询时,将用户的相关信息(ip,cookie,keyword,usernameetc.),暂时存储。(临时对象,临时文件等等)。
2.定时从暂时缓存处,一次行读取,写入到数据库中。
3.记录下来关键字后,需要定时从数据库中提取出来。
4.数据库存储建议采用Oracle,因为这个数据量会增加很快,且很大。最好采用分表处理。
5.定时生成相关关键字页面,可以与定时关键字写入数据库放在一起。
现有一圆环形路,路上有n个加油站,第i个加油站储存有Ni升容量的油,每两个加油站之间有一定的距离(km),一汽车初始无油,该车每公里消耗w升油,请问该车从哪个加油站出发可以绕该环形路行驶一圈。给出所有的算法及时间的复杂度。
对这个问题,我提供三种解题思路:首先不妨设第i个加油站与之后加油站距离为g[i]/w,这样相当于每公里消耗1升油,这里的假设和量纲缩放并不影响实际结果,只是简化计算。
方法一:从左往右遍历,记住油量和最少的位置,从其下一个位置出发。
int selectGasStation_1(const vector
int res = 0, min = N[0] - g[0], sum = min;
for (int i = 1; i < n; ++i)
{
sum += N[i] - g[i];
if (sum < min) {
min = sum;
res = i;
}
}
return sum >= 0 ? (res + 1) % n : -1;
}
方法二:开辟一个长度为N的数组v,记录N[i]-g[i]。从后往前遍历数组v。如果v[i]小于零,将其与v[i-1]合并,因为此时i不可能作为起点。如果v[i]不小于零,记入sum,并记录该位置pos(有可能作为起点)。最后,如果v[0]大于等于零,说明整个路段已经没有负的v[i]。返回0即可。如果v[0]+sum>=0,有满足条件的加油站,返回pos。否则,返回-1。
int selectGasStation_2(const vector
int v[n];
for (int i = 0; i < n; ++i)
v[i] = N[i] - g[i];
int sum = 0, pos = -1;
for (int i = n-1; i > 0; --i)
{
if (v[i] >= 0) {
sum += v[i];
pos = i;
} else {
v[i-1] += v[i];
}
}
if (v[0] >= 0) return 0;
else if (v[0] + sum >= 0) return pos;
else return -1;
}
方法三:开辟一个长度为2*n-1的数组v,记录N[i]-g[i](环转化为线性)。使用两个指针start和end。如果[start, end]区间和小于0,令start = end + 1并继续。直至找到长度为N的区间[start, end],并且区间和大于等于0。找到返回start。
int selectGasStation_3(const vector
int v[2 * n];
for (int i = 0; i < n; ++i)
{
v[i] = N[i] - g[i];
v[i+n] = N[i] - g[i];
}
int sum = 0;
for (int start = 0, end = 0; start <= n && end < 2 * n; end++)
{
if (sum + v[end] < 0) {
start = end + 1;
sum = 0;
} else {
if (end - start == n - 1)
return start;
sum += v[end];
}
}
return -1;
}
以上三种解法的时间复杂度均为O(n),应该满足最苛刻的效率要求了。
Asp.Net种页面之间传值有几种方式?
Asp.Net中的Session经常丢失,怎么解决?
相关推荐
- 2021年美团产品开发面试题 第1题: 95,88,71,61,50,()95 - 9 - 5 = 8188 - 8 - 8 = 7271 - 7 - 1 = 6361 - 6 - 1 = 5450 - 5 - 0 = 4540 - 4 - 0 = 36第2题: 1,2,3.。。10球放入1,2,。。。。10个盒子里,恰好3个球与盒子标识不等,这样的方法有几种?从标号为1,2,…,10的10个球中…
- 2021年京东产品经理面试题 第1题: 什么是产品?第2题: 举例一个你认识失败产品的案例,请说出其用户体验的弊端第3题: 请描述一个产品的生命周期都包含哪些阶段?第4题: 请在你熟练使用的工具后面打钩,其他您熟悉的工具请填写在空白处。1 word 2 powerpoint 3 Axure;4 MindMan…
- 经典笔试题-JDBC及Hibernate篇 五、JDBC 及Hibernate:(共12 题:基础10 道,中等难度2 道)110、数据库,比如100 用户同时来访,要采取什么技术解决?【基础】 答:可采用连接池。111、什么是ORM?【基础】 答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象…