SmartX面经
我记不太到了,按着记忆写一写
一面
一面非常友好,聊了1h,问的东西都很基础,算法讲思路然后发邮件
进程线程区别:资源 调度 大小 开销 通信 亲缘
进程通信,共享内存实现方式,线程通信
输入baidu.com网络层面会发生什么
http请求格式 tcp协议作用和意义 ip协议作用和意义
哈希实现,哈希冲突,设计实现用一个len=1000的数组存一个1000个人名,说一下流程,怎么解决哈希碰撞:加标志位
堆排流程,稳定性
算法题:字符串的四则运算,限定了格式,所以很简单
二面
二面问了半小时emmmm感觉我答得不是很全面
平时用过哪些linux系统?ubuntu怎么配静态网关?老实回答我没配过,但可以用ip命令配置,真正要配可以ip -h看下帮助orz
我写了个代码文件,要怎么看文件大小?du -h和ls -sh都可以看
项目数据的大小,用了数据库吗?用过什么数据库?mysql和mongodb
两个数据库有什么区别,项目中如何选择?我说我当时不care哪种数据库
本科数据库上了哪些东西:数据库的意义和历史,关系模型,编程,事务与锁,NOSQL
讲下ACID里的I:隔离性
数据库事务的隔离级别:我回答的是解决脏读,解决幻读,可重复读,可串行化(严谨应该说,读取未提交,读取已提交,可重复度,可串行化)
读未提交,其隔离级别最低,允许脏读。换句话说就是,如果一个事务正在处理某一数据,并对其进行了更新,但是同时没有提交事务,允许另一个事务也可以访问
读已提交,和读未提交的区别就是。读未提交可以读取到别人没有提交的数据,但是读已提交只能读取到别人提交后的值,事务进行的中间值不会读取到
可重复读,简单来说就是事务处理过程中多次读取同一个数据的时候,这个值不会发生改变,其值都和第一次查询到的数据是一致的
可串行化,是最严格的隔离级别,他要求所有的事务都被串行执行,既事务只能一个接一个的进行处理,不能并发执行
mysql的数据库引擎,我回的是InnoDB(因为我只知道这个orz)问这是数据库的默认引擎吗?我只能硬着头皮说我只见过这个,那大概率是的。(实际上确实Innodb是mysql默认引擎,但除了这个还有MyISAM存储引擎,MEMORY存储引擎,Archive存储引擎)
如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive
算法题:
-
实现统计一篇英文文章内每个单词的出现频率,并返回出现频率最高的前10个单词及其出现次数
-
1 - N 中,求数字 x ( 0-9 中的一个数值) 出现的次数。 如果一个数字中,x出现多次就计算为多次。 比如 1-2593, 求数字5出现的次数,其中 555 是在这个范围内的,这个数字里 5 算出现了3次。 要求代码的算法复杂度尽可能的低。
-
全部评论
(2) 回帖