面试--京东数科面试
自我介绍
将觉得自己有收获的项目简单介绍一下
为什么选择做这个项目,就是将2展开说
介绍一下java中集合,找一个深入介绍一下
对框架了解多少,说一下项目中怎么应用的
对分布式锁了解多少,介绍synchronized和volatile等,和redis分布式锁
对arraylist了解多少,说一下底层和扩容
时间过得太久了,不太记得其他的了,由于是日常实习没有问算法题目
已拿到offer
面试--华为BG消费者一面(2020年5月11日已挂)
自我介绍
之前在公司做什么,简单说一下
问笔试题有想过怎么做吗,说了第二题要用栈而不是滑动窗口。
手撸代码,leetcode第五题,回文子串:我暴力求解了,面试官说不行,叫给个提示,他说动态规划,先判断前面一个子串是不是回文,如果是,添加一个字符,再判断是不是回文,我就问他,12不是回文,但是121是回文,这种怎么算,他拿着他自己写的代码看了十几分钟就没解释清楚。(这个解释了半个多小时)
平衡二叉树是什么
java中被final修饰的类
软件工程的生命周期
单例模式的实现
单例模式的优化,加synchronized修饰
然后说问题答得还行,但是代码能力有点欠缺,这个暴力求解不算过关,回去再准备准备吧,要不然这边每次都有考核即使这次过了,后面考核也过不了,先回去加强一下,后面再来,,,,,ಠ_ಠ啥都不是,感觉这个bg部门人招满了,就不想要人。
总面试时间一小时二十分钟,代码不符合要求
面试--字节一面(2020年4月29日已挂)
自我介绍
根据简历里面写的项目提问
之前在公司做什么,具体说一下
我的项目里面有数据连接的东西
架构是什么:没有
具体实现流程是什么:
知道sql注入吗
怎么防止sql注入: 懵逼,一直问
用过数据库连接池吗
写一个正则判断,身份证的
为什么要筛数据:也不知道问的到底是啥
还有什么项目
说一下static关键字
exe和class的区别
关于hadoop
说一下wordcount实现过程
了解shuffle吗
为什么要shuffle:不知道
linux了解多少
拷贝命令:cp
打包命令:tar
授权命令:chmod
了解类加载机制吗,说一下
进程和线程区别
说一下了解的进程调度算法:一时没想起来,说了fcfi,lru
TCP四层,说一下:说了一个网络层,应用层,结果还是错的::::网络接口层,网际层,运输层,应用层,
java程序运行起来是进程还是线程
==与equals的区别
java中是什么传递String a =”a”,function(a),print(a)function中将a改成b了,那么打印的是a还是b,:值传递,打印的是a
接19,数组可不可以:可以,给他解释 ...
markdown语法
1. 标题#标题 ———— 一级标题
##标题 ———— 二级标题
###标题 ———— 三级标题
####标题 ———— 四级标题
#####标题 ———— 五级标题
######标题 ———— 六级标题
2. 字体*文字* ———— 斜体
**文字** ———— 粗体
***文字*** ———— 粗斜体
~~文字~~ ———— 删除线
3. 列表-文字1
-文字2 ———— 无序列表(“+”也可以,列表嵌套,在上一级和下一级之间敲三个空格即可)
1. 文字1
2. 文字2 ———— 有序列表(数字.后面需要加一个backspace)
4. 链接[显示文本](链接地址) ———— 文字链接(括号中地址支持网络地址)
![文本](图片链接地址) ———— 图片链接(文本域可空)
5. 引用> 文本 ———— 引用(可以无限叠加)
'''
代码段
''' ———— 代码块引用
' 代码 ' ———— 单行代码引用
6. 分隔***或--- ———— 表示分割线
7. 表格表头|表头|表头
---|: ...
git常用命令介绍
1. 安装好git需要做的事情$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
其他参数
–local:只对某个仓库有效
–global:对当前用户的所有仓库有效
–system:对系统登录的所有用户有效
2. 初始化创建版本库$ git init
在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.repo文件夹下新建readme.txt作为下一 ...
设计模式--单例模式
设计模式–单例模式要搞清楚以下几个问题?
为什么要使用单例
单例存在哪些问题
单例与静态类的区别
有何替代的解决方案
什么是单例模式单例设计模式:一个类只允许创建一个对象(实例),那这个类就是一个单例类,这种设计模式就是单例设计模式。
。。。。
实例1:避免i资源访问冲突
将对象级别的锁换成类级别的锁就行,让所有的对象都共享一把锁。这样就避免了不同对象之间同时调用log()函数,而导致的日志覆盖问题
单例模式的解决思路就简单一些了。单例模式相对于之前类级别锁的好处是,不用创建那么多Logger对象,一方面节省内存空间,另一方面节省系统文件句柄(对于OS来说,文件句柄也是一种资源,不能随便浪费)
我们将Logger设计成一个单例类,程序中只允许创建一个Logger对象,所有的线程共享使用这一个Logger对象,共享一个FileWriter对象,而FileWriter本身是对象级别线程安全的,也就避免了多线程情况下写日志会相互覆盖的问题。
1234567891011public class Logger{ private FileWriter writer; pr ...
设计模式--(Builder)建造者模式
设计模式–建造者模式建造者模式定义:
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示
建造者模式包括的角色:
Builder:给出一个抽象接口或抽象类,以规范产品的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建,一般由子类具体实现。
ConcreteBuilder:Builder接口的实现类,并返回组建好对象实例
Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建
Product:要创建的复杂对象,产品类
建造者模式的使用场景:
当产品由复杂的内部构造时(参数很多)
需要生产的产品的属性相互依赖,这些属性的赋值顺序比较重要时(因为在调用ConcreteBuilder的赋值方法时是有先后顺序的)
举例:组装一台电脑
产品类:假设一个computer类有三个部件:cpu,主板以及内存
1234567891011121314public class Computer{ private String mCpu; private Str ...
数据库--一条SQL语句执行过程
本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。
在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成以及这些组件的作用是什么,可以帮助我们理解和解决这些问题。
一 MySQL 基础架构分析1.1 MySQL 基本架构概览下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。
先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图
连接器: 身份认证和权限相关(登录 MySQL 的时候)。
查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。
分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你的 SQL 语句要干嘛,再检查你的 SQL 语句语法是否正确。
优化器: 按照 MySQL 认为最优的方案去执行。
执行器: 执行语句,然后从存储引擎返回数据。
简单来说 MySQL 主要分为 Serve ...
数据库--Redis
数据库–Redis概念Redis是一款高性能Nosql非关系型数据库
数据之间没有关联关系
数据存储在内存中(不是硬盘文件中)
一般将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据
目前Redis支持的键值数据类型如下:
字符串类型string
存储:set key value
获取:get key
删除:del key
哈希类型hash
存储:hset key field value
获取:
hset key field获取指定的field对应的值
hgetall key:获取所有的field和value
删除:hdel key field
列表类型list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
添加
lpush key value :将元素加入列表左边
rpush key value:将元素加入列表右边
获取:lrange key start end:范围获取
删除:
lpop key:删除列表最左边的元素,并将元素返回
rpop key:删除列表最右边的元素,并将元素返回
集合类型set:不允许重复元素, ...
数据库--范式(原创)
本篇博文介绍1NF,2NF,3NF以及BCNF
1NF2NF3NFBCNF