阿里前端内推一面-电话面试,在线编程
2018年08月17日 星期五 下午两点整 电话面试 40 分钟
刚刚经历人生第一个招聘面试,还是阿里
紧张到发抖
因为是学长内推,小姐姐给面子人很好
给了两道算法题都写过,上手直接写,很快就写完了
第一道题凭记忆写的,也不知道写对了没有。写完还继续问我还有没有更好的方法。
编程是给我邮箱里发了一个链接,我点进去链接在线编
然后是对着我的简历问了项目的事情
让我描述一下项目功能,我主要描述了写的资源管理网站
问我们进销存系统里面还用到Tomcat吗
问我基础知识几乎都没有回答上来了
问我测试算法题里Promise那道题会写了吗
问我Java中List<String>和数组String有什么区别,问我两者插入数据时的区别
问我会不会数据库ibatise
问我是不是用过ajax,一般都发什么请求,比如get、post,然后问我ajax跨域请求会不会
问我数据库怎么添加索引,为什么要添加索引
问我会不会jQuery
问我bootstrap和jQuery的区别
问我ACM大赛是什么题,有组队吗
第一道题目
//评测题目: 给定一个数组,向右侧旋转这个数组k次,k是非负数。
Example 1:
Input: [1,2,3,4,5,6,7] and k = 3
Output: [5,6,7,1,2,3,4]
Explanation:
rotate 1 steps to the right: [7,1,2,3,4,5,6]
rotate 2 steps to the right: [6,7,1,2,3,4,5]
rotate 3 steps to the right: [5,6,7,1,2,3,4]
Example 2:
Input: [-1,-100,3,99] and k = 2
Output: [3,99,-1,-100]
Explanation:
rotate 1 steps to the right: [99,-1,-100,3]
rotate 2 steps to the right: [3,99,-1,-100]
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
if(nums.length == 0) return ;
var kk = k % nums.length;
var p = nums.length - kk - 1;
re(nums,0,p);
re(nums,p,nums.length);
nums.reverse();
};
function re(num, start, end){
var i = start;
var j = end - 1;
while(i < j){
var t = num[i];
num[i] = num[j];
num[j] = t;
}
}
//评测题目: 给定一个数组,向右侧旋转这个数组k次,k是非负数。
Example 1:
Input: [1,2,3,4,5,6,7] and k = 3
Output: [5,6,7,1,2,3,4]
Explanation:
rotate 1 steps to the right: [7,1,2,3,4,5,6]
rotate 2 steps to the right: [6,7,1,2,3,4,5]
rotate 3 steps to the right: [5,6,7,1,2,3,4]
Example 2:
Input: [-1,-100,3,99] and k = 2
Output: [3,99,-1,-100]
Explanation:
rotate 1 steps to the right: [99,-1,-100,3]
rotate 2 steps to the right: [3,99,-1,-100]
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
if(nums.length == 0) return ;
var kk = k % nums.length;
var p = nums.length - kk - 1;
re(nums,0,p);
re(nums,p,nums.length);
nums.reverse();
};
function re(num, start, end){
var i = start;
var j = end - 1;
while(i < j){
var t = num[i];
num[i] = num[j];
num[j] = t;
}
}
我写的答案:
思路是数组分两半,左边倒序,右边倒序,总的倒序。
问我还有没有其他更加好的思路?
var rotate = function(nums, k) {
if(nums.length == 0) return ;
var kk = k % nums.length;
var p = nums.length - kk - 1;
re(nums,0,p);
re(nums,p,nums.length);
nums.reverse();
};
function re(num, start, end){
var i = start;
var j = end - 1;
while(i < j){
var t = num[i];
num[i] = num[j];
num[j] = t;
}
}
#内推##阿里巴巴##前端工程师##面经##提前批#if(nums.length == 0) return ;
var kk = k % nums.length;
var p = nums.length - kk - 1;
re(nums,0,p);
re(nums,p,nums.length);
nums.reverse();
};
function re(num, start, end){
var i = start;
var j = end - 1;
while(i < j){
var t = num[i];
num[i] = num[j];
num[j] = t;
}
}