360笔试3/21
面试内容:思维考察题(C++程序题,Java程序题,数学题)、计网、Linux命令、MySQL、Redis、排序题、Java语言题(Swing GUI工具包、内存优化)、算法
1、思维考察题
1)\log_{2}{x}与x^(2/3)哪一个更高阶?(x^(2/3))
相除取极限,洛必达法则
2、计网
1)软件体系结构中使用http协议进行通信的结构?(B/S结构)
C/S结构:每台客户机全部须要安装相对应的客户端程序,(APP)
B/S结构:只安装维护一个服务器(Server),而客户端选用浏览器(Browse)运行软件,基于统一的应用层协议HTTP来交互数据。(网站)
3、Linux命令
1)centos安装apache
yum install httpd
2)把任务从后台切换到前台
-
命令 + &,&表示让进程在后台运行
-
jobs ,查看后台运行的进程
-
fg %n, 让后台运行的进程n到前台来
-
bg %n, 让进程n到后台去
5. kill %n, 杀死job
PS:"n"为jobs命令查看到的job编号,不是进程编号.
fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的.
3)chgrp, chown, chmod
chgrp: 设置文件所归属的组
chgrp 组名 目标1 [目标2 ...] "组名"是文件即将关联的组。 "目标1 [目标2 ...]"是需要改变组的文件或目录的列表。
chown: 设置文件所有者和文件关联组
chown user file user : 新的文件拥有者的使用者 ID file: 文件
chmod: 设置用户对文件的权限
chmod mode file chmod 777 file1.txt(777:Owner,Group,Other Users对该文件的权限都是7——可读可写可执行)
4、MySQL
1)游标的结果集是由执行什么语句产生的?(SELECT)
5、 Redis
1)Redis存储对象使用什么结构?(hash)
6、排序题
1)稳定排序中,空间复杂度为O(1)的排序(直接插入排序)
7、Java语言题
1)Java性能优化的方法:
a. 尽量确定StringBuffer的容量
StringBuffer 的`构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再 丢弃旧的数组。在大多数情况下,你可以在创建 StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。
b. 尽量在合适的场合使用单例
使用场景: 1.控制资源的使用,通过线程同步来控制资源的并发访问; 2.控制实例的产生,以达到节约资源的目的; 3.控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。
单例模式讲解:单例模式 | 菜鸟教程
c. 尽量避免随意使用静态变量
d. 尽量避免过多过常的创建Java对象
e. 慎用synchronized,尽量减小synchronize的方法
f. 尽量使用StringBuilder和StringBuffer进行字符串连接
g. 单线程应尽量使用HashMap、ArrayList
h. 尽量在finally块中释放资源
i. 尽量使用移位来代替'a/b'的操作
如 int num = a * 4; int num = a * 8; 应该改为 int num = a << 2; int num = a << 3;
2)透明模式
结构: (1)Component(抽象构件):
可以是接口或抽象类,为叶子构件及容器构件提供共有行为的声明。抽象构件中定义了访问及管理它的子构件的方法,如:新增、删除、获取子构件。
(2)Leaf(叶子构件):
实现抽象构件中定义的行为。无子节点。
(3)Composite(容器构件):实现抽象构件中定义的行为,包括那些访问及管理子构件的方法。容器节点包含子节点,可以是子节点,也可以是容器节点。
透明模式是把组合使用的方法放到抽象类中,不管叶子对象还是树枝对象都有相同的结构,这样做的好处就是叶子节点和树枝节点对于外界没有区别,它们具备完全一致的行为接口。但因为Leaf类本身不具备add()、remove()方法的功能,所以实现它是没有意义的。
8、算法
1)Hash匹配算法的时间复杂度是多少?(D(n-m),其中n是原串str的长度,m是模式串model的长度)
简单理解:Hash字符串匹配_Elltor的博客-CSDN博客_哈希匹配
深度理解:字符串哈希 - OI Wiki
个人理解:
一般计算Hash的方法:
假设要计算"xyz"这个字符串的Hash值,那就是计算 xb^2+yb+b
因此匹配过程就是计算出模式串的Hash值,然后依次计算原串str[0:m]、str[1:m+1]、...str[n-m:n]的Hash值(计算一次Hash值算作O(1))。
因此时间复杂度是O(n-m)