知识整理,面经汇总杂谈(后端,开发,研发,算法岗)

1、进程通信方式:简单来说就是 管道、信号、信号量、队列、套接字、共享内存

2、linux命令相关:ps 查看进程: 杀死进程 kil -9(强制终止) 可以接进程pid或者进程名字
更改文件/文件夹拥有者:chown:-f 无法更改不显示错误信息
-R递归更改文件夹内所有
-v显示拥有者更改详细信息
-c确认更改时才显示更改动作
-h只对连接进行变更

chmod 修改权限:r w x对应4 2 1 其他的你懂不说了

touch 修改文件日期,文件本身不做变动

ln 建立连接文件 -s建立符号链接(又称软连接)不加则默认创建硬链接(详细看下边解释)

date 显示日期 cal 显示日历 id显示用户标识 users显示当前用户
head 显示文件头几行 tail显示文件尾几行 who显示都谁登录到机器

find寻找文件:-name -user -size 按名字,用户,大小查找
-perm 按权限 -type按类型 -atime按最后修改时间
grep搜索文件中匹配符:-i忽略大小写
wc统计文件字数:-l -w -c分别为统计行数,单词,字符数

df显示磁盘空间:-a全部使用情况   -t显示某个档案系统的所有分割区大小  -T显示每个分割区所属的档案系统名称  -i显示nodes的使用量  -h按GB、MB易读形式显示

du:档案或目录的使用空间:-a显示全部目录和其次目录下的每个档案所占的磁盘空间
-s:只显示各档案大小的总合
-x:只计算同属同一个档案系统的档案
-L:计算所有的档案大小
-h: 表示档案系统大小使用 GB、MB 等易读的格式。
ifconfig查看自己id  netstart查看路由表  telnet远程登录ftp 文件传输  mailx查看自己邮箱  history回忆命令
都常用的就这吧

3、软硬连接区别:软连接相当于创建一个指向源文件/目录的文件,删除创建的软连接不会删除源文件,在软连接做的除删除操作外系统都会自动转变为对原文件的操作。就相当于window里的快捷方式。
硬链接相当于创建一个原文件的镜像,和源文件大小相同,删除硬链接(删除后连接为0时)源文件也会同时删除,文件夹不允许创建硬链接,只有在同一文件系统中的文件之间才能创建硬链接。删除源文件的话如果还有相应的硬链接存在源文件不会被删除。

4、进程,线程区别:线程属于进程,进程拥有空间地址,线程共享进程的空间地址,进程互相独立一个进程结束或者死掉不会影响其他进程,而一个线程结束则整个进程死掉。当一个进程结束时其下的所有线程结束。
一个程序至少一个进程,一个进程至少一个线程。
线程并发性高,不利于资源管理,执行开销小,进程开销大,利与资源管理。
切换进程开销大,切换线程开销小。
每个独立的线程有程序入口,顺序执行序列,程序出口,但不能独立执行,必须依存于程序
线程是进程的一个实体,线程是cpu调度和分派的基本单位。

5、大量数据访问服务器时的优化:
服务器多可以负载均衡;
其他的就可以:批处理,将大量数据分批处理。
使用缓存。
数据库优化:表结构优化,索引优化,分表以便于更小的范围查找,sql语句处理逻辑优化,分区。
分离数据库中活跃数据。
批量读取和修改延迟。
读写分离,一般采用主从实现,在主服务器修改删除数据,从服务器读取数据。
分布式部署服务器,将多个表放置于多个数据库中,然后再放到不同的服务器中,查询时多个服务器同时工作提高效率。
使用搜索引擎搜索数据库中的数据。
网站的话还可以页面静态话

6、ospf的七个状态:down(失效)、init(初始化)、2-way(双向通信)、exstart(信息交换初始化)、exchange(信息交换)、loading(信息加载)、full(完全邻接)。

7、spring设计模式:工厂、单例模式、适配器、包装器、代理、观察者、策略。
8、final修饰类不能被继承,修饰方法能被重载不能被重写
9、hashMap和ConcurrentHashMap的区别:hashMap不是线程安全的,ConcurrentHashMap是线程安全的。ConcurrentHashMap引入了分段锁的概念,把一个大的Map拆成多个hashTable,然后计算key的hashCode确定它在哪个hashTable中。
10、jvm介绍:jvm是一个虚拟出来的计算机,java编译程序只需生成在java虚拟机上运行的字节码,这使得java能够一次编译到处运行。

