网易笔试

选择题10道,每道题4分。
编程题3道,每题20分。
第一题,一个sql语句,id和name,求表中姓名有重复的人的个数。
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
if (N != 0) {
List<String> uname = new LinkedList<>();
for (int i = 0; i < N; i++) {
String a = in.next();
String ss = in.next();
uname.add(ss);
}
System.out.println(getSql(uname));
} else
System.out.println(0);
}

private static int getSql(List<String> uname) {
int resInt = 0;
Map<String, Integer> res = new HashMap<>();
for (String s : uname) {
if (!res.containsKey(s)) {
res.put(s, 1);
} else
res.put(s, res.get(s) + 1);
}
for (String s : res.keySet()) {
int res1 = res.get(s);
if (res1 != 1) {
resInt++;
}
}
return resInt;
}
}
第二题,迷宫左手法则多少步能走出迷宫。
左手法则:沿着墙壁走,如果左边没墙壁,就往左走,否则看前面有没有墙壁,没有往前走,否则右面有没有墙壁往右走,否则往后走。
#为墙壁,.为路,S为开始位置,E为结束位置。
public class Main {


static Road road;


public static void main(String[] args) {

Scanner in = new Scanner(System.in);

int N = in.nextInt();

for (int i = 0; i < N; i++) {

int L = in.nextInt();

int W = in.nextInt();

char[][] arr = new char[W][L];

int start1 = 0, start2 = 0;

char[] c;

String s;

for (int j = 0; j < W; j++) {

s = in.next();

c = s.toCharArray();

for (int k = 0; k < L; k++) {

arr[j][k] = c[k];

if (arr[j][k] == 'S') {

start1 = j;

start2 = k;

}

}

}

System.out.println(result(arr, start1 ,start2));

}

}


private static int result(char[][] arr, int start1, int start2) {

int i = start1;

int j = start2;

int ans = 0;

if (i == 0) {

road = Road.DOWN ;

} else if (j == 0) {

road = Road.RIGHT ;

} else if (i == arr.length - 1) {

road = Road.UP ;

} else {

road = Road.LEFT ;

}

int[] ij;

while (arr[i][j] != 'E') {

ans++;

if (!wallLeft(i, j, arr)) {

ij = trunLeft(i, j);

} else if (!wallFront (i, j, arr)) {

ij = forward(i, j);

} else if (!wallRight (i, j, arr)) {

ij = trunRight(i, j);

} else {

ij = back(i, j);

}

i = ij[0];

j = ij[1];

}

return ++ans;

}


private static int[] back(int i, int j) {

int[] ij = new int[2];

if (road == Road.UP) {

road = Road.DOWN ;

i++;

} else if (road == Road. DOWN) {

road = Road.UP ;

i--;

} else if (road == Road. LEFT) {

road = Road.RIGHT ;

j++;

} else {

road = Road.LEFT ;

j--;

}

ij[0] = i;

ij[1] = j;

return ij;

}


private static int[] trunRight(int i, int j) {

int[] ij = new int[2];

if (road == Road.UP) {

road = Road.RIGHT ;

j++;

} else if (road == Road. DOWN) {

road = Road.LEFT ;

j--;

} else if (road == Road. LEFT) {

road = Road.UP ;

i--;

} else {

road = Road.DOWN ;

i++;

}

ij[0] = i;

ij[1] = j;

return ij;

}


private static int[] forward(int i, int j) {

int[] ij = new int[2];

if (road == Road.UP) {

i--;

} else if (road == Road. DOWN) {

i++;

} else if (road == Road. LEFT) {

j--;

} else {

j++;

}

ij[0] = i;

ij[1] = j;

return ij;

}


private static int[] trunLeft(int i, int j) {

int[] ij = new int[2];

if (road == Road.UP) {

road = Road.LEFT ;

j--;

} else if (road == Road. DOWN) {

road = Road.RIGHT ;

j++;

} else if (road == Road. LEFT) {

road = Road.DOWN ;

i++;

} else {

road = Road.UP ;

i--;

}

ij[0] = i;

ij[1] = j;

return ij;

}


private static boolean wallRight(int i, int j, char[][] arr) {

if (road == Road.UP) {

return arr[i][j + 1] == '#';

} else if (road == Road. DOWN) {

return arr[i][j - 1] == '#';

} else if (road == Road. RIGHT) {

return arr[i + 1][j] == '#';

} else

return arr[i - 1][j] == '#';

}


private static boolean wallFront(int i, int j, char[][] arr) {

if (road == Road.UP) {

return arr[i - 1][j] == '#';

} else if (road == Road. DOWN) {

return arr[i + 1][j] == '#';

} else if (road == Road. RIGHT) {

return arr[i][j + 1] == '#';

} else

return arr[i][j - 1] == '#';

}


private static boolean wallLeft(int i, int j, char[][] arr) {

if (road == Road.UP) {

return arr[i][j - 1] == '#';

} else if (road == Road. DOWN) {

return arr[i][j + 1] == '#';

} else if (road == Road. RIGHT) {

return arr[i - 1][j] == '#';

} else

return arr[i + 1][j] == '#';

}

}


