面经经验好东西

1.volatile影响可读性吗
不影响,防止编译器对代码进行优化
某个属性被多个线程共享,其中有一个线程修改了此属性,其他线程可以立即得到修改后的值;或者作为状态变量,如 flag = ture,实现轻量级同步
volatile 属性的读写操作都是无锁的,它不能替代 synchronized,因为它没有提供原子性和互斥性。因为无锁,不需要花费时间在获取锁和释放锁上,所以说它是低成本的
volatile 只能作用于属性,我们用 volatile 修饰属性,这样编译器就不会对这个属性做指令重排序。
volatile 提供了可见性,任何一个线程对其的修改将立马对其他线程可见。

2.hashmap怎么会变慢,怎么解决?
hashmap 底层是数组和链表组合,当hashcode都等于0时存放的数据都放在第一个位置的链表上,那么hashmap结构的好处没有用出来,造成速度变慢,
解决他用
利用hashmap的entryset内部类的迭代器去处理map里面的值

Map map = new HashMap();

Iterator iter = map.entrySet().iterator();

while (iter.hasNext()) {

Map.Entry entry = (Map.Entry) iter.next();

Object key = entry.getKey();

Object val = entry.getValue();

}

3.innodb支持全文索引吗?
最近看到不少网友喷一些文章,提到mysql的innodb不支持全文索引是错的。事实是,不完全对。

原因是innodb 从1.2.x 开始才增加了全文索引支持。而MySQL5.6版本中innodb的版本才升级到 1.2.x。

所以,mysql5.5版本的innodb不支持全文索引

4.编写NIO启动程序
mSelector = Selector.open();
mSSC = ServerSocketChannel.open();
mSSC.configureBlocking(false);
mKey = mSSC.register(mSelector,0);
mSSC.socket.bind(addr);
mKey.intersetOps(OP_ACCEPT);

表结构
Student(sid,sname,sage,sex)
SC(sid,cid,score)
Course(cid,cname,T#)
Teacher(tid,tname)

1.找出课程编号“001”比“002”高分的学生的学号,姓名。
select a.sid,a.sname from score a ,score b where a.sid=b.sid and a.cid=‘001’ and b.cid=‘002’ and a.score>b.score
2.select sid,avg(score) avgScore from sc group by sid having avg(score)>60;

3.select sc.sid,s.sname,count(sc.cid) cidNum,sum(sc.score) scoreSum from sc join student s on sc.sid=s.stid group by sc.sid;

4.找出没有选修“叶凡”老师课程的学生的学号和姓名
select s.sid,s.sname from s join sc on s.sno = sc.sno where sc.cno not in (select c.cno from c join sc on c.cno = sc.cno and cteacher =‘叶凡’);
select tid from t where tname=“叶凡”;
select cid from c where tid =();
select distinct sid from sc where cid =();
select sid,sname from s where sid not in ();

select c.cno from c join sc on c.cno = sc.cno and cteacher =‘叶凡’;
select * from s left join sc on s.sno=sc.sno;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值