趋势科技是一家做网络的公司,所以对于Linux、网络、C++比较重视。Java倒是没怎么问:
一面
- 论坛项目的登录功能是怎么实现的?用Github的什么第三方登录协议?(OAuth)
- Linux上部署项目用的什么指令?
- 怎么查看日志文件中某个时间段内的日志?
sed -n ‘/起始时间/,/结束时间/p’ 日志文件
grep ‘时间’ 日志文件
- 讲一下http协议。
- 服务端怎么获取客户端的浏览器类型?
在Spring中,对request调用方法:String header = request.getHeader("User-Agent");
即可。 - https中,客户端是如何判断服务端证书的合法性的?怎么防止中途证书的公钥被替换。
- 验证一:该证书是否有效。判断是否是信任根证书颁发的,是否过了有效期;
- 验证二:对方是不是这个证书的合法持有者。思路是判断对方持有的私钥是否正确,可以用数字签名来实现。
- traceroute 用的什么协议?
使用ICMP协议,traceroute命令能够遍历到数据包传输路径上的所有路由器。 - 压缩的原理是什么,什么样的文件能被压缩?
原理就是用新的编码方式代替旧的编码方式.。 比如将大段重复的二进制,转化为另一种编码形式。
文本文件的压缩率高,图片视频压缩和没压缩一样。。。 - SQL注入是什么攻击,项目中是怎么防止的?
SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。
在MyBatis中,#{}
将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,可以防止sql注入。${}
将传入的数据直接显示生成在sql中,不能防止sql注入。但是在涉及到动态表名和列名时,只能用$,就必须要手动做好过滤。 - 怎么防止缓存穿透?
- 以后最想发展哪些方面的能力。
- 代码题:如何不用第三个变量实现两个数的交换?
假设两个数在一个数轴上就很好理解了:
a = b - a;
b = b - a;
a = a + b;
二面
- 说说使用Spring Boot的感受
- 在Web项目中怎么判断用户的权限。
- java中集合类有哪些?
- TreeMap是怎么实现的,二叉搜索树有哪几种
- Java中的多态是用什么来实现的。好处是什么
java中的多态分为编译时多态、运行时多态。重载属于编译时多态,而运行时多态是指运行时才能确定要调用哪一个方法。Java中可以通过子类继承父类、类实现接口来实现多态。多态可以更好的对设计和架构的复用,针对接口编程,而不是针对实现编程。 - Java中保证并发安全的方式。
- 代码题:打印一棵二叉树的最长路径(某节点到另一节点)