enum Road {

UP, DOWN ,LEFT, RIGHT;

}

第二题抠细节扣的我脑壳疼,结果没在结束之前扣完,结束十多分钟后才把两个测试用例通过,但我觉得问题不大。
第三题,没时间做。
求中位数,如果得分等于中位数,则得到奖励,否则不得奖励,求有多少个人得到了奖励。

#网易##笔经##Java工程师#
全部评论
谢谢楼主分享😃
1 回复 分享
发布于 2021-04-19 08:52

相关推荐

1.&nbsp;你在学校哪些科目的成绩比较好?有哪些专业课比较突出?2.&nbsp;AI课程主要学了哪些内容?做过什么项目?为什么成绩好?3.&nbsp;CNN和INN这两种神经网络结构有什么区别?CNN的中文名字是什么?原理是什么?如何识别图片中的内容?4.&nbsp;除了CNN,还有哪些主流神经网络?Transformer属于哪类?有什么特点?5.&nbsp;你了解deepseek吗?它的蒸馏是怎么做的?相比传统AI模型有什么优势?如何降低成本?6.&nbsp;你平时怎么规划业余生活?在学校参加过哪些社团或活动?有哪些兴趣爱好?7.&nbsp;你未来三年有哪些职业规划?更倾向于做哪方面的工作?8.&nbsp;你觉得自己在运维方面有哪些性格或能力优势?如何理解“稳定”?什么是on&nbsp;call状态?有相关经历吗?9.&nbsp;能举例说明你遇到紧急问题时的应急处理经历吗?比如数据库崩溃、黑客入侵等,如何排查和恢复?10.&nbsp;你们用的是什么数据库?如何做数据备份和恢复?遇到勒索事件如何应对?11.&nbsp;MySQL多台部署时脑裂现象怎么恢复?有哪些集群部署方式?如何做基础加固和安全防护?12.&nbsp;MySQL配置文件一般写在哪?常见配置项有哪些?13.&nbsp;Linux下/etc/passwd和/etc/shadow的区别是什么?umask的含义是什么?文件和文件夹的最高权限是多少?755权限代表什么?14.&nbsp;你用过SSH吗?原理是什么?有哪些安全风险?如何用SSH代理?15.&nbsp;K8S中kube-proxy的作用是什么?Service的实现原理?ETCD的作用和特点?Pod有哪些调度方式?如何配置污点和亲和性?16.&nbsp;你如何理解交付岗位?日常工作内容有哪些?如何为客户写交付文档?17.&nbsp;你对公司有多少了解?公司主营业务是什么?云计算安全有哪些常见安全问题和隐患?18.&nbsp;云计算相比传统服务器有哪些优势?为什么要发展云服务?底层实现有何不同?虚拟化和云计算的区别?19.&nbsp;你对安全行业有哪些了解?有实际参与过安全项目或漏洞复现吗?对行业事件有何看法?20.&nbsp;在实验室或团队中有协调成员关系的经历吗?遇到哪些困难?如何解决?你觉得当leader最难的地方是什么?21.&nbsp;你为什么选择去上海/北京实习?对城市和岗位有何倾向?有面过哪些其他岗位?22.&nbsp;你对公司规模、团队人数、分公司分布等有了解吗?有想问面试官的问题吗?23.&nbsp;面试官对你的建议和反馈是什么?(如表达结构、亮点、案例总结等)实操相关问题1.&nbsp;数据库被黑客入侵后如何恢复?如何用备份回滚?如何加强数据库安全?2.&nbsp;MySQL如何做端口加固、用户权限分离、跳板机、IP白名单等安全措施?3.&nbsp;Linux权限管理、umask、文件权限设置等基础操作。4.&nbsp;SSH隧道、代理的使用方法和原理。5.&nbsp;K8S相关命令、调度方式、配置文件等基础实操。(注:每轮面试问题顺序可能略有不同,内容仅供参考)评价:神人面试官,我来面运维问我AI架构
查看27道真题和解析
点赞 评论 收藏
分享
评论
3
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务