我是靠谱客的博主 爱听歌夏天,最近开发中收集的这篇文章主要介绍个人面试题——整理笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

题 1:L1 和 L2 的区别

简单总结一下就是:

题 2:过拟合问题是如何产生的

题 3:二分查找的基本思想

题 5:决策树算法有哪些

题 6:降维的方法

题 7:Linux 里面查看文件有哪些命令

题 8:PCA 是什么?实现过程是什么,意义是什么?

9.抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。

10.讲讲你理解的 nio和 bio 的区别是啥,谈谈 reactor 模型。

11、CyclicBarrier 和 CountDownLatch 的区别

13、synchronized 的作用?


题 1:L1 和 L2 的区别

L1范数(L1 norm)是指向量中各个元素绝对值之和。比如 向量A=[1,-1,3], 那么A的L1范数为 |1|+|-1|+|3|

简单总结一下就是:

  • L1范数: 为x向量各个元素绝对值之和
  • L2范数: 为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或Frobenius范数
  • Lp范数: 为x向量各个元素绝对值p次方和的1/p次方

在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便人类提取特征。

  • L1范数可以使权值稀疏,方便特征提取。
  • L2范数可以防止过拟合,提升模型的泛化能力。

题 2:过拟合问题是如何产生的

过拟合的原因是:

  • 数据量太小
  • 模型复杂度太大
  • 数据质量很差
  • 过度训练

处理方法:

  1. 早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练
  2. 数据集扩增:原有数据增加、原有数据加随机噪声、重采样
  3. 正则化,正则化可以限制模型的复杂度
  4. 交叉验证
  5. 特征选择/特征降维
  6. 创建一个验证集是最基本的防止过拟合的方法。我们最终训练得到的模型目标是要在验证集上面有好的表现,而不是训练集

题 3:二分查找的基本思想

「二分查找」的思想在我们的生活和工作中很常见,「二分查找」通过不断缩小搜索区间的范围,直到找到目标元素或者没有找到目标元素。

题 4:如何解决推荐系统冷启动问题

  1. 提供非个性化的推荐
    最简单的例子就是热门排行榜,我们可以给用户推荐热门排行榜,然后等到用户数据收集到一定的时候,再切换为个性化推荐。
  2. 利用用户注册信息
    用户注册时提供包括用户的年龄、性别、职业、民族、学历和居住地等数据,做粗粒度的个性化。有一些网站还会让用户用文字描述他们的兴趣。
  3. 利用社交网络信息
    引导用户通过社交网络账号登录(需要用户授权),导入用户在社交网站上的好友信息,然后给用户推荐其好友喜欢的物品。

题 5:决策树算法有哪些

ID3、C4.5、CART 树的算法思想

ID3 算法的核心是在决策树的每个节点上应用信息增益准则选择特征,递归地构架决策树。
C4.5 算法的核心是在生成过程中用信息增益比来选择特征。
CART 树算法的核心是在生成过程用基尼指数来选择特征。
基于决策树的算法有随机森林、GBDT、Xgboost 等。

题 6:降维的方法

随机森林(Random Forest)
反向特征消除(Backward Feature Elimination)
前向特征选择(Forward Feature Selection)
因子分析(Factor Analysis)
主成分分析(PCA)

题 7:Linux 里面查看文件有哪些命令

Linux 查看日志文件内容命令有:

cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

题 8:PCA 是什么?实现过程是什么,意义是什么?

主成分分析 (PCA, principal component analysis)是一种数学降维方法, 利用正交变换 (orthogonal transformation)把一系列可能线性相关的变量转换为一组线性不相关的新变量,也称为主成分,从而利用新变量在更小的维度下展示数据的特征。

实现过程:
一种是基于特征值分解协方差矩阵实现PCA算法,一种是基于SVD分解协方差矩阵实现PCA算法。

意义:
使得数据集更易使用;降低算法的计算开销;去除噪声;使得结果容易理解。

9.抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。


1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承,接口要被类实现。
3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现
4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6、抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。
7、抽象类里可以没有抽象方法
8、如果一个类里有抽象方法,那么这个类只能是抽象类
9、抽象方法要被实现,所以不能是静态的,也不能是私有的。
10、接口可继承接口,并可多继承接口,但类只能单根继承


10.讲讲你理解的 nio和 bio 的区别是啥,谈谈 reactor 模型。


IO(BIO)是面向流的,NIO是面向缓冲区的
BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。
 

11、CyclicBarrier 和 CountDownLatch 的区别


(1) CountDownLatch 简单的说就是一个线程等待,直到他所等待的其他线程都执行完成并且调用 countDown()方法发出通知后,当前线程才可以继续执行。

(2) cyclicBarrier 是所有线程都进行等待,直到所有线程都准备好进入 await()方法之后, 所有线程同时开始执行!

(3) CountDownLatch 的计数器只能使用一次。而 CyclicBarrier 的计数器可以使用 reset() 方法重置。所以 CyclicBarrier 能处理更为复杂的业务场景,比如如果计算发生错误,可以重置计数器,并让线程们重新执行一次。

( 4 ) CyclicBarrier 还提供其他有用的方法, 比如 getNumberWaiting 方法可以获得CyclicBarrier 阻塞的线程数量。isBroken 方法用来知道阻塞的线程是否被中断。如果被中断返回 true,否则返回 false。

13、synchronized 的作用?


在 Java 中,synchronized 关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized 代码段不被多个线程同时执行。synchronized 既可以加在一段代码上,也可以加在方法上。
 

最后

以上就是爱听歌夏天为你收集整理的个人面试题——整理笔记的全部内容,希望文章能够帮你解决个人面试题——整理笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部