上周刚面完百度,首次面试的经验不足,还是有一点挫败感的,看到同学在群里的招聘信息(内推邮箱),我还是在很短时间内修改了简历并投递了滴滴的算法岗实习,在第二天就收到了滴滴的面试电话,我突然又进入到了比较紧张的准备状态。
正所谓初生牛犊不怕虎,自己本事没到家,但还要努力尝试,增长经验和阅历,把在百度面试过程中答得比较模棱两可、逻辑混乱的知识重新梳理一遍,将数据结构的一些排序算法背过并默写,时间有限,我只把我比较熟悉的重新复习,已达到熟练的程度。剩下的就交给命运。
面试前
时间飞逝,短短四天,只做了梳理工作,没有其他的学习,骑上私人小宝马----摩拜,穿梭在去滴滴的小路上,看着路边的景色,仿佛心情平静了下来,不骄不躁,做最真实的自己。临近公司附近,导航竟然连林荫小道都找得到,那是一个“这草坪上本来没有路,走的人多了,也便成了路”的典型,穿过去换到了平坦的似公园内的人行道,在上坡经过一个小兰亭,哦买噶,是仅能一个人通过的、有工作人员看守的、手动开关的网状小铁门,这导航越做越无敌了!通过它,我看到了开阔的视野,大片的草坪环绕着,滴滴在中央,虽然不大,但是环境挺优雅。
在外面稍等了片刻,回忆回忆自己准备的东西,随后联系面试官,将我带到了会议室,进行题目考察。
面试中
问题1:给定一个螺旋矩阵,依次从小到大进行打印
[[ 1, 2, 3, 4, 5, 6, 7],
[18,19,20,21,22,23, 8],
[17,28,27,26,25,24, 9],
[16,15,14,13,12,11,10]]
答:(代码不给出了,因为我答的这种方式不是面试官想要的解答)
使用java语言,遍历二维数组将数据存到一个一维数组里边,使用冒泡排序法进行排序输出。
面试官意见
:能否用控制索引来循环输出 (当时尝试写了十分钟,没有搞定,结束条件没有总结出来)
正解:
寻找规律
1x1矩阵 环绕1周
2x2矩阵 环绕1周
3x3矩阵 环绕2周
4x4矩阵 环绕2周
5x5矩阵 环绕3周
6x6矩阵 环绕3周
…
得出结论:环绕圈数 行数/2 向上取整
代码实现:
import math
''' coding by Li at 2019-08-26 '''
def sort_print():
arr = [ [1, 2, 3, 4, 5, 6, 7],
[18,19,20,21,22,23, 8],
[17,28,27,26,25,24, 9],
[16,15,14,13,12,11,10]]
# 获取行数、列数
n_row = len(arr)
n_col = len(arr[0])
# 取值范围0~(行数/2 向上取整)
for i in range(math.ceil(n_row/2)):
# 先从第一行开始遍历 1,2,3,4,5,6,7
# i = 0 j=[0-6]
for j in range(i,n_col-i):
print(arr[i][j])
# 遍历竖的一列 7,8,9,10
# i=[1-3] j=7
for j in range(i+1,n_row):
print(arr[j][n_col-i-1])
# 遍历底层一行 [16,15,14,13,12,11,10]
# i = 3 j=[6-0]
for j in range(n_col-i-2,i-1,-1):
print(arr[n_row-i-1][j])
# 遍历左边一竖 16,17,18
# i = [2,1] j=[0]
for j in range(n_row-i-2,i,-1):
print(arr[j][i])
# 循环一轮 标志
print('-------------------')
if __name__ == '__main__':
sort_print()
问题2:sql按时间统计订单数量
问题描述: 给定三张数据库
Basic表数据:
第一问
:使用sql统计一小时内有效订单的数量(订单产生时间)
insert into view(cid,order_num,insert_time,time_hour)
select
cid,
count(*) as num ,
NOW(), # NOW()获取当前日期
DATE_FORMAT(order_form_time,'%Y-%m-%d %H:00:00') as date
from basic
where flag=1 # 选择有效的数据
group by date
order by date;
执行结果查看view表
第二问
:按15分钟统计订单数量
insert into view_minute(cid,order_num,insert_time,time_minute)
SELECT cid,COUNT( * ) AS num,NOW(),time
FROM
(
select
cid,
DATE_FORMAT(
CONCAT(Date(order_form_time),' ',
HOUR(order_form_time),':',
FLOOR(MINUTE(order_form_time) / 15)*15),
'%Y-%m-%d %H:%i'
)as time,
flag
from basic
where flag=1
) a
GROUP BY DATE_FORMAT( time, '%Y-%m-%d %H:%i' )
ORDER BY time;
效果如下:
面试结束
面试完题目之后,面试官跟我说了很多中肯的意见,我觉得面试不单单是要找工作,也是一次学习的机会,不会的地方要抽时间补足,既然选择了做这一行,就加油吧!期待明天会更好!