jvm的垃圾收集通过引用计数、可达性分析来判断对象是否存活,垃圾回收算法有基础的标记回收算法,先标记出所有的回收对象,标记完成后统一回收所有被标记的对象。复制算法,将可用内存按容量分为大小相等的两块,每次只使用一块,用完后将可用对象复制到另一块然后清理已使用的内存空间。标记压缩算法,标记方法和标记回收算法一样,标记后将所有可用对象向一端移动然后一次性清理端边界以外的内存。分代收集算法,对新生代采用复制算法,老年代使用标记清理或标记压缩算法。用垃圾收集器具体实现垃圾回收。

jvm内存结构由堆、栈、本地方法栈、方法区等组成。堆是jvm所管理内存中最大的一块;几乎所有的对象实例都在这里分配内存,堆是垃圾收集器管理的主要区域,分为老年代和新生代。方法区和堆一样是线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。jvm栈是线程私有的,他的生命周期与线程相同。本地方法栈为虚拟机使用到的native方法服务。

jvm类的加载:类的加载指的是将类的.class文件中的二进制数据读入内存,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.class对象,用来封装类在方法区内的数据结构。并提供访问方法区中数据结构的接口。
三个差不多了。
11、数组和链表的区别:在内存中数组是连续的存储区域,链表则不要求连续。
数组需要预留空间,使用前要先申请占用内存的大小,链表则为每个数据都保留了下一个数据的地址。
数组插入、删除效率低需要后移,链表增加和删除数据很容易。
数组随机读取效率很高,链表不宜于查找数据。
数组不易于扩展,链表方便扩展。

先这样吧,剩的接着总结。

专业面试我的技巧和经验: 一、 巧妇难为无米之炊,事前做一些功课是必须的,把自己学习过的和应聘位相关的内容复习下,比如性能与算法位:本科电子信息工程和通信工程这些课程肯定学过,通信原理,信息论和编码,信号与系统,数字信号处理,复习一下掌握大概的轮廓一个星期应该差不多可以搞定. 二、 善于引导面试官,比如当面试官问到什么问题不懂的时候,避免连问几个都不懂,可以尝试这么说:我***方面的知识比较匮乏,不是很了解,但是我对***的知识还是比较熟习,我觉得***的知识在我们华为性能与算法工程师必须要掌握的吧。以我面试为例,面试问我3G和4G的关键技术,已经这些关键技术的基本原理,我是做雷达信号处理的,确实不懂。我就和面试官说:对不起,因为研究生期间主要做的雷达信号处理的工作,我对移动通信的知识了解甚少,但是我对移动通信的基础只是比如通信原理和调制解调技术还有一定的了解(当然这都是我事先复习好的),我觉得无论什么类型的通信技术都离不开这些基本的理论。接着面试官就让我说信源编码和信道编码的作用已经他们通常采用的方法,当然我也就能对答如流了。所以,引导很重要。 三、 专业面试对自己简历上不要为了蒙骗面试官,写的项目自己捡不熟悉,对简历上的东西一问三不知,语言表达不清楚,说不半天不能告诉面试官你做的工作内容和意义,这个很不好。 群面 一般10-14个人,看当天应聘的人数而定,分2组,一个话题,让排序之类的,或者辩论之类的,不同的组会抽到不同的问题,不同的地方也会有不同的问题,在这里把问题说出来没什么意义,这一轮会有很多意想不到的情况,比如这组我本来不是选为组长,但是在做总结的时候面试官让我做总结,或者突然问你刚才某某同学说的话你同意吗,或者突然说你今天脸色好像不好看之类的,所以灵机应变才是王道。群面一般要自我介绍,自我介绍要简短,不要说太多,我建议按以下几个方面说,自己学校专业、来自哪里、然后说自己学习,主要稍微说下自己的项目,说下名字就OK了,然后说自己做项目获得成果,比如发表文章,专利和之类的。然后说自己优点和缺点,一般情况下优点缺点都要说,而且我觉得最好优点缺点自己多准备几个,免得到时候你要说的前面的人都说了,就像我们这组:我开始说缺点的时候说我性格比较急,做什么事情都想快点做完,午觉也不睡,但是经常适得其反,中午不谁觉,下午就工作效率低。后面好几个同学说的时候都这么说了,惹的面试官说,你们重复一个东西说。说缺点的时候大家要慎重,不要说和自己工作相关的缺点,比如我们那个组一个同学说:我的缺点就是比较随性,重要场合经常穿拖鞋为此挨了不少批评。 面试官:。。。。(前面省略了一些),你这种随行的行为有同学提醒过你吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值