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)把任务从后台切换到前台

  1. 命令 + &,&表示让进程在后台运行

  2. jobs ,查看后台运行的进程

  3. fg %n, 让后台运行的进程n到前台来

  4. 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——可读可写可执行)

Linux chmod 命令 | 菜鸟教程

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)

全部评论

相关推荐

有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务